R10000 - R10000

NEC VR10000.

O R10000 , codinome "T5", é uma implementação de microprocessador RISC da arquitetura do conjunto de instruções MIPS IV (ISA) desenvolvida pela MIPS Technologies, Inc. (MTI), então uma divisão da Silicon Graphics, Inc. (SGI). Os designers principais são Chris Rowen e Kenneth C. Yeager. A microarquitetura R10000 é conhecida como ANDES, uma abreviatura de Architecture with Non-sequential Dynamic Execution Scheduling. O R10000 substitui amplamente o R8000 no topo de linha e o R4400 em outros lugares. A MTI era uma empresa de semicondutores sem fábrica ; o R10000 foi fabricado pela NEC eToshiba . Fabricantes anteriores de microprocessadores MIPS, como Integrated Device Technology (IDT) e três outros, não fabricaram o R10000, pois era mais caro do que o R4000 e o R4400.

História

O R10000 foi lançado em janeiro de 1996 nas frequências de relógio de 175 MHz e 195 MHz. Uma versão de 150 MHz foi introduzida na linha de produtos O2 em 1997, mas foi descontinuada pouco depois devido à preferência do cliente pela versão de 175 MHz. O R10000 não estava disponível em grandes volumes até o final do ano devido a problemas de fabricação nas fundições do MIPS. A versão de 195 MHz era escassa ao longo de 1996 e, como resultado, custava US $ 3.000.

Em 25 de setembro de 1996, a SGI anunciou que os R10000s fabricados pela NEC entre março e o final de julho daquele ano estavam com defeito, consumindo muita corrente e causando o desligamento dos sistemas durante a operação. A SGI fez um recall de 10.000 R10000s que foram enviados em sistemas como resultado, o que impactou os lucros da empresa.

Em 1997, uma versão do R10000 fabricada em um processo de 0,25 µm permitiu que o microprocessador atingisse 250 MHz.

Comercial

Os usuários do R10000 incluem:

Descrição

Die shot NEC VR10000.

O R10000 é um projeto superescalar de quatro vias que implementa a renomeação de registradores e executa instruções fora de ordem . Seu design é uma partida dos microprocessadores MTI anteriores, como o R4000, que é um design escalar em ordem muito mais simples que depende amplamente de altas taxas de clock para desempenho.

O R10000 busca quatro instruções a cada ciclo de seu cache de instruções . Essas instruções são decodificadas e, em seguida, colocadas nas filas de instrução de inteiro, ponto flutuante ou carregar / armazenar, dependendo do tipo da instrução. A unidade de decodificação é auxiliada pelas instruções pré-decodificadas do cache de instruções, que acrescentam cinco bits a cada instrução para permitir que a unidade identifique rapidamente em qual unidade de execução a instrução é executada e reorganize o formato da instrução para otimizar a decodificação processo.

Cada uma das filas de instruções pode aceitar até quatro instruções do decodificador, evitando gargalos. As filas de instruções emitem suas instruções para suas unidades de execução dinamicamente dependendo da disponibilidade de operandos e recursos. Cada uma das filas, exceto a fila de carregamento / armazenamento, pode emitir até duas instruções a cada ciclo para suas unidades de execução. A fila de carregamento / armazenamento pode emitir apenas uma instrução. O R10000 pode, portanto, emitir até cinco instruções a cada ciclo.

Unidade inteira

A unidade inteira consiste no arquivo de registro inteiro e três pipelines , dois inteiros, um armazenamento de carga. O arquivo de registro inteiro tem 64 bits de largura e contém 64 entradas, das quais 32 são registros de arquitetura e 32 são registros de renomeação que implementam a renomeação de registro. O arquivo de registro tem sete portas de leitura e três portas de gravação. Ambos os pipelines inteiros têm um somador e uma unidade lógica. No entanto, apenas o primeiro pipeline tem um deslocador de barril e hardware para confirmar a previsão de ramificações condicionais. O segundo pipeline é usado para acessar o multiplicador e o divisor. Multiplies são canalizados e têm uma latência de seis ciclos para inteiros de 32 bits e dez para inteiros de 64 bits. A divisão não é canalizada. O divisor usa um algoritmo de não restauração que produz um bit por ciclo. As latências para as divisões de 32 e 64 bits são de 35 e 67 ciclos, respectivamente.

Unidade de ponto flutuante

A unidade de ponto flutuante (FPU) consiste em quatro unidades funcionais, um somador, um multiplicador, unidade de divisão e unidade de raiz quadrada. O somador e o multiplicador são canalizados, mas as unidades de divisão e raiz quadrada não. Adições e multiplicações têm uma latência de três ciclos e o somador e o multiplicador podem aceitar uma nova instrução a cada ciclo. A unidade de divisão tem uma latência de 12 ou 19 ciclos, dependendo se a divisão é de precisão simples ou dupla, respectivamente.

A unidade de raiz quadrada executa instruções de raiz quadrada e raiz quadrada recíproca . As instruções de raiz quadrada têm uma latência de 18 ou 33 ciclos para precisão simples ou precisão dupla, respectivamente. Uma nova instrução de raiz quadrada pode ser emitida para a unidade de divisão a cada 20 ou 35 ciclos para precisão simples e precisão dupla, respectivamente. As raízes quadradas recíprocas têm latências mais longas, 30 a 52 ciclos para precisão simples (32 bits) e precisão dupla (64 bits), respectivamente.

O arquivo de registro de ponto flutuante contém sessenta e quatro registros de 64 bits, dos quais trinta e dois são arquitetônicos e os restantes são registros de renomeação. O somador tem suas próprias portas dedicadas de leitura e gravação, enquanto o multiplicador as compartilha com o divisor e a unidade de raiz quadrada.

As unidades de divisão e raiz quadrada usam o algoritmo SRT . O ISA MIPS IV tem uma instrução multiplicação-adição. Esta instrução é implementada pelo R10000 com um bypass - o resultado da multiplicação pode ignorar o arquivo de registro e ser entregue ao pipeline de adição como um operando, portanto, não é uma multiplicação-adição fundida e tem uma latência de quatro ciclos.

Caches

O R10000 tem dois caches on-chip comparativamente grandes, um cache de instrução de 32 KB e um cache de dados de 32 KB. O cache de instruções é associativo por conjunto bidirecional e tem um tamanho de linha de 128 bytes. As instruções são parcialmente decodificadas acrescentando quatro bits a cada instrução (que têm um comprimento de 32 bits) antes de serem colocadas no cache.

O cache de dados de 32 KB possui duas portas por meio de intercalação bidirecional. Ele consiste em dois bancos de 16 KB , e cada banco é conjunto associativo bidirecional. O cache tem linhas de 64 bytes, usa o protocolo write-back e é virtualmente indexado e fisicamente marcado para permitir que o cache seja indexado no mesmo ciclo de clock e para manter a coerência com o cache secundário.

O cache unificado secundário externo suportava capacidades entre 512 KB e 16 MB. É implementado com memórias de acesso aleatório estático síncrono de mercadoria (SSRAMs). O cache é acessado por meio de seu próprio barramento de 128 bits, protegido por um código de correção de erros (ECC) de 9 bits . O cache e o barramento operam na mesma taxa de clock do R10000, cuja frequência máxima era de 200 MHz. A 200 MHz, o barramento gerou uma largura de banda de pico de 3,2 GB / s. O cache é associativo de conjunto bidirecional, mas para evitar uma contagem alta de pinos, o R10000 prevê a direção acessada.

Endereçando

MIPS IV é uma arquitetura de 64 bits, mas para reduzir custos, o R10000 não implementa todo o endereço físico ou virtual . Em vez disso, ele tem um endereço físico de 40 bits e um endereço virtual de 44 bits, portanto, é capaz de endereçar 1 TB de memória física e 16 TB de memória virtual .

Barramento do sistema Avalanche

O R10000 utiliza o bus avalancha , um de 64-bit de autocarros que funciona a frequências até 100 MHz. Avalanche é um endereço multiplexado e barramento de dados, portanto, a 100 MHz, ele produz uma largura de banda máxima teórica de 800 MB / s, mas seu pico de largura de banda é de 640 MB / s, pois requer alguns ciclos para transmitir endereços.

O controlador de interface do sistema suporta multiprocessamento simétrico sem cola (SMP) de até quatro microprocessadores. Os sistemas que usam o R10000 com lógica externa podem ser escalonados para centenas de processadores. Um exemplo de tal sistema é o Origin 2000 .

Fabricação

O R10000 consiste em aproximadamente 6,8 milhões de transistores, dos quais aproximadamente 4,4 milhões estão contidos nos caches primários. A matriz mede 16,640 por 17,934 mm, para uma área da matriz de 298,422 mm 2 . É fabricado em um processo de 0,35 µm e embalado em 599 blocos de cerâmica Land Grid array (LGA). Antes do R10000 ser apresentado, o Relatório do Microprocessador , cobrindo o Fórum do Microprocessador de 1994, relatou que ele era empacotado em uma grade de pinos de cerâmica de 527 pinos (CPGA); e que os fornecedores também investigaram a possibilidade de usar um módulo multi-chip de 339 pinos (MCM) contendo a matriz do microprocessador e 1 MB de cache.

Derivados

O R10000 foi estendido por vários derivados sucessivos. Todos os derivados após o R12000 têm sua frequência de clock mantida o mais baixa possível para manter a dissipação de energia na faixa de 15 a 20 W, de modo que podem ser compactados nos sistemas de computação de alto desempenho (HPC) da SGI .

R12000

Die shot NEC VR12000.

O R12000 é um derivado do R10000 iniciado pela MIPS e completado pela SGI. Foi fabricado pela NEC e Toshiba. A versão fabricada pela NEC é chamada de VR12000. O microprocessador foi lançado em novembro de 1998. Ele está disponível em 270, 300 e 360 ​​MHz. O R12000 foi desenvolvido como uma solução temporária após o cancelamento do projeto "Besta", que pretendia entregar um sucessor para o R10000. Os usuários do R12000 incluem NEC, Siemens-Nixdorf , SGI e Tandem Computers (e posteriormente Compaq, após a aquisição da Tandem).

O R12000 melhora a microarquitetura R10000 ao: inserir um estágio de pipeline extra para melhorar a frequência do clock resolvendo um caminho crítico; aumentando o número de entradas na tabela de histórico de ramos, melhorando a previsão; modificar as filas de instruções para que elas levem em consideração a idade de uma instrução enfileirada, permitindo que instruções mais antigas sejam executadas antes das mais novas, se possível.

O R12000 foi fabricado pela NEC e Toshiba em um processo CMOS de 0,25 µm com quatro níveis de interconexão de alumínio . O novo uso de um novo processo não significa que o R12000 era um encolhimento de matriz simples com uma microarquitetura ajustada; o layout da matriz é otimizado para aproveitar as vantagens do processo de 0,25 µm. O VR12000 fabricado pela NEC continha 7,15 milhões de transistores e media 15,7 por 14,6 mm (229,22 mm 2 ).

R12000A

O R12000A é um derivado do R12000 desenvolvido pela SGI. Introduzido em julho de 2000, ele opera a 400 MHz e foi fabricado pela NEC em um processo de 0,18 µm com interconexões de alumínio .

R14000

O R14000 é um desenvolvimento adicional do R12000 anunciado em julho de 2001. O R14000 opera a 500 MHz, habilitado pelo processo CMOS de 0,13 µm com cinco níveis de interconexão de cobre com o qual é fabricado. Ele apresenta melhorias para a microarquitetura do R12000, suportando SSRAMs de taxa de dados dupla (DDR) para o cache secundário e um barramento de sistema de 200 MHz.

R14000A

O R14000A é um desenvolvimento adicional do R14000 anunciado em fevereiro de 2002. Ele opera a 600 MHz, dissipa aproximadamente 17 W e foi fabricado pela NEC Corporation em um processo CMOS de 0,13 µm com sete níveis de interconexão de cobre.

R16000

O R16000, com o codinome "N0", é o último derivado do R10000. É desenvolvido pela SGI e fabricado pela NEC em seu processo de 0,11 µm com oito níveis de interconexão de cobre. O microprocessador foi apresentado em 9 de janeiro de 2003, estreando a 700 MHz para o Fuel e também usado em seu Onyx4 Ultimate Vision . Em abril de 2003, uma versão de 600 MHz foi introduzida para o Origin 350 . As melhorias são instruções de 64 KB e caches de dados.

R16000A

O R16000A refere-se a microprocessadores R16000 com taxas de clock superiores a 700 MHz. O primeiro R16000A é uma versão de 800 MHz, introduzida em 4 de fevereiro de 2004. Mais tarde, uma versão de 900 MHz foi introduzida, e esta versão foi, por algum tempo, a mais rápida R16000A publicamente conhecida - a SGI revelou posteriormente que havia R16000s de 1,0 GHz enviados para selecionados clientes. Os usuários do R16000 incluíram HP e SGI. A SGI usou o microprocessador em suas estações de trabalho Fuel e Tezro ; e os servidores e supercomputadores Origin 3000 . A HP usou o R16000A em seus servidores com tolerância a falhas NonStop Himalaya S-Series herdados da Tandem via Compaq.

R18000

O R18000 é um desenvolvimento adicional cancelado da microarquitetura R10000 que apresentava grandes melhorias pela Silicon Graphics, Inc. descritas no simpósio Hot Chips em 2001. O R18000 foi projetado especificamente para servidores e supercomputadores ccNUMA da SGI. Cada nó teria dois R18000s conectados por meio de um barramento multiplexado a um controlador de sistema, que faria a interface dos microprocessadores com sua memória local e o resto do sistema por meio de uma rede hipercubo.

O R18000 melhorou as filas de instrução de ponto flutuante e revisou a unidade de ponto flutuante para apresentar duas unidades de multiplicação-adição, quadruplicando a contagem de pico de FLOPS. A divisão e a raiz quadrada seriam realizadas em unidades separadas não pipeline em paralelo às unidades de multiplicação-adição. A interface do sistema e a hierarquia da memória também foram significativamente retrabalhadas. Ele teria um endereço virtual de 52 bits e um endereço físico de 48 bits. O endereço multiplexado bidirecional e o barramento do sistema de dados dos modelos anteriores seriam substituídos por dois links DDR unidirecionais, um endereço multiplexado de 64 bits e caminho de gravação e um caminho de leitura de 128 bits. Os caminhos podem ser compartilhados com outro R18000 por meio de multiplexação. O barramento também pode ser configurado na configuração SysAD ou Avalanche para compatibilidade com sistemas R10000.

O R18000 teria um cache secundário conjunto associativo de quatro vias de 1 MB para ser incluído na matriz; complementado por um cache terciário opcional criado a partir de SSRAM de taxa de dados única (SDR) ou de taxa de dados dupla (DDR) ou SDRAM de DDR com capacidades de 2 a 64 MB. O cache L3 teria suas tags de cache, equivalentes a 400 KB, localizadas na matriz para reduzir a latência. O cache L3 seria acessado por meio de um barramento de 144 bits, dos quais 128 bits são para dados e 16 bits para ECC. A taxa de clock do cache L3 seria programável.

O R18000 deveria ser fabricado no processo UX5 da NEC, um processo CMOS de 0,13 µm com nove níveis de interconexão de cobre . Ele teria usado uma fonte de alimentação de 1,2 V e dissipado menos calor do que os microprocessadores de servidor contemporâneos para ser compactado nos sistemas.

Notas

Referências