Dados gerais do MV / 8000 virtudes de “No mode bit”


10

Estou lendo "A Alma de uma Nova Máquina", de Tracy Kidder, onde uma equipe da Data General cria uma nova máquina (codinome "Eagle", mais tarde denominada MV / 8000). É uma extensão de 32 bits de uma arquitetura anterior (o Eclipse de 16 bits). Um dos temas rotativos parece ser que eles não querem criar uma máquina com um bit de modo e que conseguiram isso.

No entanto, deixa de fora como isso é tecnicamente alcançado, e também não explica por que era tão atraente criar uma máquina sem um pouco de modo. O livro não é um livro técnico, portanto os detalhes podem estar distorcidos. No entanto, você tem a sensação de ler esse livro que uma solução "mode bit" era comum (e, portanto, viável) na época, mas era considerada pouco atraente pelos engenheiros, talvez por razões estéticas. O livro também faz parecer uma tarefa imensamente difícil criar um design sem um pouco de modo, que de alguma forma foi superado por essa equipe em particular.

Encontrei esta descrição de como isso foi alcançado:

http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt

Parece ser basicamente sobre o uso de uma parte não utilizada anteriormente do espaço do código de operação para as novas instruções. Devo admitir que fiquei um pouco decepcionado por ter sido "apenas isso". Também acho que isso ainda deixa algumas perguntas sem resposta:

Primeiramente, como os processos de 16 bits residiam no espaço de endereço de 32 bits? Porque eu acho que esse é o principal desafio em criar uma extensão de 32 bits "sem um bit de modo". Estender o conjunto de instruções, por outro lado, é uma tarefa relativamente comum. Como não há descrição de como isso aconteceu, pode-se supor que o código de 16 bits simplesmente acesse a memória como sempre, talvez ele veja algum tipo de visualização virtualizada / banida da memória (com novos registros de CPU controlando onde está o primeiro endereço) ou algo parecido. Mas não sei se há mais do que isso. Nesse caso, alguém poderia argumentar que era uma solução "mode bit". Os processos no modo de 16 bits podem ser executados juntamente com os outros processos em virtude de recursos especiais adicionados à CPU.

Em segundo lugar, por que era tão atraente criar uma máquina sem um pouco de modo? Muitos dos benefícios apresentados no livro são que os clientes queriam executar software antigo. Mas isso não parece falar contra um bit de modo, pois todo o objetivo de usar um bit de modo é ter compatibilidade com versões anteriores. Quando a AMD estendeu o x86 para 64 bits, pelo menos de acordo com o meu entendimento da palavra "bit de modo", o que eles fizeram foi exatamente adicionar um bit de modo. Um bit especial que faria a CPU no modo de 64 bits. E outro bit que faria um processo ser executado em um "submodo" do modo de 64 bits (para habilitar a compatibilidade com aplicativos de 32 bits). A essência do submodo é que a CPU interpreta o fluxo de instruções como as instruções antigas de 32 bits, mas que os acessos à memória de 32 bits realizados são resolvidos usando o novo formato de tabelas de páginas (configurado pelo sistema operacional com reconhecimento de 64 bits) e, eventualmente, mapeado para o espaço de endereço físico completo. Além disso, o código de 32 bits pode ser impedido pelo código de 64 bits. Como a solução Data General, isso também permitia que um programa de 32 bits fosse executado em programas de 64 bits (16 bits vs 32 bits no caso do DG). Portanto, do ponto de vista do cliente, parece não haver nenhuma diferença. Portanto, o único benefício poderia ter sido a implementação, simplificando o design, mas o livro não parece que essa é a preocupação, uma vez que o bit de modo parece ser comum mesmo naquela época (e parece que as arquiteturas posteriores também empregado como mostra o caso x64).

Tenho certeza que há algo que eu perdi, então seria ótimo se alguém pudesse discutir mais sobre os detalhes técnicos e as virtudes desse design "sem modo de bits".


Naqueles dias - os dias de mudança do tamanho de palavra comum de 16 bits para 32 bits - a maioria das novas arquiteturas de 32 bits tinha conjuntos de instruções diferentes inteiramente da mesma linha de 16 bits do mfr - mesmo que eles também pudessem executar a instrução de 16 bits configurada com um "bit de modo". Isso levou à incerteza de marketing, pois as pessoas que atualizavam projetos para novas máquinas de 32 bits não viam razão para permanecer com o mesmo mfr - desde que fosse uma nova arquitetura, por que não escolher o melhor das novas máquinas a partir de qualquer mfr. A falta de "modo bit" sugeriu uma transição "incremental" mais fácil: Portanto, fique com o DG.
Davidbak

Respostas:


8

A resposta é que Ed deCastro, presidente da Data General Management, estabeleceu uma equipe de engenheiros na Carolina do Norte especificamente para projetar a próxima geração de CPU. Ele designou a tarefa de suporte e aprimoramentos incrementais para nós, a equipe de Massachusetts. Três vezes propusemos uma nova arquitetura importante, cada vez com um bit de modo muito sensível, e a descrevemos como uma melhoria incremental modesta. Cada vez, Ed via nosso disfarce e rejeitava a proposta, esperando que a equipe da Carolina do Norte fosse bem-sucedida. Ed acreditava que, independentemente de como tentássemos disfarçar nossas propostas, ele saberia que era uma arquitetura de nova geração se tivesse um pouco de modo. Então tivemos que propor uma arquitetura de nova geração sem bit de modo, mesmo que isso a tornasse menos eficiente. Foi assim que passamos por Ed deCastro. Veja a alma de uma nova máquina,


Olá Carl, obrigado pela informação, sim, também é a minha impressão (da leitura do livro) de que a discussão sobre o modo pouco foi sobre implicações políticas. Bom com informações privilegiadas - parece que o MV / 8000 foi um projeto muito interessante de se fazer parte.
Morty

6

Em teoria, "no mode bit" permitiria usar o sistema operacional antigo de 16 bits sem absolutamente nenhuma modificação e que o sistema operacional seria capaz de iniciar aplicativos de 32 bits, embora os novos aplicativos de 32 bits fiquem presos ao 16 bits de endereço virtual, seria possível usar os registradores de 32 bits e novas instruções, mas se comportariam mal se acessassem endereços virtuais maiores que .216

Com um bit de modo, o antigo sistema operacional de 16 bits teria que ser modificado para descobrir se o programa era de 16 ou 32 bits e, em seguida, defina o bit de modo adequadamente antes de iniciar o programa.

Na prática, parece que o MV / 8000 realmente tinha um pouco de modo. Em outra parte da página de Mark Smotherman em Clemson, ele publicou o Data General, ECLIPSE MV / 8000 Principles of Operation , 1980 . Se você procurar no Apêndice E (a partir da página 369), verá que o MV / 8000 tinha dois mecanismos de tabela de páginas completamente diferentes. A máquina específica com a qual o MV / 8000 era compatível com o anterior era o C / 350, e o C / 350 possuía uma Unidade de Proteção e Alocação de Memória específica de 16 bits, com maneiras específicas de controlar essa unidade. Para operação lógica-física de 32 bits, você ativaria a Unidade de Conversão de Endereço (descrita no Capítulo 3, iniciando na página 31).

Na prática, o que isso significa é que, quando você executa uma instrução de 16 bits no modo de 32 bits, é especificado que os 16 bits mais altos do endereço lógico são definidos como 0. Também deve haver alguma especificação sobre o que acontece com os valores mais altos. Um endereço de 16 bits quando você executa uma instrução de 32 bits no modo de 16 bits, mas não consegui encontrá-lo durante minha breve leitura do manual.

Portanto, é menos uma questão de saber se um bit de modo é bom ou ruim. É mais que não havia um motivo particularmente bom para usar um bit de modo para diferenciar entre instruções de 16 e 32 bits. As instruções de 16 bits usam 16 bits de endereço lógico (com 16 bits altos definidos como 0) e registradores de 16 bits, e as instruções de 32 bits usam 32 bits de endereço lógico e registradores de 32 bits. O sistema operacional antigo "simplesmente funciona" na nova máquina, mas você também pode experimentar as novas instruções executando um novo programa no sistema operacional antigo.


Oi OK, isso torna o objetivo com "no mode bit" mais claro - então o objetivo era poder inicializar o sistema operacional de 16 bits original, mas ainda assim iniciar um programa de 32 bits a partir daí. No entanto, como você disse, seria impossível usar o espaço de endereço lógico de 32 bits a partir de programas de 32 bits em execução nesse modo. De certa forma, é semelhante ao que a Intel fez com a transição de 16 bits para 32 bits. Aqui também foi possível executar instruções de 32 bits (acessando a parte superior dos registros) de dentro de um programa de 16 bits (executando, por exemplo, no MS-DOS). No entanto, ao mesmo tempo que eles tinham ...
Morty

... bits de modo para entrar no modo protegido "verdadeiro" de 32 bits (que também permite paginação). Uma diferença é que, no modo de 32 bits, a codificação das instruções de 32 bits é diferente da codificação das instruções de 32 bits no modo de 16 bits (já que o "padrão" é diferente), mas a capacidade é a mesma. Por outro lado, com a transição x86 para 64 bits, a codificação da instrução foi completamente alterada; portanto, um programa de 32 bits (ou um programa de 16 bits) não pode usar os registradores de 64 bits, etc. / s iniciando o processo no modo de 64 bits ("modo longo").
Morty

No entanto, ainda é possível questionar os méritos de enfatizar esse design de "nenhum modo de bit", pois primeiro existe um bit de modo, e parece ser um caso de esquina ("Executando o sistema operacional antigo e o novo aplicativo"), onde ele oferece qualquer benefício - a maioria dos clientes não gostaria de executar o novo sistema operacional, que pode tirar o máximo proveito do hardware? A característica importante aqui é que o novo sistema operacional pode executar os aplicativos antigos! Mas, como o link que eu enviei menciona, isso nem é possível, os programas exigem a vinculação e até a recompilação (devido a alterações nos o / s) que tornam a CPU compatível. aspecto discutível!
Morty
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.