PDP-11

Um PDP-11 é um modelo de computador da linha PDP ( Programmable Data Processor ) construída pela Digital Equipment Corporation (DEC) entre 1970 e 1993 .

Todos os PDP-11s são de 16 bits e se enquadram na classe de minicomputadores . Eles eram extremamente populares porque combinavam modularidade, uma excelente relação qualidade / preço, e seu uso não se limitava a um único setor de aplicação: eles também eram encontrados em laboratórios de física para aquisição de dados, do que em firmas de contabilidade. Finalmente, o mundo acadêmico também adquiriu um grande número dessas máquinas.

Esta gama também é popular porque serviu como base para o desenvolvimento do Unix operacional do sistema ea linguagem C . A pré-incrementação (++ i) e a pós-incrementação (i ++) de C tornaram possível, em particular, explorar esta possibilidade da linguagem de máquina PDP-11.

Aconteceu também quando o IBM 1130 lançado em 1969, que equipou muitos laboratórios e escolas de engenharia ao redor do mundo, começou a envelhecer sem ter um sucessor proposto pela IBM. Além de sua enorme biblioteca contributiva de software livre, o 1130 não tinha nenhuma vantagem particular sobre o PDP-11 em termos de velocidade ou custo.

Como muitos outros, esse intervalo desapareceu porque seu espaço de endereço de memória era muito limitado (16 a 18 bits , 22 no máximo). Foi substituído pelo VAX , que significa Virtual Address eXtension , 32 bits. O VAX possui um modo de operação “PDP-11 compatível”.

Arquitetura

Autocarro

Os primeiros PDP-11s foram construídos em torno do barramento UNIBUS . Os modelos mais recentes, com o conjunto de instruções incluído em alguns chips, e chamados LSI-11 , são baseados no barramento (mais estreito) chamado Q-BUS .

Registros

O processador do PDP-11 possui 8 registradores , dois dos quais têm usos especiais: o registrador 7, o PC (para Program Counter ou program counter) e o registrador 6, o ponteiro da pilha (SP, para Stack Pointer ). Os outros registram R0, R1, ..., R5 e são de uso geral. O último registro é o registro de status.

15 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R0 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R1 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R2 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R3 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R4 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R5 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R6 (SP) | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R7 (PC) | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_____________________________________________________________/ registres (16 bits) 15 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | CM | PM | R | | PRI | T | N | Z | V | C | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_____________________________________________________________/ registre d'état(16 bits)

Os significados dos sinalizadores no registro de status são:

  1. N negativo
  2. Z Zero
  3. Estouro de V ( oVerflow )
  4. C ( carregar ) espera

Nem todos os modelos PDP-11 têm exatamente o mesmo tipo de registrador de status, o mostrado aqui corresponde aos modelos mais avançados.

Tipos de dados

Existem três classes:

byte (8 bits) palavra (16 bits) inteiro longo (32 bits, dois registros) precisão simples dupla precisão muitos formatos diferentes ...

Conjuntos de instruções

Existem três conjuntos de instruções possíveis:

  1. o conjunto de instruções PDP-11 padrão, cujas instruções podem ser classificadas em sete categorias:
    1. Operando único
    2. Operando duplo
    3. Conexão
    4. Saltos e sub-rotinas
    5. Escotilhas
    6. Instruções diversas
    7. Códigos de condição
  2. o conjunto de instruções para aritmética de ponto flutuante para computação científica (opcional)
  3. o conjunto de instruções para computação empresarial (opcional)

Cada instrução especifica uma operação a ser executada, possivelmente operandos (registradores, etc.) e um modo de endereçamento .

Formato de instruções

O PDP-11 define 7 formatos. Em todos os formatos descritos abaixo:

Interpretação do campo de modo

O campo de modo é mantido em 3 bits. Por exemplo, uma instrução de dois operandos contém dois campos de registro e dois campos de modo, cada um descrevendo como interpretar o campo de registro.

Se considerarmos apenas os bits mais à esquerda (o terceiro é o bit de indireção, veja abaixo):

O bit mais à direita do modo é o bit de indireção: se este bit for um, o endereçamento será indireto:

Observe que não há modo “imediato”: isso é feito usando o modo 2 (incremento automático). De fato, o PC aponta para a palavra que segue a instrução, e a pós-incrementação a faz passar para a próxima instrução após o valor imediato após a instrução sendo executada ser carregado pelo processador.
Usar o PC como um registro, portanto, cria 4 novos modos:

Os modos de endereçamento pós-incrementado e pré-decrementado serão usados ​​em particular em associação com o ponteiro da pilha SP: - (SP) permitindo empilhar e (SP) + desempilhar.

Instruções para um operando

15 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_____________________/ destination

Exemplo: CLR (R0) 005010

Instruções de dois operandos

15 11 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération| mode | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_____________________/ \_____________________/ source destination

Exemplo: ADD R0, (R1)

NB: algumas instruções (ASH, ASHC, MUL, DIV) podem ter apenas um registro como fonte, neste caso o código de operação se estende do bit 9 ao bit 15:

15 11 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ \_____________________/ source destination

As conexões

15 8 7 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération| | déplacement | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

O campo de deslocamento é sinalizado, permitindo, portanto, um deslocamento de -128 a +127 bytes.

Os saltos e chamadas / retornos de sub-rotinas

Para a instrução JSR (Jump to Subroutine):

15 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ \_____________________/ lien destination

Para a instrução RTS (Retorno da Subrotina):

15 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ lien

Armadilhas e interrupções

EMT, TRAP, BPT, IOT, CSM, RTI, RTT: nenhum formato específico.

Códigos de condição

CLC, CLV, CLZ, CLN, CCC, SEC, SEV, SEZ, SEN, SEC: nenhum formato específico.

15 5 3 2 1 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | O | N | Z | V | C | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

Instruções diversas

HALT, WAIT, RESET, MTPD, MTPI, MFPD, MFPI, MTPS, MFPS, MFPT: nenhum formato específico.

Conjunto de instruções de números flutuantes

Esta opção é chamada FPP ou FP-11 , FP para Ponto Flutuante . Ele adiciona 6 novos registradores de 64 bits (duas vezes 32) para os cálculos, bem como alguns outros especializados (como um registrador de status). A operação do processador flutuante é diferente do processador padrão do PDP-11: além de um ligeiro atraso quando o processador flutuante busca a instrução na memória, os dois processadores calculam independentemente.

Este novo conjunto de instruções está disponível alterando o microcódigo .

Conjunto de instruções de gestão

Chamado CIS, para Commercial Instruction Set , este conjunto de instruções focado principalmente no gerenciamento de cadeias de caracteres é projetado para acelerar as operações normalmente exigidas por programas de gerenciamento (escritos em COBOL, por exemplo).

Permite a conversão da representação de números na forma de caracteres em valores binários (e vice-versa) ou cálculos diretamente em representações de "string de caracteres".

Simuladores

Sistemas operacionais

Notas e referências

Apêndices

Artigos relacionados

links externos