Baixe o app para aproveitar ainda mais
Prévia do material em texto
Tecnologia e Computação – Campus Canoas Área: Curso: Disciplina: Cursos de Computação Arquitetura e Organização I Edemar Costa Oliveira Professor : Verificação: Aula Nº: 1 G1 G2 Trabalho Tradução do capítulo 14 de "A Balanced Introduction to Computer Science and Programming" de David Reed, Creighton University, Prentice Hall Dentro do Computador - A arquitetura de von Neumann Parte II - Parte Operativa com simulador de memória Apesar da Parte Operativa da CPU descrever como um computador executa computações sobre dados armazenados em registradores, nós ainda não explicamos como os dados entram nos registradores e como os resultados das operações da ULA são acessados fora da CPU. Estas duas tarefas envolvem conexões entre a CPU e a memória principal. Como visto no capítulo 1, todos os programas e dados ativos estão armazenados na memória principal de um computador. Nós podemos pensar da memória principal como uma grande coleção de posições de memória, na qual cada posição é acessível através de um endereço. De mesma maneira que os endereços de uma rua (por exemplo, Tristão monteiro, 590) permitem um carteiro encontrar um destinatário, um endereço de memória (por exemplo, posição de memória 31) permite a CPU encontrar e acessar um pedaço específico da memória principal. Um barramento conecta a memória principal com a CPU, permitindo ao computador copiar dados e instruções em registradores e então copiar os resultados das computações de volta para a memória principal. A figura 14.6 ilustra a interação entre a memória principal de um computador e a CPU; as setas escuras representam o fluxo de dados da parte operativa da CPU, enquanto as setas mais claras representam o barramento que conecta a memória principal aos registradores. Figura 14.6: Um barramento conecta a memória principal à CPU Transferindo dados para e a partir da memória principal Enquanto um programa está sendo executado, a Unidade de Controle processa as instruções do programa e identifica que valores de dados serão necessários para realizar as tarefas especificadas. Os valores desejados são então buscados a partir da memória principal através do barramento da memória principal, carregados em registradores e utilizados pelas operações da ULA. Tecnologia e Computação – Campus Canoas Área: Curso: Disciplina: Cursos de Computação Arquitetura e Organização I Edemar Costa Oliveira Professor : Verificação: Aula Nº: 1 G1 G2 Trabalho Como um exemplo concreto, imagine que você tem um arquivo contendo 1.000 números e precisa computar a soma destes números. O arquivo pode ser carregado na memória principal - por exemplo, nas posições de memória 500 até 1499. Então, a Unidade de Controle pode realizar os seguintes passos para somar estes números e armazenar a soma resultante de volta na memória. 1. Inicializar um dos registradores, por exemplo R0, com o valor 0. Este registrador irá armazenar a soma total dos números. 2. Para cada número armazenado nos endereços de memória de 500 até 1499: a. Copiar o número da memória principal para outro registrador, por exemplo R1. b. Executar um ciclo através da parte operativa da CPU para somar R0 e R1 e armazenar o resultado de volta em R0. 3. Quando todos os valores dos números no arquivo tiverem sido processados, o valor em R0 terá a soma total. Este valor pode então ser copiado de volta para uma posição na memória principal. Note que cada número deve ser transferido em um registrador antes que ele possa ser acrescentado à soma total. Na prática, transferir dados entre a memória principal e a CPU ocorre em uma velocidade bem menor do que a de um ciclo de CPU. Isto é principalmente devido ao fato de que os sinais elétricos devem viajar por uma grande distância - por exemplo, a partir de um chip de RAM separado para o chip da CPU. No tempo que leva para os dados trafegarem pelo barramento da memória principal e alcançar os registradores, vários ciclos de CPU pode ocorrer. Os processadores modernos compensam este atraso com hardware especial que permite que várias instruções sejam buscadas ao mesmo tempo. Ao buscar várias instruções de antemão, o processador pode começar a lidar com uma próxima instrução e executar computações úteis enquanto uma transferência de dados anterior está ainda em andamento. Parte Operativa com simulador de memória Para ajudar a visualizar as relações entre a CPU e a memória principal, o simulador da parte operativa da CPU foi acrescido com uma memória principal. Este simulador estendido (K_S/KandS/dpandmem.html) inclui uma memória principal que pode armazenar até 32 números, com endereços entre 0 e 31. Um novo barramento, rotulado Barramento da Memória Principal, conecta a memória principal com a CPU; este barramento permite que dados sejam copiados da memória principal para os registradores, bem como permite que os resultados da ULA possam ser armazenados na memória principal. Como no exemplo anterior, esta versão do simulador não possui uma Unidade Figura 14.7: Primeiro, 43 é carregado a partir da memória em R0. Tecnologia e Computação – Campus Canoas Área: Curso: Disciplina: Cursos de Computação Arquitetura e Organização I Edemar Costa Oliveira Professor : Verificação: Aula Nº: 1 G1 G2 Trabalho de Controle explícita. O usuário deve trabalhar como se fosse a Unidade de Controle, selecionando os ajustes desejados no barramento da memória principal para controlar o fluxo de dados. As figuras 14.7 até 14.9 demonstram o uso do simulador para somar dois números armazenados na memória. Quando a CPU deve somar dois números armazenados na memória, o primeiro passo é copiar um dos números para um registrador. Na figura 14.7, o usuário selecionou o primeiro número a ser somado, naquele momento na posição de memória 0, clicando no botão R/W próximo àquela posição (R/W se refere ao fato de que o botão seleciona que posição da memória será lida (Read) ou escrita (Written). O usuário também configurou as setas em torno do barramento da memória principal para que elas conectem a memória principal aos registradores. Note que este barramento pode mover dados entre a memória principal e os registradores ou a partir da ULA para a memória principal, dependendo como o usuário posiciona as chaves do barramento. O usuário pode abrir ou fechar estas chaves clicando nelas, efetivamente conectando ou desconectando o barramento. Uma vez dentro da CPU, o barramento da memória principal conecta-se ao barramento C, o qual armazena o número no registrador R0 (pois o botão do barramento C está posicionado para R0). A figura 14.8 ilustra o próximo passo no nosso exemplo, o qual envolve copiar o segundo número para um registrador. Como o usuário escolheu o botão R/W próximo à posição de memória 1 e posicionou o botão do barramento C para R1, o conteúdo da posição 1 será buscado e armazenado no registrador R1. A figura 14.9 mostra o ciclo de CPU durante o qual a ULA soma os conteúdos de R0 e R1. Note que os botões de ajuste do barramento A, do barramento B e da operação da ULA são os mesmo como os das figuras 14.3 até 14.6; isto é por conta dos dois exemplo envolverem a mesma tarefa de somar os números em R0 e R1. Na figura 14.9, no entanto, as chaves do barramento da memória principal estão ajustadas para que o resultado da soma seja enviado para a memória principal, ao invés de que seja enviado para os registradores. Figura 14.8: Segundo, -296 é carregado a partir da memória em R1. Figura 14.9: Finalmente, os valores são somados e a soma é armazenada de volta na memória. Tecnologia e Computação – Campus Canoas Área: Curso:Disciplina: Cursos de Computação Arquitetura e Organização I Edemar Costa Oliveira Professor : Verificação: Aula Nº: 1 G1 G2 Trabalho Duas observações interessantes podem ser feitas em relação ao comportamento do simulador. Primeiro, o simulador precisa de mais tempo para copiar dados entre a memória e a CPU do que ele precisa para executar um ciclo de CPU. Este atraso simula o efeito do tempos de acesso lentos associados com a memória principal. Em um computador real, cerca de até 10 ciclos de CPU podem ocorrer no tempo que leva para uma transferência de dados entre a CPU e a memória principal. A segunda observação é que, mesmo enquanto os dados estão sendo buscados a partir da memória, as operações ainda estão sendo executadas na parte operativa da CPU. Por exemplo, na figura 14.8, o número em R0 (43) é enviado através dos barramentos A e B para a ULA, produzindo a soma 86. Isto pode parecer lixo, pois o resultado das operações da ULA é ignorado (devido ao barramento C está desconectado). De maneira surpreendente, isto reflete precisamente o funcionamento interno da CPU. É mais eficiente para a CPU executar computações desnecessárias enquanto dados estão sendo transferidos para ou a partir da memória do que adicionar circuitos extras para reconhecer se o barramento C estava desconectado. Tecnologia e Computação – Campus Canoas Área: Curso: Disciplina: Cursos de Computação Arquitetura e Organização I Edemar Costa Oliveira Professor : Verificação: Aula Nº: 1 G1 G2 Trabalho - Tecnologia e Computação – Campus Canoas Área: Curso: Disciplina: Cursos de Computação Arquitetura e Organização I Edemar Costa Oliveira Professor : Verificação: Aula Nº: 1 G1 G2 Trabalho Parte II - Parte Operativa com simulador de memória
Compartilhar