Imortalidade Digital - Internet Síncrona

Proponho continuar o tópico iniciado no artigo anterior (https://habr.com/en/post/489068/). Se, de fato, ela se entregou a sonhos do tipo em que tudo vai ficar bem (ou depende muito do tipo de pessoa) quando a singularidade tecnológica e a imortalidade digital chegarem no ano 20XX, então, neste e nos artigos seguintes, tentarei fazer todo o possível para garantir um futuro feliz (singularidade) veio mais rápido, ou seja, para criar um paradigma computacional para o processador de quinta geração (lembre-se de que havia algumas linhas sobre isso).

Vou usar "copyright" e nomear o paradigma de computação criado "Rutel".

Vamos tentar descobrir: existe realmente uma necessidade de algo radicalmente novo ou o velho von Neumann pode ser "xamânico" e suficiente? Os japoneses estavam pegando fogo: enquanto tentavam criar uma nova arquitetura e um processador paralelo, as tecnologias de produção dos processadores seriais convencionais melhoraram. Eles melhoraram tanto que todos os parâmetros esperados para um processador paralelo em uma série regular foram alcançados.

Atualmente, a probabilidade de repetir esse cenário é baixa por vários motivos:

  • Os atrasos arquitetônicos existentes já foram esgotados (obras de Lebedev e outros);
  • Os tamanhos dos transistores já são comparáveis ​​às moléculas;
  • A dissipação de calor praticamente não diminui com a diminuição dos padrões tecnológicos;
  • Aumentar a frequência do processador não melhora o desempenho.

Os desenvolvedores da tecnologia de computadores não têm idéias, exceto um aumento banal no número de núcleos em um sistema de computador. Eu acho que essa abordagem não é produtiva para sistemas que não são baseados no conceito de "computação paralela". E o pensamento lógico (seqüencial) de uma pessoa (programador) também não brilha com paralelismo.

Dados os problemas identificados, vamos definir os requisitos atualmente apresentados para sistemas de computação promissores:

  1. Paralelismo
  2. Distribuição
  3. Resolvendo o problema da complexidade.
  4. Tolerância ao erro.

A criação de qualquer dispositivo é feita em resposta a qualquer necessidade. A moderna tecnologia de computador foi criada em resposta à necessidade de grandes quantidades de computação científica e de engenharia. Atualmente, o principal uso da tecnologia da computação é a “computação”, a “revitalização” de vários modelos virtuais, alguns deles são modelos simplificados de objetos do mundo físico real, outros são geralmente completamente virtuais e ao mesmo tempo interagem com o mundo externo através de várias interfaces.

A transferência da personalidade de uma pessoa para esse sistema também é uma necessidade moderna.

O paradigma computacional de Von Neumann é inerentemente avançado e poderoso o suficiente, mas ainda uma calculadora. A base da moderna tecnologia de computação é a "imitação" do pensamento lógico de uma pessoa (nota: apenas o pensamento lógico, e não a estrutura do cérebro como um todo), mas não se destina a simular o mundo circundante. O pensamento lógico de uma pessoa é um processo mental de alto nível e é fundamentalmente consistente. Pense na frase: uma linguagem de programação. A linguagem de programação, a base da interação com um sistema de computador, está logicamente conectada a uma parte do corpo humano e herda muitas de suas características.

Como exemplo, tente dizer duas frases ao mesmo tempo. Sim, e ouvir totalmente duas pessoas ao mesmo tempo (especialmente com vozes semelhantes) não funciona.

Como tarefa principal , deve-se assumir a tarefa de manter ou "revitalizar" os objetos do mundo virtual. O mundo virtual, que contém os dois modelos de objetos do mundo real, juntamente com as conexões (através de vários sensores e manipuladores), e os modelos que não possuem análogos. No limite, o “novo paradigma computacional” não deve ser considerado como outra ferramenta para resolver problemas imediatos, mas como um conjunto de dimensões adicionais para o nosso mundo físico. Quero observar que uma pessoa (como um todo) é um sistema biológico que resolve exatamente o mesmo problema; portanto, para transferir a personalidade de uma pessoa, será necessário um sistema com a mesma ou maior funcionalidade.

Por onde começar?


Naturalmente, você precisa começar com a postulação das propriedades do espaço virtual. A tecnologia de computação atual é representada pelo espaço unidimensional (espaço de endereço infinito). Mas isso não é suficiente para modelar um mundo tridimensional (+ tempo), que constantemente gera problemas que exigem “muletas” para sua solução.

Vou dar exemplos dos problemas inerentes ao paradigma da computação moderna:

  1. Após a localização do objeto na memória, é impossível alterar seu tamanho sem recriar. Você precisa usar o endereçamento indireto, resolver problemas de desfragmentação e alocação de memória. Problemas com estouros de pilha e vários buffers.
  2. Não há conceito de falta de dados no sistema de apresentação de dados, qualquer lixo na memória física é legítimo, o que causa erros.
  3. Não há conceito de outro sistema de computação (objeto), existe apenas uma "fita" de memória e um autômato que a modifica. Essa abordagem gera problemas com a interação de tarefas, mesmo dentro do mesmo processador (as tarefas são executadas sequencialmente) e, se mais de um sistema de computador precisar interagir, as “muletas” atingem proporções épicas.

Esses exemplos são apenas para entender que a maioria dos grandes problemas está no cerne do paradigma computacional, nos elementos "tijolos" mais simples. Esses "tijolos" em algum momento não desejam formar uma única estrutura e todo o "edifício" entra em colapso.

Postulados (eles serão reabastecidos e depois reduzidos a vários básicos):

  1. «», «» .
  2. «» . «» ( ) «» «» «». , «» .
  3. .
  4. , «» « » «», .

Resumidamente, o espaço virtual é uma espuma multidimensional de bolhas em contato entre si.

Esses postulados permitem criar qualquer sistema (conjuntos de objetos em interação) do mundo real (físico) ou virtual. Exemplo: acesso a um endereço através do objeto "memória" usando a dimensão "endereço" e pode haver qualquer número desses espaços de endereço. Os objetos endereçados possuem dimensões adicionais correspondentes a diferentes espaços de endereço. Objetos "memória" na forma de objetos físicos podem não existir (modelo puramente virtual).

Ponto importante: os postulados não indicam a localização dos objetos, a presença e o dispositivo de armazenamento, mesmo o conceito de espaço de endereço não é (muito menos um único). Tudo o que se pode dizer é a presença potencial do espaço (uma "bolha"); só se pode convencer da presença da própria bolha pela presença de um "contato". Dentro da "bolha", tudo o que pode ser "numerado" é o ponto de contato. Se não houver contatos, eles serão completamente independentes e, teoricamente, não afetarão um ao outro os sistemas, mas, ao mesmo tempo, todos estarão na "bolha" original e poderão começar a interagir no futuro.

Para a tarefa de transferência de personalidade, o cérebro digital parecerá uma bolha comum, incluindo 100 bilhões de bolhas, que contém um objeto que emula um neurônio ou um objeto de comunicação com o cérebro biológico. Visualmente, pode-se até imaginar esticar (deformação da projeção da "bolha" no espaço tridimensional) de fios (axônios de dendritos) até os pontos de contato.

A implementação do sistema de comunicação no paradigma criado


Cuidado

Todas as idéias e algoritmos descritos neste artigo são o resultado de minha atividade intelectual independente e completamente independente. Como autor, eu autorizo ​​você a usar, modificar, complementar todas as idéias e algoritmos a qualquer pessoa ou organização em qualquer tipo de projeto, com a indicação obrigatória de minha autoria.

Para o paradigma moderno, perceber o espaço como um anel unidimensional é bastante simples: endereço, dados para "escrever" - "ler" e sinais "ler" - "escrever". Para um paradigma com uma "bolha" multidimensional, é necessário criar um sistema de comunicação para "todos com todos" (no limite), é claro, na realidade isso é impossível. A maioria dos objetos será conectada através de nós intermediários. A distribuição do “alcance da comunicação” terá um “tipo normal”, quanto menor a distância entre os nós, maior o número dessas conexões (a lógica e o senso comum ditam a necessidade de marcar os objetos em interação o mais próximo possível um do outro). A base de um sistema de comunicação com nós intermediários é um algoritmo para multiplexar (dividir) um canal de comunicação entre várias fontes.

A princípio, é melhor dar uma explicação simplificada do princípio de operação do algoritmo de multiplexação do canal de comunicação física.

Os dados transmitidos podem ser representados como uma "dispersão" de contas (cada conta é única e a sequência não pode ser alterada), que deve ser transmitida através de um tubo com um diâmetro igual ao diâmetro da conta. Se houver uma fonte de contas, não haverá problema de acesso ao "tubo de telecomunicações", que fica na posse exclusiva. Se houver muitas fontes de contas, elas poderão colidir na entrada do "tubo" e, mesmo na saída das contas, você precisará separá-las em caixas separadas.

O algoritmo proposto (por exemplo, barramento) tem a seguinte aparência:
  • amarre as contas de várias fontes em fios elásticos e corrija (um fio separado para cada fonte)
  • , , ( ). , .
  • , .
  • ( )
  • ( )
  • : , ( ).
  • , (, ), , .
  • , ( ).

Se no momento em que era necessário colocar o cordão no tubo, o cordão ainda não havia sido transferido através do tubo de entrada e a tremonha estava vazia, para garantir a exclusividade do algoritmo de classificação, é necessário colocar um cordão “vazio” especial. No lado receptor, um cordão vazio não será colocado na tremonha, mas simplesmente descartado.

A seguir, será apresentado um texto direcionado aos profissionais de telecomunicações.
Devido ao desejo de cobrir todos os aspectos do paradigma das telecomunicações, o texto acabou sendo um pouco confuso e inchado. O que requer uma leitura cuidadosa, pode haver termos imprecisos e erros lógicos (ficarei grato pelas correções).

Há um problema com a dificuldade de perceber o texto, quero complementar a descrição com figuras, mas não tenho a capacidade de desenhar lindamente. Se alguém quiser arcar com esse fardo, ficarei muito agradecido. Em resposta, só posso oferecer uma nota de autoria em cada figura.

Avançar para quem não tem medo


Estado atual das redes de transmissão de dados.

As redes modernas de transmissão de dados são projetadas para uma intensidade de conexão relativamente baixa (o número de canais ou mensagens individuais) e, ao mesmo tempo, requisitos simultâneos enfraquecidos são impostos à estabilidade de tempo, velocidade de entrega, tempo de criação de um canal virtual, tempo necessário para usar um caminho de transferência de dados de backup e porcentagem máxima de utilização da largura de banda do canal físico . Uma rede de dados construída com base em tais princípios não cumpre criticamente os requisitos propostos pelo novo paradigma da computação. Para entender a escala do aumento esperado nos requisitos de tráfego e velocidade, você pode pegar a quantidade e a velocidade dos dados transmitidos através da pilha do processador e os dados associados na memória (os ponteiros costumam passar pela pilha) e multiplicar pelo número de núcleos de computação de um supercomputador típico.Esses requisitos serão a barra inferior de requisitos para a rede de dados.

Um sistema de computação distribuído é um grande número de módulos (blocos) de computação interconectados (participando de cálculos conjuntos) que geram, no caso geral, um grande número de conexões de curto prazo. As conexões requerem velocidades de transmissão mais altas combinadas com latência baixa e estável e entrega garantida.

Os requisitos apresentados à rede de transmissão de dados da perspectiva de um sistema de computador distribuído (distribuído), cujo desempenho de todo o sistema depende, em última análise, da implementação.

  • Tempo de criação de canal virtual extremamente curto. O tempo de criação do canal virtual deve ser comparável ao tempo de preenchimento do buffer local do transmissor (roteador).
  • .
  • . , , .
  • .
  • , . () .
  • (90% ).

Idealmente, um sistema de comunicação requer a conexão direta de cada componente do sistema com cada um, mas, na realidade, isso é impossível e é necessário transmitir dados através de nós intermediários. Em cada nó dessa rede, há um comutador conectado a vários dos mesmos nós usando linhas de comunicação compartilhadas (em canais virtuais). A base desse sistema de comunicação são algoritmos para multiplexar (dividir) um canal físico em um grande número de canais virtuais e transferir dados entre canais virtuais em vários canais físicos.
Os algoritmos (principais) atualmente usados ​​(hierarquia síncrona e sistema de transmissão de pacotes de dados) dessa separação (multiplexação) do canal físico não cumprem criticamente os requisitos apresentados.

Os canais criados pelos métodos de hierarquia síncrona (SDH) têm excelente desempenho em termos de estabilidade da velocidade de transmissão, falta de colisões e efeito da utilização do canal nesses parâmetros. Ao mesmo tempo, o atraso da transmissão deixa muito a desejar (opera com contêineres de tamanho suficiente) e não há flexibilidade nos parâmetros dos canais criados. Para uma operação ideal da rede de computadores, são necessários tempos de atraso (isto é, tempos de transferência de dados), que devem ser determinados por dois parâmetros: distância física (comprimento do cabo) e ser proporcional à taxa de transferência de dados solicitada. Os comutadores devem poder suportar simultaneamente um grande número de canais virtuais (até milhões ao mesmo tempo) com um tempo de comutação constante. Além disso, os canais (SHD) não têm flexibilidade suficiente na velocidade dos canais criados,e o tempo necessário para criar um canal virtual geralmente é uma imagem triste (precisamos de tempos comparáveis ​​ao tempo de atraso da transmissão).

O uso de comutação de pacotes não faz sentido (quando usado de forma canônica), nem um único requisito é cumprido (para um sistema de computação suficientemente grande). O tempo de criação do canal é parcialmente executado apenas no lado do transmissor, não é fornecido o trabalho com um grande número de rotas possíveis em tempo real, você não pode criar uma tabela para todas as opções de conexão (tamanho e custos administrativos muito grandes). O atraso garantido para a transmissão de dados por pacotes é impossível em princípio. A regulação da velocidade de transferência de dados e o acesso garantido são possíveis apenas através da largura de banda de reserva, o que não é possível com um grande número de canais virtuais. As perdas de dados (colisões) estão fundamentalmente presentes na transmissão de pacotes (para valores reais de buffers no comutador).Todos os problemas de transmissão de dados por pacote são exacerbados significativamente ao se aproximar da capacidade máxima do canal físico.

Conclusão : Para a operação ideal de um sistema de computação distribuído, é necessário um novo paradigma de construção de um sistema de transferência de dados.

A base do sistema de transmissão de dados é um método (algoritmo) para dividir um canal físico no número necessário de canais virtuais e maximamente síncronos para construir um canal virtual de ponta a ponta entre o receptor e o transmissor. De acordo com os resultados de uma análise preliminar da situação, o mais ideal é o algoritmo SDH. Para superar as desvantagens inerentes aos DSS, é necessário “redesenhar” esse sistema. O algoritmo SDH é em grande parte uma continuação das idéias incorporadas no PDH, que cresceram a partir de sistemas de telefonia fixa. Para um sistema de computação distribuído, a presença de um quadro com uma duração de 125 μs, bem como a divisão em muitos canais com o mesmo desempenho (e a hierarquia com sincronização de ponta a ponta também) é uma restrição absolutamente sem sentido (para a telefonia, tudo isso foi a base do básico).Para o sistema de computação "TK", o nível mais baixo do sistema de transferência de dados será o seguinte:

Divida o fluxo de origem em um determinado número de canais de dados virtuais, com uma determinada taxa de bits para cada canal.

Para garantir a transferência da carga útil do canal de entrada para o canal de saída, use um buffer de dados com um tamanho tendendo a um caractere.

Não há requisito explícito para a presença de um quadro de tamanho constante ou variável e é aconselhável não introduzi-lo, mesmo como um meio de determinar o período de tempo em que a lista de canais virtuais (na qual o canal físico está dividido) é constante. Se você introduzir o conceito de um quadro, a criação de um canal adicional exigirá tempo, determinado pelo tamanho do quadro. Se nenhuma ação adicional for tomada, o atraso na criação de um novo canal será, em média, metade do tempo do quadro vezes o número de comutadores de trânsito, o que aumentará drasticamente o tempo para a criação de novos canais virtuais (e exclusão dos antigos).

Como dividir um único canal físico em um número arbitrário de canais virtuais separados com uma taxa de transmissão arbitrária, sujeito à regra da soma das velocidades (a soma das velocidades dos canais virtuais mais o custo de administração dos canais não deve exceder a velocidade do canal primário)?

Além disso, o requisito de sincronismo, tempo igual entre as partes de dados transmitidas individuais, é apresentado aos canais que estão sendo criados, o que garante o tamanho mínimo dos buffers. O requisito de um tamanho mínimo de buffer decorre da incapacidade de organizar um buffer fora do cristal do comutador. Tente armazenar em buffer um fluxo de 100G (400G) ou mais e, se houver dez ou cem desses fluxos, mesmo uma desigualdade mínima sobrecarregará a memória de qualquer tamanho razoável, e a taxa de transferência de uma RAM típica é menor que a velocidade de um mesmo fluxo. Se você deseja criar um canal virtual (ou vários canais com a mesma velocidade de transmissão), não há problema (SDH), mas ao criar dois ou mais canais com taxas de transferência de dados diferentes, podem ocorrer conflitos,ao mesmo tempo, é necessário transmitir dados pertencentes a vários canais virtuais. Para satisfazer os requisitos de um sistema de transmissão de dados, modificaremos o algoritmo de multiplexação SDH.


  1. .
  2. — . , ( ), . : , ().

    . ( ). (, , , ). ( ) , , , . . . 100 , . ( ) (), . ( ), .
  3. ( ) «», . , . . , .
  4. «» ( ) . ( ) .
  5. . .
  6. , ( ) ( ).
  7. . ( ) «». , ( ), , FIFO . , , ( ). «» ( ), FIFO .

    , ( ), . «» - . , « ». « », «» FIFO . , ( ). , , — , , ( ). ( )
  8. 32 (24) 64 /, E1(T1). , PHD .
  9. . ( 100) ( ). 106 . 120 . 2.5 ( ) ( ).. ( .)
  10. ( ) , ( ) «» « », ( ). . «» « », .
  11. , « » ( ), « ». « », . .
  12. ( ) ( ). . « » , () . « » , . , ( ). , () . , , . , , .

Após a transmissão através de um canal físico, o fluxo total deve ser desmontado não apenas devido à reorganização dos canais virtuais entre os canais físicos, mas também devido à necessidade potencial de adicionar ou remover caracteres "sem dados" (só é possível ao escrever ou ler caracteres no buffer). A "edição" parcial ou a substituição de dados não faz muito sentido. Você pode adicionar a capacidade de criar um fluxo total que não é compreendido nos comutadores intermediários - um túnel (ele não entenderá os componentes nos comutadores intermediários). É possível criar um “túnel” virtual se você criar um fluxo de resumo usando símbolos de serviço alternativos (o algoritmo permanece o mesmo, cada nível de túnel exige seu próprio conjunto de símbolos de serviço) e depois transfere o fluxo de resumo resultante como um canal virtual comum.No lado receptor, é necessário um procedimento adicional para desmontar esse canal em seus componentes (o número de análises é igual ao nível do "túnel"). Criar “túneis” é benéfico devido à diminuição no número de canais virtuais e, consequentemente, os buffers necessários nos comutadores intermediários (e o atraso de comutação proporcional à velocidade do canal virtual será menor). O número de buffers limita o número de canais virtuais que passam pelo switch simultaneamente. Qualquer canal físico (para recepção ou transmissão) pode usar qualquer buffer (os buffers são um recurso comum), o que aumenta o coeficiente de uso.Fisicamente, o buffer é um pequeno FIFO para armazenar vários caracteres (até 10 e é determinado pelo tempo necessário para criar um novo canal virtual e a desigualdade máxima do tempo de transferência de dados) com o número de interfaces de leitura e gravação iguais ao número de módulos que coletam ou desmontam o canal total neste comutador (todos físicos e canais virtuais), enquanto houver garantia de não mais de uma chamada por ciclo de clock. O período da sincronização do relógio dos buffers coincide com a frequência de recepção e transmissão de caracteres. Se você tiver um canal de banda larga e um grande número de canais menores, poderá atribuir caracteres grandes a um canal rápido e gravar vários dados em buffers de uma só vez (ou outra opção). A arquitetura descrita é muito bem em cascata.Existem muitas opções de configuração e é necessário buscar o compromisso ideal.

Ao construir uma rede de comunicação dentro de um único chip, os módulos transmissores se transformarão em dois registros (um no lado do transmissor e outro no lado do receptor), o algoritmo em si não será alterado. Se as velocidades e a composição dos canais criados forem constantes, o tamanho do hardware do switch poderá ser bastante otimizado.

No total, a rede de transmissão de dados consiste em comutadores e cabos de comunicação entre suas portas. O objetivo da rede é fornecer dados do cliente com a mais alta qualidade possível. O cliente se conecta à rede através de um dispositivo semelhante a um comutador regular, cuja característica distintiva é a capacidade de acessar os buffers de dados pelo hardware do próprio sistema de computação e seu tamanho maior. Assim que os dados recebidos do canal virtual criado forem gravados no buffer do comutador conectado ao sistema de computador (para recepção), o mecanismo (semelhante à interrupção no sistema de computador usual) deve ser ativado, aguardando que as informações apareçam o suficiente para determinar o serviço chamado e o software correspondente será conectado para manter esse buffer.A diferença da "placa de rede" moderna é a capacidade de criar um grande número de canais paralelos (acesso paralelo à rede de dados), o que remove a fila interna de pacotes de (para) a rede para (de) um grande número de núcleos de computação (threads). Automação do lançamento de "manipuladores de dados".

A criação de um canal pode ser dividida em dois estágios: administração (busca de rota, atribuição de velocidade, permissão de acesso etc.) e a criação direta de um canal virtual (quando a transferência de dados é necessária). O primeiro estágio é realizado relativamente raramente (a rede é relativamente estática) e isso pode ser feito com antecedência no estágio de inicialização do aplicativo. O segundo estágio deve ser executado o mais rápido possível, é este estágio que determina o desempenho da rede de dados e o desempenho de todo o sistema de computação distribuído.

A criação e exclusão direta de um canal virtual (todos os dados necessários são preparados no primeiro estágio) devem ocorrer na velocidade mais alta possível. É mais correto dizer que a criação do canal e a transmissão de dados devem ocorrer simultaneamente.

O algoritmo deve ter a seguinte aparência: no momento inicial, o canal virtual ainda não existe (a primeira parte dos dados é gravada no buffer associado à fonte de dados), o multiplexador não alocou parte da largura de banda do canal físico para ele, existem apenas canais de serviço e você precisa decidir qual um novo canal virtual será criado a partir dos canais físicos. Quando uma quantidade suficiente de dados aparece no buffer para criar um canal virtual (direção e velocidade requerida, eles são selecionados na lista de alternativas), é necessário formar e enviar (usando o canal de serviço) um pacote de dados com uma solicitação para criar um canal virtual no canal físico desejado. Pacote com a solicitação e os parâmetros do canal virtual criado,passando pelo dispositivo de síntese do canal total do transmissor e analisando o canal total do receptor do canal físico selecionado, altera a composição da tabela de canais virtuais do receptor e do transmissor. O pacote com os parâmetros deve conter o símbolo de serviço "adicionar canal", após o qual o controlador começa a transmitir o fluxo total com o novo canal virtual adicionado a ele. No momento da adição de um novo canal virtual, a amostragem de dados do buffer é iniciada e os caracteres do canal virtual criado são enviados para o lado do roteador selecionado. Um novo canal é criado sem notificar o switch remoto, com base apenas na largura de banda livre do canal físico local. O desempenho do canal criado é sempre menor que o desempenho inicial do canal de serviço (parte livre do canal físico),um novo canal é criado separando parte do recurso do canal de serviço. Ao processar (receber de um canal físico) um pacote com uma solicitação para criar um novo canal virtual, é necessário determinar em qual dos buffers disponíveis (gratuitos) começaremos a salvar os dados do novo canal no tempo restante antes de receber o símbolo "adicionar canal". É impossível salvar a solicitação na memória e processá-la posteriormente, a composição do fluxo total mudará imediatamente após o recebimento do símbolo "criar um canal" (ou com um atraso conhecido) e o fluxo total contendo os símbolos do canal virtual criado começará a ser recebido, o que destruirá o processo de decodificação do fluxo total (se a lista de canais no receptor Não mudará). O tempo para calcular o número do canal físico de saída para o qual é necessário começar a enviar dados do buffer alocado,deve ser mínimo (determinado pelo tamanho do buffer), o que significa que os dados de velocidade e rota já devem estar no cabeçalho do pacote com uma solicitação para criar um novo canal virtual (basicamente não há tempo para acessar a tabela na memória externa).

A formação de um pacote com uma solicitação é possível somente após o recebimento de todos os dados necessários sobre a direção da comutação e a velocidade do canal criado. Os buffers de canal virtual no comutador devem ter tamanho pequeno, o que significa que esses dados (número de velocidade e porta no próximo comutador) devem estar no início dos dados transmitidos, mas o tamanho do buffer atual permitirá que todos os dados subsequentes sejam salvos até a formação de um novo canal total sem excesso. Após a formação do pacote com a solicitação, é necessário excluir o símbolo com dados no número do canal físico que leva ao próximo comutador (se a rota for especificada especificando a sequência de portas do comutador). Para fechar o canal virtual, não há necessidade de encaminhar o pacote usando o canal de serviço,basta colocar o símbolo de serviço "excluir canal" nos dados transmitidos do canal excluído. No momento de receber o símbolo "excluir canal" pelo módulo de síntese de canal multiplex, o canal virtual correspondente é excluído e o canal de resumo atualizado gerado não contém mais o canal virtual remoto. Para remoção automática (limpeza), prevenção de "vazamento" do desempenho de um canal físico, é necessário integrar nos buffers de hardware dos canais virtuais, um contador do número de caracteres transmitidos (qualquer um) e ao atingir um determinado valor (tempo limite) transmite automaticamente o símbolo "fechar canal". Para prolongar a vida útil do canal virtual, você pode inserir o símbolo "redefinir contador" adicionado aos dados. O comutador local pode ignorar a extensão da vida útil do canal,qual será a resposta para a falta de capacidade do canal físico. Se durante a criação de um canal virtual, ele deve ser alternado para um canal físico com falta de largura de banda livre, a velocidade do canal de serviço não é suficiente para criar um novo canal virtual ou não há buffers livres ou outro motivo, o pacote de solicitação deve ser destruído. Mais corretamente, ele é redirecionado para o módulo stub, que receberá todos os caracteres do canal virtual com falha e gerará todas as mensagens necessárias para o lado da transmissão (essas mensagens são transmitidas usando o canal de serviço). Não considero a opção com buffer devido à complexidade da implementação. Essa abordagem é ideal para canais de curta duração,para eles, o tempo limite de entrega é mínimo e não afetará muito o desempenho geral devido às repetições da criação de um canal virtual. Se o canal foi criado com sucesso, tudo o que pode acontecer é distorção de dados devido à interferência no equipamento. Ao contrário da rede existente (Ethernet), é necessário não apenas enviar um pacote, mas também garantir que ele seja construído com êxito até o destinatário, já no nível mais baixo de serviço. O envio de dados "para lugar nenhum" geralmente não satisfaz ninguém, e verificar a entrega de dados aguardando uma mensagem de resposta é muito "desagradável" devido ao tempo desconhecido necessário. Enviando uma notificação sobre a construção de um canal usando um canal de serviço, uma operação que não requer recursos particularmente grandes.Você pode implementar outra opção - criar imediatamente um anel combinando a fonte e o receptor dos dados transmitidos (o pacote é executado imediatamente em um círculo na sua totalidade ou um pacote de resposta é formado pelo comutador no lado de recebimento). Você pode gerar uma notificação (se houver uma falha na criação do canal) em cada comutador intermediário, para que o transmissor saiba o mais rápido possível sobre a impossibilidade de criar o canal. Se você realmente não deseja retransmitir dados quando é impossível criar um canal virtual com a velocidade necessária, isso é ideal para rotas com um tempo de entrega muito longo (para o outro lado do globo via satélite), então você pode tentar usar o algoritmo de entrega parcial.Você pode gerar essa notificação (se houver uma falha na criação do canal) em cada comutador intermediário, para que o transmissor saiba o mais rápido possível sobre a impossibilidade de criar o canal. Se você realmente não deseja retransmitir dados quando é impossível criar um canal virtual com a velocidade necessária, isso é ideal para rotas com um tempo de entrega muito longo (para o outro lado do globo via satélite), então você pode tentar usar o algoritmo de entrega parcial.Você pode gerar uma notificação (se houver uma falha na criação do canal) em cada comutador intermediário, para que o transmissor saiba o mais rápido possível sobre a impossibilidade de criar o canal. Se você realmente não deseja retransmitir dados quando é impossível criar um canal virtual com a velocidade necessária, isso é ideal para rotas com um tempo de entrega muito longo (para o outro lado do globo via satélite), então você pode tentar usar o algoritmo de entrega parcial.então você pode tentar usar o algoritmo de entrega parcial.então você pode tentar usar o algoritmo de entrega parcial.

No momento da impossibilidade de criar um canal com a velocidade necessária, um canal com uma velocidade mais baixa é criado (então um canal é criado com essa velocidade) e no momento do estouro do buffer, o buffer é limpo e um símbolo indicando o estouro do buffer e o número de caracteres descartados é colocado nele. Aceitando esse caractere, o destinatário forma uma lista dessas reduções de velocidade e a envia ao transmissor. O transmissor reduz a velocidade do canal primário, calcula quais dados foram ignorados (os dados ignorados podem ser determinados simplesmente a partir da lista de reduções de velocidade e o tamanho do buffer) e os enviam da melhor maneira possível (embora uma rota alternativa).

O roteamento em redes comutadas por pacotes existentes é baseado no endereço no cabeçalho do pacote, nas tabelas de rotas e em outras regras nos roteadores intermediários. Essa abordagem funciona bem para um número relativamente pequeno de definições de rota e a possibilidade de armazenar em buffer os dados recebidos de um único pacote; leva um tempo relativamente longo para determinar o número da porta para a qual o pacote deve ser enviado. Para sistemas de alta velocidade com uma vida útil curta do canal virtual, não haverá velocidade de acesso suficiente à memória das tabelas de comutação (e a tabela em si terá um tamanho em megabytes para cada canal físico - você precisa alocar RAM igual ao número máximo possível de canais virtuais) e é mais vantajoso descrever a rota usando o método direto enumeração de canais físicos,através do qual um canal virtual deve ser construído. O tamanho das informações do endereço não será muito grande, o número de comutadores intermediários é relativamente pequeno e, se 8 bits forem alocados para cada comutador (porta física ou número do túnel), um análogo do endereço IP6 permitirá que você construa uma rota de 16 comutadores.

Para o método proposto, a tabela é transformada em um byte para cada buffer (a saber, o canal virtual existente e não potencialmente possível). Além disso, é necessário levar em consideração que o endereço é transmitido apenas no momento da criação do canal (é gradualmente apagado à medida que ele se move para o receptor), e o uso de um túnel virtual reduz significativamente os custos de roteamento. Para construir cadeias de canais físicos, você pode usar um análogo dos mecanismos de pesquisa convencionais ou DNS das redes modernas, definir parâmetros de destino (qualquer conjunto de parâmetros: o endereço IP também é um parâmetro normal) e obtemos um conjunto de cadeias com rotas alternativas. O endereçamento relativo aumentou a proteção contra acesso não autorizado; há controle total sobre a rota. Para que a rede funcione,não há necessidade da presença obrigatória (operação) de componentes de alto nível, a rota pode ser definida antecipadamente (para redes com um sistema de comunicação permanente, por exemplo, fiação em uma placa de circuito impresso - as conexões não mudam).

O controle direto do tráfego, a alocação (planejamento) de largura de banda etc. é impossível devido à alta velocidade de criação de um canal e ao tamanho potencialmente grande da rede. Para equilibrar a carga dos canais, é necessário usar métodos indiretos, como planejar várias rotas, atribuir taxas de transmissão, levando em consideração as estatísticas acumuladas sobre o uso de um canal virtual. Quando o canal físico está sobrecarregado, os dados dos canais virtuais já existentes não são descartados, é impossível criar apenas um novo canal. Se levarmos em conta a natureza do tráfego (principalmente mensagens curtas e frequentes), a disponibilidade de rotas de backup e o procedimento muito rápido para criar (excluir) um canal virtual, recusar a criação de um canal não levará a uma queda catastrófica no desempenho,haverá apenas um ligeiro subsidência na velocidade dos cálculos (a recriação do canal ocorrerá no momento da mensagem sobre o erro de conexão ou a expiração de um tempo predeterminado). Quando estatísticas negativas são acumuladas (ou seja, estatísticas e não uma reação a um evento individual), o software de gerenciamento de comutador monitora a frequência dos erros de conexão e programa os parâmetros do canal levando em consideração esses dados. Com uma alta probabilidade, o próprio congestionamento será interrompido em centenas de nanossegundos e o software do roteador deverá lidar com questões de planejamento estratégico. Esse planejamento pode incluir a capacidade de editar rotas já criadas (os dados são armazenados no multiplexador); caso contrário, não é possível reconstruir a rede de rotas de maneira confiável (quando o software ainda solicitar a recriação da rota).

Os programas de comunicação (threads do processo de computação) com as fontes (receptores) dos dados transmitidos são construídos de acordo com o mesmo esquema dos comutadores.

Um sistema de computação é um grande número de diferentes módulos executivos integrados por uma rede de comunicação. Uma rede de comunicação substitui todos os barramentos e interfaces locais do acesso à memória para conectar um teclado.

Essa arquitetura do sistema de computação altera fundamentalmente todo o paradigma da computação (esse problema será considerado posteriormente em um artigo que descreve a estrutura do sistema operacional e do software). O papel dos equipamentos de rede na arquitetura de computação está mudando significativamente. Se anteriormente a rede era uma maneira de conectar computadores separados e aplicativos em execução neles, agora o conceito de um computador separado está essencialmente ausente e o aplicativo pode ser "espalhado" por vários recursos de hardware de rede. A questão da administração (gerenciamento de recursos por parâmetros de acesso de um sistema de computador) entra completamente no plano de gerenciamento de rede, conectando módulos executivos individuais (não há mais processador central).

Resposta a erros de transmissão


O nível mais baixo de controle de erros pode ser considerado codificação de caracteres transmitidos, com a possibilidade de recuperação quando ocorrer um ou mais erros (o número depende do canal de transmissão de dados). Se, apesar da codificação, aparecer um símbolo incorreto (ou um grupo de símbolos), a sincronização da lista de canais virtuais do transmissor e receptor terá o efeito mais desagradável. Assim, os pedidos para alterar a tabela (criar ou excluir um canal) devem ter a possibilidade máxima de recuperação. Se, no entanto, a solicitação foi perdida, os dados de todos os canais virtuais com velocidade inferior à velocidade da solicitação serão distorcidos. Além disso, existem duas opções para responder: interromper completamente todos os canais virtuais ou apenas canais virtuais com dados distorcidos (com uma taxa de transferência menor que o canal perdido),nos dados sujeitos a distorção, adicione o símbolo "erro" (este símbolo é processado pelo receptor). Se uma dessincronização for detectada, é necessário restaurar a identidade das tabelas o mais rápido possível, e o tempo de recuperação dos canais deve ser determinado pelo comprimento do cabo (conectando os dois comutadores). A transmissão completa da tabela do transmissor para o receptor é a opção mais fácil, mas é melhor adicionar um número de solicitação circular a cada solicitação de edição da tabela. Pelo número da solicitação, determine o momento da dessincronização (os números não serão seqüenciais) e gere uma solicitação para reenviar as alterações perdidas.e o tempo de recuperação do canal deve ser determinado pelo comprimento do cabo (conectando os dois comutadores). A transmissão completa da tabela do transmissor para o receptor é a opção mais fácil, mas é melhor adicionar um número de solicitação circular a cada solicitação de edição da tabela. Pelo número da solicitação, determine o momento da dessincronização (os números não serão seqüenciais) e gere uma solicitação para reenviar as alterações perdidas.e o tempo de recuperação do canal deve ser determinado pelo comprimento do cabo (conectando os dois comutadores). A transmissão completa da tabela do transmissor para o receptor é a opção mais fácil, mas é melhor adicionar um número de solicitação circular a cada solicitação de edição da tabela. Pelo número da solicitação, determine o momento da dessincronização (os números não serão seqüenciais) e gere uma solicitação para reenviar as alterações perdidas.

O paradigma de comunicação proposto pode ser usado não apenas para construir o sistema de computação da próxima geração, mas também para melhorar a rede existente. O sincronismo e a alta qualidade de serviço dos canais de comunicação virtual criados resolverão de maneira ideal todos os problemas de transmissão, voz, vídeo (sem desbotamento). Para sistemas em tempo real ou sistemas de alta confiabilidade, entre outras coisas, a capacidade de criar muitas rotas alternativas, um controle rígido sobre o tempo de criação do canal e a entrega de dados são muito úteis. A comutação de pacotes pode ser emulada de forma transparente por um novo paradigma; a transmissão de pacotes é apenas uma criação temporária de canal, transferência e fechamento de dados.

A emulação reversa de uma nova rede por comutação de pacotes não é possível.

Espero que tenham gostado do artigo sobre o sistema de comunicações. Se durante o processo de leitura forem encontrados erros e não houver acoplamento, indique-os. Espero que este texto sirva de base para novos projetos e startups que serão compradas por grandes organizações. Se houver um desejo de implementar um sistema como o modelo HDL em comunidades como o OpenCores.org, ficarei muito feliz (não esqueça de apontar a fonte).

Os artigos a seguir descreverão outros aspectos (partes) do paradigma computacional. Um artigo é planejado sobre os princípios mecânicos da criação de um "avatar".

O algoritmo descrito para a construção de um sistema de comunicação pode se tornar parte de um grande todo ou mesmo de um padrão internacional (eu realmente espero). Se você tiver alguma dúvida, estou sempre pronto para responder, aconselhar e verificar "quanto à conformidade com a linha geral da parte" com uma implementação física específica.

All Articles