RISC - Dicas, Aprenda Como fazer, Tutorial e Livros.

Tutomania - Dicas, Aprenda Como fazer, Tutorial e Livros

Login:
Senha:
Salvar |  Cadastre-se

 

Home | Arquivo | Envio | Games | Política de Privacidade

NAVEGAÇÃO

«« Anterior Próximo »»

LINKS PATROCINADOS

ACESSO RÁPIDO

  Todos os Destaques
  Os Mais Acessados
  Ultimos enviados
  Jogos
  Enviar um Artigo

CATEGORIAS

  Animais (524)
  Arte e Cultura (2361)
  Casa e Propriedade (144)
  Ciência e Tecnologia (1062)
  Comércio (40)
  Concursos (91)
  Conhecimentos Gerais (946)
  Culinária e Gastronomia (690)
  Diversos... (501)
  Economia (111)
  Eletrônicos (558)
  Esportes (103)
  Fotografia (58)
  Games (812)
  Governo (34)
  Indústria (21)
  Informática (2198)
  Internet (262)
  Lazer / Diversão (123)
  Legislação (163)
  Multimídia (223)
  Natureza (70)
  Saúde (558)
  Ser Humano e Sociedade (1001)
  TuTo GaMeS! (205)
  Utilidade Pública (104)
  Veículos e Transporte (123)


[+] Índice completo...

PENSAMENTO DA VEZ

Existem apenas duas maneiras de ver a vida. Uma é pensar que não existem milagres e a outra é pensar que tudo é um milagre.
Albert Einstein

ANUNCIOS

Informática

RISC


DOCUMENTO:


ESTATÍSTICAS:

Visualizações: 628
Comentários: 0 (Comentar)
Nota: (Dar Nota)
Valor: 10 crédito(s)
Enviado por: delfo (5)
Publicado em: 28/03/06 21:14hs.

LINKS PATROCINADOS:

DOCUMENTO:


1 INTRODUÇÃO
2 A CARACTERÍSTICA SUPER ESCALAR
3 ARQUITETURA DO RS/6000
3.1 MODELO DE REGISTRADORES DO RS/6000
3.2 MEMÓRIA VIRTUAL NO RS/6000
3.3 RESUMO DE FUNCIONAMENTO DA CPU
4 FAMÍLIA RS/6000
4.1 ARQUITETURA POWER RS1
4.2 ARQUITETURA POWER2
4.3 ARQUITETURA POWER PC
4.4 MODELOS
5 CONCLUSÕES
REFERÊNCIAS BIBLIOGRÁFICAS

 

 

1 Introdução

O System/6000 é baseado na arquitetura RISC (Reduced Instruction Set Computer). O termo RISC está um pouco ultrapassado no contexto da era presente. As máquinas RISC atuais, como os RS/6000, freqüentemente incorporam características híbridas de outros tipos de arquitetura para unir as melhores tecnologias disponíveis dentro de um microprocessador. Com isso, percebe-se que o termo RISC no seu real significado está bastante enfraquecido atualmente. A noção tradicional de RISC era a de criar uma máquina com ciclo de clock muito rápido para processar instruções na taxa de uma por ciclo.

Um processador com um conjunto de instruções menor e mais simples é mais fácil de ser projetado e testado. Os projetistas de hardware podem concentrar-se em decidir qual é o melhor conjunto mínimo de instruções e enfatizar questões como o número de ciclos de processador exigidos para a carga, decodificação e execução dessas instruções [BEN94].

As máquinas RISC suportam instruções de controle de hardware, ao contrário do microcódigo. A implementação de instruções em hardware pode ter custo elevado, mas oferece melhorias de desempenho. Tradiconalmente, as máquinas RISC possuem um conjunto de características típicas. Todas elas têm instruções de tamanho fixo, suportam um conjunto de instruções reduzido. Estas instruções são tipicamente implementadas em hardware por razões de desempenho, não sendo microcodificadas. Dessa forma, é liberada uma grande área do chip que, em caso contrário, seria preenchida pelo microcódigo. Além disso, normalmente o projeto arquitetural RISC envolve diversos registradores de propósito geral [CHA94].

A arquitetura RISC é do tipo load-store, também referenciada como arquitetura registrador-registrador. Nesta classe de máquinas, os operandos e resultados são recuperados indiretamente da memória principal, através do uso de um grande número de registradores escalares ou vetoriais. Comparada com a arquitetura registrador-registrador, há uma arquitetura denominada memória-memória em que os resultados intermediários e os resultados finais dos operandos fontes são recuperados diretamente da memória principal.

A tecnologia empregada em máquinas RISC surgiu inicialmente como resultado do desenvolvimento de redes telefônicas na década de 70. A rede telefônica foi esquecida com o passar do tempo, mas o progresso feito com aquele projeto serviu de base para um outro projeto de pesquisa desenvolvido no Instituto T. J. Watson. A baixa taxa de custo/desempenho da máquina protótipo desse projeto foi fator altamente encorajador. Através de John Cocke, esta máquina protótipo transformou-se numa máquina chamada IBM 801, que foi o predecessor para o IBM RT. Embora o IBM 801 pudesse manipular uma instrução por ciclo para código especializado, o mesmo não podia ser dito para código de propósito geral.

Em esforços continuados para diminuir os atrasos causados por acessos de armazenamento e desvios condicionais com pipelines adicionais, um novo projeto foi formulado. Referenciado como AMERICA, em 1985, este novo projeto fez uso de 3 processadores semi-autônomos. A equipe envolvida nesse projeto estudou a organização de ponto flutuante e desempenho, procurando entender quais as características do projeto do hardware poderiam realmente ser usadas pelos compiladores, e se as técnicas de paralelismo ao nível de instrução poderiam ser empregadas para permitir uma arquitetura chamada super escalar. O AMERICA acabou envolvendo-se com um outro projeto denominado RIOS, que se tornou comercialmente conhecido por POWER (Performance Optimization with Enhanced RISC).

Em 1986, os pesquisadores desenvolveram a segunda geração da arquitetura RISC que empregou os princípios já mencionados. Entretanto, RISC tornou-se o acrônimo para Reduced Instruction Set Cycles. Por ler mais de uma instrução da memória em determinado tempo e por a arquitetura ser composta de um número de unidades de execução no processador, mas do que uma instrução poderia ser executada concorrentemente. Ainda em 1986, um grupo da IBM do laboratorio de Austin-Texas aceitou essas idéias e o RS/6000 começava a surgir.

A IBM anunciou o lançamento do RS/6000 em 1990 [BAK90] [HES90] e havia um número de objetivos específicos ou metas de projeto na ocasião [HAR93]:

·        O sistema seria projetado com vistas a obter desempenho;

·        O RS/6000 teria um processador de ponto flutuante integrado;

·        A IBM garantiria que o RS/6000 teria significância na área de sistemas abertos;

·        A IBM forneceria um vasto número de sistemas;

·        O RS/6000 deveria obter balanceamento entre a computação intensiva numérica e a computação multi-usuário de nível comercial.

Para tanto, o uso da tecnologia RISC seria a chave, entretanto o advento de novas tecnologias também exigia o uso de um sistema híbrido e não puramente RISC. O projeto RS/6000, então, enquadra-se na segunda geração de máquinas RISC: super escalar e altamente concorrente. Essa nova geração RISC tem por base a arquitetura POWER. O sistema permite que instruções múltiplas possam ser executadas simultaneamente, possui unidades de desvio, de ponto fixo e de ponto flutuante integradas dentro do projeto da CPU. Há um número elevado de instruções para alimentar estes processadores, que operam em paralelo sobre o fluxo de instruções, fornecendo altos níveis de paralelismo.

O controle de hardware facilita um alto grau de precisão para a implementação de funções unidas no projeto da arquitetura POWER. Fazendo com que instruções que ocorrem com maior freqüência executem automaticamente como instruções unidas, fornece um ganho no ciclo de clock, por exemplo, uma instrução multiplicação-adição (chamada fma) da unidade de ponto flutuante.

O pipeline tornou-se o tratamento padrão dessas então denominadas máquinas RISC, como uma técnica natural para alcançar a meta de executar uma instrução por ciclo de máquina.

Voltar

2 A Característica Super Escalar

Na maioria dos casos, as máquinas vetoriais são capazes de executar múltiplas instruções de ponto flutuante a cada ciclo, pois elas possuem um processador vetorial que consiste de múltiplos dispositivos de processamento de ponto flutuante que operam em paralelo. Avanços tecnológicos de arquitetura permitiram às máquinas atuarem como se tivessem um dispositivo de processamento único (isto é, processadores escalares) para executar internamente múltiplas instruções em paralelo. O termo super escalar começou a ser usado para identificar estas novas tecnologias arquiteturais.

Assim, em máquinas super escalares há um único fluxo de instruções, todas elas procedentes do mesmo programa, isto é, usando o único contador de programa da arquitetura, a unidade de controle coordena a execução de múltiplas instruções.

O RS/6000 insere-se no contexto das máquinas cujo algoritmo de detecção de paralelismo é diretamente implementado no hardware, ou seja, o algoritmo deve determinar se dois ou mais comandos podem ser executados simultaneamente (mecanismo de despacho). Algoritmos implementados no hardware detectam concorrência em tempo de execução.

Para permitir a detecção de instruções que podem ser executadas em paralelo, esse algoritmo precisa ter acesso a um bloco de instruções de máquina. Por essa razão, arquiteturas super escalares desse tipo geralmente incluem uma janela de instruções no interior do processador (examinando as instruções da janela, o algoritmo tem condições de examinar se dois ou mais instruções podem ser executadas simultaneamente). Por exemplo, examinando o conteúdo da sua janela de instruções, o algoritmo implementado no processador RS/6000 da IBM pode ativar a execução de até cinco instruções por ciclo: ponto fixo, desvio, operação de código de condição, e adição/multiplicação de ponto flutuante (esta última contém duas operações). As unidades de ponto flutuante do RS/6000 são do tipo multiciclo, introduzindo um tipo de paralelismo temporal, além do paralelismo espacial já existente.

Para reduzir o tempo de processamento dos programas de aplicação, os projetistas do RS/6000 decidiram definir um repertório cujas instruções apresentam um elevado grau de funcionalidade, isto é, a execução de uma instrução envolve a ativação de muitas micro-operações. Por essa razão, o repertório da máquina inclui 184 instruções, o que a distingue de outras arquiteturas RISC cujo conjunto de instruções geralmente não ultrapassa a marca de 128 instruções [TAB91].

Os projetistas do RS/6000 estavam mais interessados em reduzir o número de ciclos exigido pelo programa de aplicação do que desenvolver uma arquitetura com um repertório de instruções reduzido [HES90].

Voltar

3 Arquitetura do RS/6000

O RS/6000 possui cinco unidades, conforme figura 1:

·        ICU: unidade de memória cache de instruções;

·        FXU: unidade de ponto fixo;

·        FPU: unidade de ponto flutuante;

·        DCU: memória cache de dados;

·        SCU: unidade de controle de memória.

Figura 1: As 5 unidades do RS/6000.


A técnica do pipeline foi empregada na implementação do RS/6000. A descrição das funções de cada um dos quatro estágios do processador é a seguinte:
1. Busca: quatro instruções são trazidas da memória cache para a janela (denominada buffer pela IBM) pela unidade ICU;
2. Despacho: se apropriado, instruções para as unidades FXU e FPU são despachadas pelo processador de desvios. Além dessa função, a unidade ICU pode gerar o endereço alvo de uma instrução de desvio e executar uma outra instrução de desvio;
3. Decodificação: as unidades FXU e FPU decodificam as instruções despachadas pela ICU;
4. Execução: as instruções decodificadas são executadas pela FXU e pela FPU.

A unidade ICU engloba uma memória cache de 8k bytes para o armazenamento de instruções e um processador de desvios (branch processor). Além de fazer a busca de instruções da memória cache, o processador faz a interpretação dessas instruções, despachando-as, se for o caso, para a unidade de ponto flutuante ou de ponto fixo. A transferência das instruções de máquina para esses dois dispositivos funcionais é realizada através do barramento I. Compete também ao processador de desvios, o tratamento das instruções de desvios, das interrupções e das funções envolvendo os conjuntos de códigos de condição. A unidade implementa sete diferentes tipos de instruções de desvio e nove instruções que operam com os conjuntos de códigos de condição.

Durante o escalonamento das instruções, ou seja, o processo de reorganização das instruções, deve-se levar em consideração a disponibilidade dos recursos e a ordem de precedência de instruções dependentes. Se as instruções do programa objeto estiverem organizadas apropriadamente, o processador de desvios alimenta as outras unidades do sistema, viabilizando a execução de até cinco instruções por ciclo de máquina, como já mencionado.

No tratamento de desvios, a unidade ICU gera o endereço alvo do desvio ao verificar a presença de uma instrução de desvio dentre as cinco primeiras entradas da sua janela de instruções, que possui oito entradas. Se o desvio for condicional e se o respectivo código de condição já estiver avaliado, não ocorrerá nenhum atraso. Nesse caso, quando a instrução de desvio for uma das cinco primeiras entradas da janela, a lógica responsável pelo seu tratamento determinará qual dos dois endereços alternativos será usado. Se o código de condição ainda não estiver disponível, o processador de desvios prediz que não haverá transferência de controle, e as instruções localizadas nas posições adjacentes a de desvio são buscadas e despachadas para execução condicional. Uma vez avaliada a condição, o processador finalmente decide se o desvio deverá ocorrer ou não, emitindo um sinal cancelando a execução das instruções que foram despachadas antecipada e indevidamente.

Nessa situação, o fluxo é desviado para o endereço alvo do desvio, e as instruções que foram pré-buscadas são despachadas. A janela de instruções relacionada com o endereço alvo é preenchida com quatro instruções tão logo a lógica responsável pelo tratamento de desvios tenha determinado que o endereço alvo será movimentado para o contador de programa.

Durante o processo de reorganização das instruções, o compilador nem sempre pode antecipar a avaliação das expressões relacionais dos comandos de teste. Unidades funcionais ocupadas, violação nas relações de dependência podem impedir a antecipação. Por esse motivo, o conteúdo correto do código de condição indicando se um desvio deverá ocorrer ou não, precisa ser (ou ainda está sendo) avaliado. Nesse caso, ocorrendo o desvio, um retardo de 1 a 3 ciclos de máquina será introduzido no pipeline. Não ocorrendo o desvio, retardos não serão introduzidos, pois conforme predição do processador de desvios (mencionado anteriormente), o tratamento das quatro instruções adjacentes ao desvio já foi iniciado.

O RS/6000 inclui um registrador especial de 32 bits que armazena 8 conjuntos de códigos de condição. As instruções de desvios podem ser examinadas antecipadamente consultando o conteúdo de um dos conjuntos. Esse tratamento antecipado geralmente minimiza o retardo imposto pelas instruções de desvios. Assim, o chamado zero-cycle branching pode ser atingido. O formato do registrador de condições está ilustrado na figura 2.

Figura 2: Formato do registrador de condições.

A FXU decodifica e executa instruções que operam com inteiros. Além dessas atividades, a FXU também controla a memória cache de dados, participa da geração de endereços e executa operações de transferências (load/store) envolvendo operandos em ponto flutuante. A FXU é constituída por:

·        1 janela de instruções (I-buffers) que armazena os comandos despachados pelo processador de desvios;

·        1 conjunto de 32 registradores de 32 bits de propósito geral;

·        1 unidade aritmética e lógica;

·        5 registradores especiais e 1 tabela, que são elementos de armazenamento utilizados por operações de multiplicação, divisão, deslocamentos e na implementação de mecanismos de transferências de endereços, de proteção de páginas e de proteção de dados.

A unidade de ponto fixo do RS/6000 (FXU) executa 134 tipos de instruções: 79 manipulando operandos inteiros e 55 primitivas referenciando dados. O primeiro grupo de instruções consiste de: 24 aritméticas, 16 lógicas, 26 de deslocamento, 13 instruções de transferência para a ICU.

As instruções de transferência para a ICU são: 4 comparações que retornam valores para um dos conjuntos de códigos de condição; 2 instruções de trap provocando uma interrupção na ICU; e 7 instruções de transferência entre as duas unidades.

A FXU requer, respectivamente, de 3 a 5 e de 19 a 20 ciclos de máquina para executar instruções de multiplicação e de divisão com inteiros. Com o objetivo de mapear eficientemente algumas construções presentes em linguagens de alto nível, a FXU implementa primitivas para a manipulação de cadeias de caracteres com tamanho variável terminados pelo caracter NULL ou com um campo especificando o tamanho da cadeia (essas estruturas são usadas para programas codificados em C e Pascal, respectivamente).

Um pipeline de 4 estágios realiza as funções da FXU:

1. As instruções despachadas pela ICU são armazenadas na janela de instruções da FXU;
2. A instrução no topo da janela de instruções é decodificada, e os registradores referenciados são transferidos para as respectivas unidades;
3. A operação é realizada (executada);
4. O resultado da operação é gravado na memória cache de dados.

Para manter a FXU sincronizada com a FPU, a FXU usa um contador para controlar o número de instruções executadas. Dessa forma, fica garantido que dentre as instruções despachadas para essas unidades, a FXU não esteja executando mais do que duas instruções na frente da FPU.

A FPU suporta as 21 operações com reais, conforme especificação do padrão IEEE 754-1985. Operações de multiplicação, adição, divisão e subtração são realizadas pela FPU. Implementada como um pipeline de dois estágios, a FPU do RS/6000 produz um resultado por ciclo de máquina e requer dois ciclos de máquina se o pipeline estiver vazio (ou seja, a latência do pipeline é de duas unidades). Reduzir o tempo de latência de um pipeline é um importante detalhe de projeto que resulta num aumento no desempenho: a probabilidade de ocorrência de bloqueios num pipeline, como conseqüência das interdependências das instruções, é proporcional ao número de estágios em que o pipeline foi segmentado. Por exemplo, num pipeline com dois estágios, o compilador precisa incluir apenas uma instrução entre duas instruções adjacentes que compartilham um mesmo registrador.

A FPU contém um banco com 32 registradores de 64 bits para o armazenamento de reais. Campos de um outro registrador (denominado FPSCR) são utilizados para armazenar o status da FPU e informações de controle requeridas pelo padrão IEEE 754-1985. Uma importante característica implementada na FPU é a capacidade de renomeação de registradores (register renaming). A técnica de renomeação impede que o conteúdo de um registrador compartilhado por duas instruções concorrentes seja destruído. Dessa forma, torna-se desnecessário interromper a execução concorrente de duas instruções apresentando anti-dependência de dados, se a técnica de renomeação for usada.

Por exemplo, suponha que o registrador de ponto flutuante (FPR) seja usado como fonte pela instrução i e como destino pela instrução j. Considerando que i é uma instrução de adição e que j é uma instrução de load (FPR1), então elas poderão ser executadas em paralelo pelas unidades FPU e FXU, respectivamente. Ao detectar a anti-dependência, a FPU escolhe um registrador que armazenará temporariamente o valor transferido pela instrução j. Todas as instruções Kx com i < Kx < j referenciando o registrador KPR1 como fonte irão fazer acesso a FPR1, enquanto que as instruções Kv com j < Kv farão acesso ao registrador temporário como fonte.

Ao invés de 32, o banco contém de fato 40 registradores: 6 registradores do banco, invisíveis ao programador, são empregados na implementação do mecanismo de renomeação; e os outros 2 são usados pelas operações de divisão com reais.

A memória cache de dados (DCU) é formada por 64k. O esquema de mapeamento adotado é o four-way set associative, e cada linha dessa memória cache contém 128 bytes. Para minimizar o tráfego no barramento de memória, os projetistas do RS/6000 implementaram a técnica store-back para atualizar a memória principal. Assim, quando um novo valor é armazenado na cache de dados, ele não é transferido para a memória principal imediatamente. A atualização somente ocorre quando a respectiva linha da cache for descartada para armazenar um outro conjunto de palavras consecutivas da memória principal. Nessa situação, o algoritmo LRU é utilizado na seleção da linha que será descartada.

A unidade de controle de memória (SCU) é responsável pela comunicação envolvendo os componentes da CPU (ICU, FXU e DCU), a memória principal e o controlador de entrada e saída. Essa unidade atua como mestre do barramento da memória principal e do barramento dos periféricos de entrada e saída, e controla a interface da cache de dados com a memória principal. As operações do tipo DMA (transferências entre a memória principal e periféricos) também são controladas pela SCU.
O espaço de endereçamento da arquitetura RS/6000 é de 4 petabytes (252 bytes). A técnica da paginação foi empregada na implementação da memória virtual. A memória física pode ser formada por até 4 gigabytes organizados em páginas de 4k.

Voltar

3.1 Modelo de Registradores do RS/6000

A figura 3 mostra a visão lógica da Unidade Central de Processamento (CPU) do IBM RISC System/6000. Do ponto de vista de um programador assembly, observa-se explicitamente que a CPU é dividida em 3 áreas (unidades de desvio, de ponto fixo e de ponto flutuante). Das 184 instruções do processador RS/6000, 18 são usadas no processador de desvios, 116 no processador de ponto-fixo e 42 no processador de ponto flutuante. As 8 instruções remanescentes são usadas para a manipulação de cache.

Figura 3: Modelo de Registradores do RS/6000.



Registradores do Processador de Ponto Fixo

r0-r31 Registradores de propósito geral: principal conjunto de registradores de 32 bits usado pelo sistema.xerRegistrador de exceção de ponto fixo: este registrador de 32 bits indica o estado da operação de ponto fixo, por exemplo, que um overflow ou carry ocorreu. mq Registrador de quociente de multiplicação: fornece uma extensão de registrador de 32 bits para armazenar os resultados de operação de multiplicação ou de divisão. dar Registrador de endereço de dados: contém o endereço de 32 bits que ocasiona um armazenamento de dados ou uma exceção de alinhamento. dsisr Registrador de status de interrupção de armazenamento de dados: define a causa da interrupção cujo endereço endereço foi colocado no registrador dar.
Registradores do Processador de Desvios

msr Registrador de estado de máquina: define o estado do processador, por exemplo, se as interrupções externas estão desabilitadas, se o processador de ponto flutuante está disponível ou se um endereço alinhado incorretamente foi selecionado.cr Registrador de condição: um registrador de 32 bits que reflete o resultado de certas operações e fornece um mecanismo para teste e desvio. lr Registrador de ligação: um registrador de 32 bits que contém o endereço de destino de instruções de desvio condicional ou o endereço de retorno para instruções de subrotina. ctr Registrador contador: um registrador de 32 bits que é automaticamente decrementado com instruções de desvio e de contagem. Pode também representar um endereço de desvio para a instrução do registrador contador. Além disso, este registrador é usado como um local de rápido salvamento para o registrador msr quando ocorre uma chamada do supervisor. srr0 Registrador 0 de salvamento/recuperação de status: registrador de 32 bits que salva o estado da máquina em interrupções e recupera o estado da máquina no retorno de uma instrução de interrupção. srr0 contém o endereço que ocasionou a interrupção. srr1 Registrador 1 de salvamento/recuperação de status: como srr0, entretanto srr1 contém informações específicas sobre a causa da interrupção bem como parte do registrador msr quando ocorre a interrupção.
Registradores do Processador de Ponto Flutuante

fr0-fr31Registradores de ponto flutuante: 32 registradores de ponto flutuante de 64 bits cada. fpscr Registrador de controle e status de ponto flutuante: controla o manuseio de exceções de ponto flutuante e dos resultados.Registradores de Propósito Geral

dec Registrador de decremento: um contador que fornece um mecanismo para ocasionar uma interrupção externa. Isto é permitido carregando o registrador com um número que é decrementado em intervalos regulares até o registrador alcançar zero quando é feita uma interrupção.eim0, eim1 Máscara de interrupção externa, baixa e alta, e de 32 bits.eis0, eis1 Sumário de interrupção externa, baixo e alto, de 32 bits. iar Registrador de endereço de instruções (contador de programa).rtcu Registrador upper de relógio de tempo real: tempo de 32bits em segundos.rtcl Registrador lower de relógio de tempo real: os 32 bits mais baixos do tempo em nanosegundos.sr0-sr15 Registradores de segmento: 16, registradores de 32 bits usados para transformar endereços virtuais para reais.sdr0 Registrador 0 de descrição de armazenamento: um ponteiro para os bits de ordem mais alta do endereço real da tabela de frames da página (PFT).sdr1 Registrador 1 de descrição de armazenamento: contém os bits de ordem mais alta do endereço real da tabela âncora hash (HAT) e uma máscara HAT usada para o hardware transformar endereços virtuais para reais e indexar dentro da PFT apontada pelo sdr0.tid Registrador de ID de transações: um ID de transações de 32 bits do processo executante.
Voltar

3.2 Memória Virtual no RS/6000

A figura 4 mostra a transformação de um endereço efetivo, usado pelos programadores, num endereço físico usado para o acesso à memória atual. O modelo dos registradores, descrito anteriormente, é o de um processador de 32 bits. Os endereços possuem 32 bits de tamanho, permitindo um espaço de endereçamento de 4 Gb por processo (entretanto, através do uso e troca de segmentos compartilhados e arquivos mapeados, um desenvolvedor de aplicações pode consideravelmente expandir a quantidade de dados acessíveis que seria necessária). Para gerar um endereço físico, o endereço efetivo é dividido em 3 partes: um índice de segmento de 4 bits, um índice de página virtual de 16 bits e offset de 12 bits.

Figura 4: Transformação de endereço virtual.

Estágios da transformação de endereços:

Estágio 1 O índice seleciona um dos registradores de segmento de sr0 a sr15. Cada registrador de segmento tem 32 bits. Se o bit mais significante é 1, então os 24 bits mais baixo lêem e escrevem dos endereços de memória sobre o barramento de entrada/saída (MicroChannel). Se o bit, por outro lado, for 0, esses 24 bits formam os 24 bits mais altos de endereço virtual que levarão a um endereço na memória do sistema.Estágio 2 O ID de segmento de 24 bits é concatenado ao índice de página virtual para formar um número de página de 40 bits. O número de página virtual fornece um índice dentro da PFT para produzir um número de página real de 20 bits.Estágio 3 O número de página real da PFT procurada é combinado com os 12 bits do endereço efetivo original para formar um endereço físico de 32 bits.Estágio 4 O endereço físico de 32 bits é usado para endereçar a memória real do sistema.
Voltar

3.3 Resumo de Funcionamento da CPU

O funcionamento das unidades de processamento do RS/6000 inicia-se pelo processador de desvios, que busca as instruções da memória cache (ou da memória do sistema, na flata de uma cache) em 4 bytes por ciclo, executando todas as instruções de desvio e despachando as instruções remanescentes os processadores de ponto fixo e de ponto flutuante. Isto continua até ambas as filas de instruções, em espera nos processadores de ponto flutuante e de ponto fixo, estivirem cheias, ou for encontrado um desvio condicional que dependa do resultado de um cálculo que já foi despachado, mas que ainda não teve sua execução completa.

O registrador de condição (cr) é um registrador de 32 bits dividido em 8 campos de condição. Os processadores de ponto fixo e ponto flutuante gerenciam, cada um, um campo individual em cr para indicar o resultado de suas operações. O projeto arquitetural previne conflitos de compartilhamento de um código de condição comum entre processadores separados. Para aumentar o paralelismo, os resultados de uma instrução apenas ajustam os códigos de condição no registrador cr se a parte do bit de registro do opcode da instrução está ativado.

Sobretudo, as instruções do processador de desvios estão assim definidas de forma que todas as informações e recursos necessários para a execução estão contidos no próprio processador de desvios. Por exemplo, as informações exigidas para as operações lógicas, de endereçamento condicional ou absoluto estão contidas no processador de desvios.

Para uma grande seqüência de código real, as instruções do processador de desvios são completamente sobrepostas, ocasionando o termo zero cycle branching. Isto quer dizer que o tempo de espera no desvio de uma parte de um programa para uma outra no processador de desvios está totalmente ?escondido? pela concorrência de uma outra unidade de processamento.

O processador de ponto fixo manuseia todas as operações com inteiros e com strings, bem como calcula os endereços de dados para si mesmo e para o processador de ponto flutuante. Manuseia o movimento atual dos dados da cache de dados para si e para o processador de ponto flutuante. As instruções no processador de ponto fixo suportam tipos de dados como: byte (8 bits), half-word (16 bits) e word (32 bits). Suporta instruções lógicas, de deslocamento e aritméticas e também um número de instruções para a manipulação de strings.

O processador de ponto fixo foi projetado para realizar aritmética de acordo com o padrão ANSI/IEEE 754-1985. Inclui facilidades usuais, por exemplo, instruções de multiplicação, divisão, absolutas e com sinal. Observação importante é que este processador suporta instruções de multiplicação e adição na forma a = b * c + d. Pesquisas observaram que muitos programas reais fazem uso desta combinação, desta forma a combinação é apresentada como uma instrução única no RS/6000. Esta instrução única reduz erros de arredondamento quando comparado com a execução separada: multiplicar e depois adicionar. Uma facilidade de renomeação de registradores facilita otimizações em tempo de execução, usando 38 registradores internos, ao invés dos declarados 32. Por exemplo, no trecho de pseudo-código abaixo:

Load Reg10 with Reg9+Reg8
Save Reg10
Load Reg10 with new_value

Para o propósito da segunda instrução Load, um outro registrador (ocioso) é usado ao invés do registrador 10. Com isto o Load continua sem esperar o término da instrução Save precedente. Isto é particularmente efetivo, por exemplo, se esta seqüência de código for realizada dentro de um loop, sobrepondo o salvamento do registrador (Save) com outras instruções dentro do loop.

Voltar

4 Família RS/6000

A família RS/6000 consiste num conjunto de sistemas de alto desempenho cuja arquitetura utiliza uma implementação Super Escalar da tecnologia RISC. O RS/6000 foi desenvolvido com o objetivo de satisfazer as necessidades de diferentes tipos de usuários. A elevada velocidade de cálculo numérico em ponto flutuante torna este sistema particularmente atrativo para quem utiliza aplicações de índole técnica, com um forte componente de cálculo científico. Por outro lado, o elevado desempenho transacional, a flexibilidade de configuração do sistema, a velocidade de acesso à memória e aos dispositivos Ultra SCSI e SSA, a qualidade das suas prestações globais e as ferramentas desenvolvidas para facilitar a utilização e a administração de sistemas AIX, são qualidades que atraem os usuários com necessidades no domínio dos servidores de arquivos em ambientes de rede ou no domínio das aplicações de carácter comercial.

A família RS/6000 inclui uma grande variedade de modelos, que vão desde as Estações de Trabalho de muito baixo custo até aos grandes servidores massivamente paralelos MPP, os RS/6000 SP, passando pelos servidores rack-mounted com ofertas de 32 e de 64 bits. Especialmente importante é o fato de todos os modelos serem compatíveis do ponto de vista binário, permitindo com que as aplicações possam ser transportadas de um modelo para outro sem necessidade de recompilação. Na prática, tal fato significa que, durante o desenvolvimento das aplicações, podem ser usados sistemas de custo muito mais baixo do que o dos sistemas onde se pretende fazer a sua utilização em regime normal de exploração, ou que, com a evolução das necessidades de processamento se possa facilmente substituir o sistema actual por um qualquer outro superior dentro da família RS/6000. Esta capacidade significa que a família fornece escalabilidade. Todos os sistemas RS/6000 funcionam sob controle do Sistema Operacional AIX, uma implementação do sistema UNIX.

Voltar

 

4.1 Arquitetura POWER RS1

A arquitetura POWER RS1, resultado de pesquisas da IBM no domínio da tecnologia RISC, caracteriza-se por um projeto inovador. Um dos principais objetivos que presidiu à sua concepção, foi a produção de um processador de custo reduzido e tecnologia acessível, capaz de executar múltiplas instruções num único ciclo-máquina. Só com esta perspectiva foi possível obter aumentos significativos de desempenho sem um agravamento drástico nos custos envolvidos.

O objetivo pretendido foi atingido através da implementação em tecnologia CMOS de múltiplas unidades de execução concorrente (para controle das operações de ponto fixo e de ponto flutuante, bem como das instruções de jump/branch e de execução condicional), da utilização de memórias cache associadas a sofisticados algoritmos para a sua gestão, da existência de um elevado número de registradores internos no processador e de uma ampla largura de banda disponível para transferência de dados.

A arquitetura POWER RS1, que pertence, conceitualmente, ao tipo super escalar, dispõe de múltiplas unidades pipelined; a implementação atual possui 32 bits, com uma capacidade total de endereçamento de memória virtual de 52 Bits. O resultado da implementação prática desta arquitetura, consiste numa família de processadores RISC de alto desempenho, capaz de executar até quatro instruções em cada ciclo de clock.

A descrição do funcionamento das unidades da arquitetura POWER RS1 é praticamente a mesma descrita nos itens anteriores deste trabalho, então não será repetida nesta seção.

Voltar

 

4.2 Arquitetura POWER2

A implementação POWER2, uma segunda iteração no projeto da arquitetura POWER, possui desempenhos significativamente superiores e mantém a compatibilidade binária com a arquitetura POWER RS1. Este aumento de desempenho é conseguido devido a vários melhoramentos dos quais se destacam:

·        Aumento do número de unidades: um processador POWER2 dispõe de um total de 5 unidades que podem funcionar em paralelo: 1 ICU (Instruction Cache Unit and Branch processor), 2 FXU (Fixed Point Unit) e 2 FPU (Floating Point Unit). Passa a ser, por esta razão, possível a execução de até 6 instruções (ou oito operações) por ciclo de clock;

·        Alteração da estrutura de cache: a cache de da

VEJA TAMBÉM:

COMENTÁRIOS:

Este documento não possui comentários. Prestigie quem o enviou e comente.

Comentar:

Título:
Autor:   Anônimo (Efetue login para comentar identificado)
Comentário:    

OPÇÕES

ENTRE COM SEU LOGIN E SENHA

Olá visitante! Para interagir com este documento, você precisa estar logado.

Login:
Senha:  
Salvar Dados  |  Cadastre-se!

O cadastro é gratis! É muito fácil e rápido fazer o seu cadastro.

PARCEIROS


Mercado de Ações

Artigo Científico

Jogo Online Gratis

Jogos da Barbie

Torpedo Grátis

Receitas Online

Hopedagem Grátis

Game Info

Jogos Online

Jogos de Atari

Nintendo 8 bits

Jogos Gratis

Ouvir Músicas

Home | Termos de Uso | Sobre o Tutomania | Publicidade | Contato
2005 - 2010 ® Tutomania.

Page Rank