Por que a CPU do MIPS tem 32 Register? [fechadas]

2

Por que a CPU do MIPS tem 32 registradores no arquivo de registro? Poderia ser mais ou menos? Qual é o impacto se modificarmos o tamanho do arquivo de registro?

    
por user306919 11.03.2014 / 19:34

3 respostas

1

O MIPS é uma arquitetura "RISC" ou "load-store".

A RAM costumava ser tão rápida quanto as CPUs. Então, as pessoas escreveriam programas que usariam RAM como armazenamento intermediário ou temporário. CPUs iniciais tinham apenas alguns registros devido a isso (ou seja, 6502, Z80 - o 6502 só tinha 3 registradores de propósito geral. Alguns processadores, como o TMS9900, usavam RAM como registradores). Isso fez com que as CPUs usassem menos transistores, o que significa que eles eram mais baratos, mais fáceis de obter bons rendimentos, mais fáceis de desenvolver (nenhum design de chip baseado em CAD nos anos 70 ...)

A RAM é tão rápida quanto a CPU deixou de ser verdadeira por volta de 1985 e só piorou.

O RISC passou a ser parcialmente para resolver isso (isso foi antes que o cache da CPU fosse comum ou grande como é hoje) - por ter um monte de registros, a RAM lenta pode ser evitada muito tempo para resultados de cálculos intermediários.

Reduzir os registros disponíveis significa que ele precisa ir para a RAM mais lenta com mais frequência para esse fim.

Não sei exatamente por que 32 foi selecionado como um "ponto ideal" - além dos 5 bits e sei que os opcodes MIPS têm 3 campos de 5 bits, o que significa que são fáceis de decodificar (outro atributo de "RISC" filosofia) - e é realmente 31 como o primeiro registro sempre retorna 0.

    
por 11.03.2014 / 20:51
0

Em um sistema com renomeação de registro, você pode variar o número de registros físicos e afetar apenas o desempenho.

Mas você não pode muito o número de nomes de registro sem criar uma arquitetura totalmente nova. Tente remover alguns nomes e os programas que usaram esses nomes falharão. Tente adicionar alguns nomes e a codificação de 5 bits não é mais suficiente para descrevê-los.

Você pode tentar usar truques como prefixos de instruções para expandir o conjunto de instruções para incluir instruções estendidas que aceitem mais ou diferentes nomes, enquanto mantém as codificações antigas intactas para permitir compatibilidade com versões anteriores. Não conheço ninguém fazendo isso com o MIPS, mas o AMD64 aka EM64T, também conhecido como x86_64, usou a abordagem "estenda com (principalmente) retrocompatibilidade" com base no x86.

    
por 11.03.2014 / 21:31
0

Não foi necessário, mas é um bom compromisso com outras decisões de design.

Então, primeiro, o comprimento da instrução no MIPS é de 32 bits (a maioria dos MIPS, existe uma versão de 64 bits). (Você pode ver muitos detalhes sobre como ele quebra aqui ). Em muitas instruções do MIPS, você precisa fornecer três registros, digamos, duas fontes e um destino (r4 = r2 + r4, por exemplo). A arquitetura MIPS permite que 5 bits especifiquem cada um desses registradores, e 32 é o número máximo que você pode representar com cinco bits, então não há nenhum ponto que lhe dê mais registros que você não possa acessar.

Se o MIPS permitisse que você tivesse 6 bits para selecionar um registrador, você poderia usar até 64 registros diferentes, mas esses bits extras teriam que vir de algum lugar, possivelmente reduzindo o número de operações ou modos de endereçamento.

Existem outras abordagens, alguns processadores usam troca de banco , que basicamente diz "Eu tenho esses 32 registros eu ' Estou usando agora, mas eu também tenho essa instrução SWITCH especial que me permite retirar esses outros 32 registros para usar por um tempo antes de voltar "é útil para certas aplicações, mas conceitualmente difícil para alguns outros.

    
por 11.03.2014 / 22:33