BR112016027558B1 - Aparelho e método para codificar fluxos de vídeo usando um esquema de criptografia de codificação aritmética binária adaptativa a contexto e memória legível por computador - Google Patents

Aparelho e método para codificar fluxos de vídeo usando um esquema de criptografia de codificação aritmética binária adaptativa a contexto e memória legível por computador Download PDF

Info

Publication number
BR112016027558B1
BR112016027558B1 BR112016027558-6A BR112016027558A BR112016027558B1 BR 112016027558 B1 BR112016027558 B1 BR 112016027558B1 BR 112016027558 A BR112016027558 A BR 112016027558A BR 112016027558 B1 BR112016027558 B1 BR 112016027558B1
Authority
BR
Brazil
Prior art keywords
cabac
input
instruction
value
range
Prior art date
Application number
BR112016027558-6A
Other languages
English (en)
Other versions
BR112016027558A2 (pt
Inventor
Bo Zhou
Mao Zeng
Erick James Plondke
Lucian Codrescu
Shu Xiao
Junchen Du
Suhail Jalil
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016027558A2 publication Critical patent/BR112016027558A2/pt
Publication of BR112016027558B1 publication Critical patent/BR112016027558B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

INSTRUÇÃO DE CRIPTOGRAFIA ARITMÉTICA DEDICADA. Trata-se de um método que inclui executar, em um processador, uma instrução de criptografia aritmética dedicada. A instrução de criptografia aritmética dedicada aceita uma pluralidade de entradas que inclui uma primeira faixa, um primeiro deslocamento, e um primeiro estado e produz uma ou mais saídas com base na pluralidade de entradas. O método também inclui armazenar um segundo estado, realinhar a primeira faixa para produzir uma segunda faixa, e realinhar o primeiro deslocamento para produzir um segundo deslocamento com base nas uma ou mais saídas da instrução de criptografia aritmética dedicada.

Description

REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[0001] O presente pedido reivindica prioridade do Pedido de Patente Provisório no US 14/288.018 comumente pertencente, depositado em 27 de maio de 2014, cujo conteúdo é expressamente incorporado a título de referência em sua totalidade.
CAMPO
[0002] A presente revelação refere-se, em geral, a instruções de microprocessador.
DESCRIÇÃO DE TÉCNICA RELACIONADA
[0003] Os avanços na tecnologia resultaram em dispositivos de computação menores e mais potentes. Por exemplo, existe, atualmente, uma variedade de dispositivos de computação pessoais portáteis, incluindo dispositivos de computação sem fio como telefones sem fio portáteis, assistentes pessoais digitais (PDAs) e dispositivos de paging que são pequenos, leves e facilmente carregados pelos usuários. Mais especificamente, os telefones sem fio portáteis, como telefones celulares e telefones de protocol de Internet (IP), podem comunicar pacotes de voz e dados através de redes sem fio. Ademais, muitos tais telefones sem fio incluem outros tipos de dispositivos que são incorporados ao presente documento. Por exemplo, um telefone sem fio também pode incluir uma câmera fotográfica digital, uma câmera de vídeo digital, um gravador digital e um reprodutor de arquivo de áudio. Também, tais telefones sem fio podem processar instruções executáveis, que incluem aplicativos de software, como um aplicativo de navegador da web, que pode ser usado para acessar a Internet. Desse modo, esses telefones sem fio podem incluir capacidades de computação significativas.
[0004] Para se obter a transferência de dados eficaz, um fluxo de bits de vídeo que representa um arquivo de vídeo pode ser criptografado antes da transmissão para os dispositivos de computação como telefones sem fio. A codificação aritmética binária adaptativa baseada em contexto (CABAC) pode ser usada para criptografar em série o arquivo de vídeo. As instruções para fins gerais podem ser usadas durante a criptografia de CABAC para criptografar bins (por exemplo, bits). No entanto, as instruções para fins gerais podem ser ineficazes devido aos tempos de processamento relativamente longos.
SUMÁRIO
[0005] Os aparelhos e métodos para criptografar fluxos de vídeo são revelados. A criptografia de um bit (por exemplo, um “bin”) com o uso de um esquema de criptografia de codificação aritmética binária adaptativa a contexto (CABAC) inclui adaptar recursivamente uma “faixa” e um “deslocamento” de um intervalo de código “atual”. A faixa pode incluir um primeiro subintervalo (por exemplo, um símbolo menos provável (LPS)) e um segundo subintervalo (por exemplo, um símbolo mais provável (MPS)). Se o bin for criptografado como um MPS (por exemplo, um “1” lógico), a faixa pode ser igual a uma faixa do MPS (por exemplo, rMPS) e o deslocamento, que pode ser denotado “baixo”, e pode permanecer constante (por exemplo, baixonovo = baixo). Alternativamente, se o bin for criptografado como um LPS (por exemplo, um “0” lógico), a faixa pode ser igual a uma faixa do LPS (por exemplo, rLPS) e o deslocamento pode ser igual a uma soma do deslocamento e a faixa do MPS (por exemplo, baixonovo = baixo + rMPS). O deslocamento é um fluxo de bits criptografado.
[0006] De acordo com as técnicas descritas, uma instrução de criptografia aritmética dedicada, como uma instrução de CABAC dedicada, para criptografar um fluxo de vídeo com o uso de CABAC é executável por um processador. O processador pode ser configurado para executar instruções para fins gerais e para executar a instrução de criptografia aritmética dedicada. Por exemplo, a instrução de criptografia aritmética dedicada aceita como entrada uma primeira faixa, um primeiro deslocamento e um primeiro estado. O processador pode armazenar um segundo estado, realinhar a primeira faixa para produzir uma segunda faixa, e realinhar o primeiro deslocamento para produzir um segundo deslocamento com base nas uma ou mais saídas da instrução de criptografia aritmética dedicada.
[0007] Por exemplo, durante a execução da instrução de criptografia aritmética dedicada, a primeira faixa (por exemplo, 9 bits) pode ser armazenada em um primeiro registro (por exemplo, um registro de 32 bits) e o primeiro deslocamento (por exemplo, 10 bits) pode ser armazenado em um segundo registro (por exemplo, um registro de 32 bits). O primeiro registro pode incluir zeros à esquerda, a primeira faixa (por exemplo, 9 bits) e zeros à direita. Uma posição de bit (por exemplo, “bitpos”) pode indicar o número de zeros à esquerda no primeiro registro e pode ser obtida com o uso de uma instrução de contagem de zeros à esquerda (CZL). Desse modo, em um exemplo específico, o número de zeros à direita é (32-9-bitpos) = (23-bitpos). O bit (ou bits) pode ser extraído do primeiro registro e usado como um índice para encontrar um valor da faixa do LPS em uma tabela de pesquisa. O valor da faixa do LPS pode ser deslocado para a esquerda pelo número de zeros à direita para alinhar o valor da faixa do LPS com a primeira faixa (por exemplo, 9 bits) no primeiro registro. Após cada iteração de criptografia, os bins no primeiro registro podem ser renormalizados de modo que um bit mais significativo (MSB) da primeira faixa (por exemplo, 9 bits) usado na próxima iteração seja igual a 1.
[0008] Durante a renormalização, os bytes específicos do segundo registro podem ser fornecidos (por exemplo, emitidos) para o fluxo de bits. Por exemplo, quando o MSB da faixa for menor que 1 (que corresponde a um aumento no deslocamento), o primeiro e o segundo bytes do segundo registro podem ser fornecidos para o fluxo de bits, o terceiro byte do segundo registro pode ser deslocado para a esquerda para a primeira posição de byte, e o quarto byte do segundo registro pode ser limpo para renormalizar o segundo registro (por exemplo, o deslocamento) e o primeiro registro (por exemplo, a faixa).
[0009] Com o uso da instrução de criptografia aritmética dedicada (por exemplo, uma única instrução) para criptografar um bin pode aumentar a velocidade de criptografia para usar múltiplas instruções para fins gerais. Por exemplo, o uso de uma instrução de criptografia aritmética dedicada reduz o tempo para gerar um bit de fluxo de vídeo criptografado a partir de múltiplos ciclos de execução em processador (isto é, > 2 ciclos) (com o uso de instruções para fins gerais) para 2 ciclos de execução em processador.
[0010] Em um aspecto específico, um aparelho inclui uma memória e um processador acoplado à memória. O processador é configurado para executar uma instrução de criptografia aritmética dedicada. A instrução de criptografia aritmética dedicada aceita uma pluralidade de entradas que inclui uma primeira faixa, um primeiro deslocamento, e um primeiro estado e produz uma ou mais saídas com base na pluralidade de entradas. Com base nas uma ou mais saídas da instrução de criptografia aritmética dedicada, o processador é configurado para armazenar um segundo estado, realinhar a primeira faixa para produzir uma segunda faixa e realinhar o primeiro deslocamento para produzir um segundo deslocamento.
[0011] Em um outro aspecto específico, um método inclui executar, em um processador, uma instrução de criptografia aritmética dedicada. A instrução de criptografia aritmética dedicada aceita uma pluralidade de entradas que inclui uma primeira faixa, um primeiro deslocamento, e um primeiro estado e produz uma ou mais saídas com base na pluralidade de entradas. O método também inclui, com base nas uma ou mais saídas da instrução de criptografia aritmética dedicada, armazenar um segundo estado, realinhar a primeira faixa para produzir uma segunda faixa, e realinhar o primeiro deslocamento para produzir um segundo deslocamento.
[0012] Em um outro aspecto específico, um meio legível por computador não transitório inclui uma instrução de criptografia aritmética binária adaptativa a contexto dedicada (CABAC) que aceita uma pluralidade de entradas que inclui uma primeira faixa, um primeiro deslocamento e um primeiro estado e produz uma ou mais saídas com base na pluralidade de entradas. A instrução de criptografia de CABAC dedicada é executada por um processador. A instrução de criptografia de CABAC dedicada faz com que o processador armazene um segundo estado, realinhe a primeira faixa para produzir uma segunda faixa e realinhe o primeiro deslocamento para produzir um segundo deslocamento.
[0013] Em um outro aspecto específico, um aparelho inclui meios para armazenar instruções para fins gerais e uma instrução de criptografia aritmética dedicada. O aparelho também inclui meios para executar as instruções para fins gerais recuperadas dos meios para armazenamento.O aparelho inclui adicionalmente meios para executar as instruções de criptografia aritmética dedicada recuperadas dos meios para armazenamento. A instrução de criptografia aritmética dedicada aceita uma pluralidade de entradas que inclui uma primeira faixa, um primeiro deslocamento, e um primeiro estado. A instrução de criptografia aritmética dedicada é executada para produzir uma ou mais saídas com base na pluralidade de entradas. Com base nas uma ou mais saídas, um segundo estado é armazenado, a primeira faixa é realinhada para produzir uma segunda faixa, e o primeiro deslocamento é realinhado para produzir um segundo deslocamento.
[0014] Uma vantagem específica fornecida por pelo menos um dentre os aspectos revelados é a habilidade de programar e executar uma instrução de criptografia aritmética dedicada em um microprocessador. O uso de instruções de criptografia aritmética dedicada pode reduzir o número de ciclos de execução em processador para codificar um fluxo de bits de vídeo criptografados por entropia (por exemplo, um fluxo de bits de vídeo de CABAC de H.264 ou um fluxo de bits de vídeo de CABAC de H.26). Outros aspectos, vantagens e recursos da presente revelação se tornarão evidentes após a análise de todo o pedido, incluem as seções a seguir. Breve Descrição dos Desenhos, Descrição Detalhada e as Reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0015] A Figura 1 é um diagrama de um aspecto ilustrativo específico de um sistema que é operável para executar uma instrução de criptografia aritmética dedicada;
[0016] A Figura 2 é um aspecto ilustrativo de modificação de faixas e deslocamentos de CABAC com o uso de uma instrução de criptografia aritmética dedicada;
[0017] A Figura 3 é um diagrama de um aspecto ilustrativo específico de um método de armazenamento de informações em registros de um processador configurado para executar uma instrução de criptografia aritmética dedicada;
[0018] A Figura 4 é um diagrama estrutural de um aspecto ilustrativo específico da lógica para executar uma instrução de criptografia aritmética dedicada;
[0019] A Figura 5 é um diagrama de fluxo que ilustra um método de renormalização de uma faixa e um deslocamento;
[0020] A Figura 6 é um fluxograma de um aspecto ilustrativo específico de um método para executar uma instrução de criptografia aritmética dedicada; e
[0021] A Figura 7 é um diagrama de blocos de um dispositivo sem fio que inclui um conjunto de instruções que tem instruções para fins gerais e uma instrução de criptografia aritmética dedicada.
DESCRIÇÃO DETALHADA
[0022] Com referência à Figura 1, um aspecto ilustrativo específico de um sistema que é operável para executar 100 uma instrução de criptografia aritmética dedicada é mostrado. O sistema 100 inclui um processador 110 acoplado a uma memória 120.
[0023] O processador 110 inclui lógica de execução de instrução para fins gerais 112 configurada para executar instruções para fins gerais. As instruções para fins gerais podem incluir instruções de processador executadas comumente, como CARREGAR, ARMAZENAR, PULAR, ADICIONAR, INCREMENTAR, etc. A lógica de execução de instrução para fins gerais 112 pode incluir lógica de armazenamento de carga para fins gerais para executar as instruções para fins gerais. O processador 110 também inclui lógica de execução de instrução de criptografia aritmética dedicada 114 configurada para executar uma instrução de criptografia aritmética dedicada. A instrução de criptografia aritmética dedicada é executável pelo processador 110 para criptografar um fluxo de vídeo com base em um esquema de codificação por entropia, como o esquema de codificação aritmética binária adaptativa a contexto. Em um aspecto específico, a instrução de criptografia aritmética dedicada pode ser usada na criptografia de um fluxo de vídeo de acordo com os dois mil e sessenta e quatro sistemas de audiovisual e multimídia padrão promulgados pela União Internacional de Telecomunicações (H.264, intitulada “Advanced video coding for generic audiovisual services”). Em um outro aspecto, a instrução de criptografia aritmética dedicada pode ser usada na criptografia de um fluxo de vídeo de acordo com os dois mil e sessenta e cinco sistemas de audiovisual e multimídia padrão promulgados pela União Internacional de Telecomunicações (H.265, intitulada “Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services - coding of moving video”).
[0024] Em um aspecto específico, as instruções para fins gerais e a instrução de criptografia aritmética dedicada são executadas por uma unidade de execução comum do processador 110. Por exemplo, a unidade de execução comum pode incluir tanto a lógica de execução de instrução para fins gerais 112 quanto a lógica de execução de instrução de criptografia aritmética dedicada 114. Em um aspecto ilustrativo, a instrução de criptografia aritmética dedicada é uma instrução atômica que é executável pelo processador 110 sem separar a instrução de criptografia aritmética dedicada em uma ou mais instruções para fins gerais a serem executadas pela lógica de execução de instrução para fins gerais 112. A instrução de criptografia aritmética dedicada pode ser uma única instrução de um conjunto de instruções do processador 110 e pode ser executada em um número de ciclos pequeno (por exemplo, menos de três ciclos de execução) do processador 110. Em um aspecto específico, o processador 110 é um processador de palavra de instrução muito grande multiexecutada em pipeline (VLIW).
[0025] A memória 120 pode incluir memória de acesso aleatório (RAM), memória apenas de leitura (ROM), memória de registro ou qualquer combinação dos mesmos. Embora a memória 120 seja ilustrada na Figura 1 como sendo separada do processador 110, a memória 120 pode, em vez disso, ser uma memória embutida (por exemplo, cache) do processador 110.
[0026] Em operação, o processador 110 pode ser usado na criptografia de um fluxo de vídeo. Durante a criptografia de um bit específico do fluxo de vídeo, o processador 110 pode recuperar uma instrução de criptografia aritmética dedicada da memória 120 e a lógica 114 pode executar a instrução recuperada.
[0027] Será observado que o sistema 100 da Figura 1 pode possibilitar a execução de instruções de criptografia aritmética dedicada (por exemplo, enquanto criptografa os fluxos de vídeo). Os processadores configurados para executar instruções de criptografia aritmética dedicada (por exemplo, o processador 110) podem criptografar fluxos de vídeo mais rápido do que os processadores que executam um algoritmo de criptografia de vídeo com o uso de múltiplas instruções para fins gerais. Por exemplo, a capacidade de executar instruções de criptografia aritmética dedicada pode possibilitar que um processador realize operações de criptografia complexas e demoradas em menos ciclos de execução do que com o uso de instruções para fins gerais, conforme adicionalmente descrito no presente documento.
[0028] Com referência à Figura 2, os aspectos ilustrativos 200, 220 de modificação de faixas e deslocamentos de CABAC com o uso de uma instrução de criptografia aritmética dedicada são revelados. CABAC é uma forma de codificação aritmética binária. Em geral, a codificação aritmética binária pode ser caracterizada por duas quantidades: uma “faixa” de intervalo atual e um “deslocamento” atual na faixa de intervalo atual.
[0029] Para criptografar um bit específico, a faixa atual é, primeiro, subdividida em duas porções com base na probabilidade de um símbolo menos provável (LPS) e um símbolo mais provável (MPS). Por exemplo, o LPS pode ser um símbolo “zero”, o MPS pode ser um símbolo “um”, e a faixa atual pode ser a faixa entre zero e um. Em geral, se R for a largura da faixa atual, rLPS é a largura da primeira porção, rMPS é a largura da segunda porção, pLPS é a probabilidade de encontrar o símbolo menos provável, e pMPS é a probabilidade de encontrar o símbolo mais provável, então, rLPS = R x pLPS e rMPS = R x pMPS = R - rLPS. Desse modo, quando a probabilidade pLPS do símbolo menos provável for maior do que a probabilidade pMPS do símbolo mais provável, a porção que corresponde ao símbolo menos provável terá uma largura rLPS maior do que a largura rMPS da porção que corresponde ao símbolo mais provável. Ou seja, quando pLPS > pMPS, rLPS > rMPS. Semelhantemente, quando pMPS > pLPS, rMPS > rLPS. Cada bin pode ser criptografado como um MPS ou um LPS, e o rLPS e o rMPS podem ser iterativamente atualizados com base no bin criptografado, conforme explicado abaixo.
[0030] Por exemplo, conforme ilustrado no primeiro aspecto 200 da Figura 2, uma instrução de criptografia aritmética dedicada 202 pode ser executada para criptografar um bin 204 como um MPS (por exemplo, criptografar o bin como um “1” lógico). Em um aspecto específico, a instrução de criptografia aritmética dedicada 202 pode ser executada pela lógica de execução de instrução de criptografia aritmética dedicada 114 do processador 110 da Figura 1. Uma faixa 206 e uma baixa 208 (por exemplo, um deslocamento) pode caracterizar o bin 204. A faixa 206 pode ser igual à soma de um rLPS 210 do bin 204 e um rMPS 212 do bin 204, conforme mostrado. A execução da instrução de criptografia aritmética dedicada 202 para criptografar o bin 204 à medida que o MPS gera um bin criptografado 214. Uma faixa 216 do bin criptografado 214 é igual ao rMPS 212 do bin 204, e uma baixa 218 (por exemplo, deslocamento) do bin criptografado 214 é igual à baixa 208 do bin 204.
[0031] Como um outro exemplo, conforme ilustrado no segundo aspecto 220 da Figura 2, uma instrução de criptografia aritmética dedicada 222 pode ser executada para criptografar o bin 204 como um LPS (por exemplo, criptografar o bin como um “0” lógico). Em um aspecto específico, a instrução de criptografia aritmética dedicada 222 pode ser executada pela lógica de execução de instrução de criptografia aritmética dedicada 114 do processador 110 da Figura 1. A execução da instrução de criptografia aritmética dedicada 222 para criptografar o bin 204 à medida que o LPS pode gerar um bin criptografado 234. Uma faixa 236 do bin criptografado 234 é igual ao rLPS 210 do bin 204, e uma baixa (por exemplo, deslocamento) do bin criptografado 234 é igual à soma da baixa 208 do bin 204 e ao rMPS do bin 204. Em um aspecto específico, a instrução de criptografia aritmética dedicada 202 e a instrução de criptografia aritmética dedicada 222 podem ser a mesma instrução.
[0032] Com referência aos aspectos 200, 220 retratados na Figura 2, o deslocamento (por exemplo, a baixa 218, 238, respectivamente) pode ser escrito para o fluxo de bits (um bin criptografado). Conforme ilustrado na Figura 2, a faixa 216, 236 do bin criptografado 214, 234 pode ser menor do que a faixa 206 do bin 204 (por exemplo, a faixa pode diminuir com cada etapa de criptografia). Desse modo, a faixa e a baixa podem ser renormalizadas após criptografar cada bin ou quando um valor da faixa cair abaixo de um limite. Por exemplo, uma faixa representada por um número binário de 9 bits pode ser renormalizada quando um bit mais significativo (MSB) da faixa for menor que um (por exemplo, o MSB = 0). A renormalização é descrita em mais detalhes em relação à Figura 5.
[0033] A criptografia de CABAC de acordo com H.264 ou H.265 é uma operação dependente de estado. Ou seja, a criptografia do fluxo de vídeo pode incluir manter informações (por exemplo, estado, posição de bit e bit de MPS) além da faixa e do deslocamento. Para H.264 ou H.265, a faixa é uma quantidade de 9 bits e o deslocamento é uma quantidade de pelo menos 9 bits. O cálculo de rLPS pode ser aproximado por uma tabela de pesquisa de 64x4 de 256 bytes que armazena constantes de CABAC e que é indexado pela faixa e pelo estado. Devido ao fato de que os valores na tabela de pesquisa são constantes definidas pelo padrão H.264 ou pelo padrão H.265, a tabela de pesquisa pode ser permanentemente codificada. Alternativamente, a tabela de pesquisa pode ser programável (por exemplo, pode ser reescrita).
[0034] Uma instrução de criptografia de CABAC dedicada (por exemplo, a instrução de criptografia aritmética dedicada 202, 222) pode alinhar a faixa, realinhar o deslocamento e pesquisar constantes de CABAC conforme descrito no presente documento. A instrução de criptografia de CABAC dedicada pode aceitar como entrada os bits de estado de CABAC, um bit de MPS de CABAC, bits de posição de bit (bitpos), nove bits de faixa de CABAC, pelo menos nove bits de deslocamento de CABAC e um bit de valor de entrada (por exemplo, bin de valor de entrada). A instrução de criptografia de CABAC dedicada pode gerar um resultado que inclui novos bits de estado de CABAC, um novo bit de MPS de CABAC, nove bits de faixa de CABAC e pelo menos nove bits de deslocamento de CABAC. Conforme explicado acima, o processo de criptografia pode ser renormalizado após determinadas iterações para que o valor do MSB do MPS seja 1. Por exemplo, uma instrução de criptografia de CABAC dedicada pode operar de acordo com o pseudocódigo a seguir:
Figure img0001
[0035] Deve-se notar que embora muitas das equações e expressões conforme estabelecidas no presente documento usam uma sintaxe semelhante à linguagem de programação C ou C++, as expressões são para fins ilustrativos e podem ser, em vez disso, expressos em outras linguagens de programação com sintaxe diferente.
[0036] O pseudocódigo acima pode ser encapsulado em uma função ENCBIN( ) (ilustrada abaixo) e um bit de vídeo de H.264 ou H.265 criptografado pode ser gerado em dois ciclos de processador.
Figure img0002
[0037] Em um aspecto específico, o uso de uma instrução de criptografia CABAC dedicada reduz o tempo para gerar um bit de fluxo de vídeo criptografado a partir de múltiplos ciclos de execução em processador (isto é, > 2 ciclos) (com o uso de instruções para fins gerais) para 2 ciclos de execução em processador.
[0038] Com referência à Figura 3, um diagram de um aspecto ilustrativo específico de um método de armazenamento de informações em registros de um processador configurado para executar uma instrução de criptografia aritmética dedicada é revelado. Em um aspecto ilustrativo, a instrução de criptografia aritmética dedicada 360 é uma instrução de criptografia de CABAC de H.264. Em um outro aspecto ilustrativo, a instrução de criptografia aritmética dedicada 360 é uma instrução de criptografia de CABAC de H.265. Em um aspecto específico, a instrução de criptografia aritmética dedicada 360 pode corresponder a uma das instruções de criptografia aritmética dedicada 202, 222 da Figura 2.
[0039] Durante a execução da instrução de criptografia aritmética dedicada 360, um bin 350 (por exemplo, um bit de valor de entrada 350 da instrução de criptografia de CABAC dedicada 360) pode ser armazenado em um registro predicado 340. O bin 350 armazenado no registro predicado 340 pode ser usado em uma decisão ou um algoritmo de criptografia de vídeo. O processador 110 pode carregar e armazenar os dados usados para executar a instrução de criptografia aritmética dedicada 360 em dois pares de registro de entrada 310 e 320. Em um aspecto específico, os pares de registro 310 e 320 são pares de registros de 32 bits.
[0040] Um processador pode armazenar dados gerados durante a execução da instrução de criptografia aritmética dedicada em um par de registro de saída 330. Em um aspecto específico, o par de registro de saída 330 é um par de registros de 32 bits.
[0041] Um primeiro registro Rtt.wO 311 do primeiro par de registro de entrada 310 pode armazenar um estado de entrada 301 e um bit de MPS de entrada 302. Em um aspecto específico, os bits zero a cinco de Rtt.wO 311, denotam Rtt.w0[0:5], armazenam o estado de entrada 301 e Rtt.w0[8] armazena o bit de MPS de entrada 302. Um segundo registro Rtt.wl 312 do primeiro par de registro de entrada 310 pode armazenar um bitpos de entrada 303. Por exemplo, Rtt.wl [0:4] pode armazenar os bitpos de entrada 303.
[0042] Um primeiro registro Rss.w0 321 do segundo par de registro de entrada 320 pode armazenar uma faixa de entrada 304. Por exemplo, Rss.w0[0:8] pode armazenar os nove bits da faixa de entrada 304. Um segundo registro Rss.w1 322 do segundo par de registro de entrada 320 pode armazenar um deslocamento de entrada 305. Em um aspecto específico, Rss.w1 [0:8] armazena os nove bits do deslocamento de entrada 305.
[0043] A primeiro registro Rdd.w0 331 do par de registro de saída 330 pode armazenar um estado de saída 308, um bit de MPS de saída 307 e uma faixa de saída 306. Por exemplo, Rdd.w0[0:5] pode armazenar o estado de saída de 6 bits 308, Rdd.w0[8] pode armazenar o bit de MPS de saída 307, e Rdd.w0[23 :31] pode armazenar a faixa de saída 306. A segundo registro Rdd.w1 332 do par de registro de saída 331 pode armazenar um deslocamento de saída 309 de uma maneira normalizada.
[0044] Será observado que um processador pode “empacotar” os dados de saída para uma instrução de criptografia de CABAC dedicada em dois pares de registro de entrada. Deve-se notar que embora a instrução de criptografia de CABAC dedicada 360 tenha sido explicada no presente documento com referência ao padrão de compactação de vídeo H.264 e/ou o padrão de compactação de vídeo H.265, a instrução de criptografia de CABAC dedicada 360 pode ser usada na criptografia de outros fluxos de bits codificados aritmeticamente. Por exemplo, a instrução de criptografia de CABAC dedicada 360 pode ser usada na criptografia de fluxos de bits criptografados de acordo com o padrão de compactação de imagem (JPEG3000) do Grupo de Especialistas Fotográficos Conjunto 3000. Deve-se notar que embora a Figura 3 ilustre um registro predicado, dois pares de registro de entrada, e um par de registro de saída, sendo que a instrução de criptografia de CABAC dedicada 360 pode ser alternativamente realizada com o uso de qualquer número e combinação de registros de entrada e saída. Deve-se notar adicionalmente que embora a instrução de criptografia de CABAC dedicada 360 conforme descrito no presente documento utiliza uma faixa de 9 bits e um deslocamento de 9 bits, tais comprimentos de bit são para fins ilustrativos apenas. Outros algoritmos de criptografia aritmética podem usar outros comprimentos de bit, e as instruções de criptografia aritmética dedicada conforme descritas no presente documento podem aceitar como entrada e gerar como dados de saída de qualquer comprimento de bit.
[0045] Com referência à Figura 4, um diagrama estrutural de um aspecto ilustrativo específico da lógica 400 para executar uma instrução de criptografia aritmética dedicada é mostrado. Em um aspecto ilustrativo, a instrução de criptografia aritmética dedicada é uma instrução de criptografia de CABAC de H.264. Em um outro aspecto ilustrativo, a instrução de criptografia aritmética dedicada é uma instrução de criptografia de CABAC de H.265.
[0046] Seis variáveis de entrada podem ser recuperadas e fornecidas para a lógica 400. Por exemplo, o estado de entrada 301 pode ser recuperado a partir do primeiro registro Rtt.wO 311 do primeiro par de registro de entrada 310, o bit de MPS de entrada 302 pode ser recuperado a partir do primeiro registro Rtt.wO 311 do primeiro par de registro de entrada 310, o bitpos de entrada 303 pode ser recuperado a partir do segundo registro Rtt.wl 312 do primeiro par de registro de entrada 310, a faixa de entrada 304 pode ser recuperado a partir do primeiro registro Rss.w0 321 do segundo par de registro de entrada 320, o deslocamento de entrada 305 (por exemplo, baixa) pode ser recuperado a partir do segundo registro Rss.w1 322 do segundo par de registro de entrada 320, e o bin de entrada 350 pode ser recuperado a partir do registro predicado 340.
[0047] O bitpos de entrada 303 e a faixa de entrada 304 podem ser fornecidos para um comutador esquerdo 443. O comutador esquerdo 443 pode ser configurado para comutar a faixa de entrada 304 pelo bitpos de entrada 303. A comutação da faixa de entrada 304 pelo bitpos de entrada 303 pode gerar uma faixa de comutação 445. O estado de entrada 301 é usado como um índice em uma tabela de pesquisa de constantes de H.264/H.265 de CABAC 422. Quatro constantes de CABAC 423 são produzidas como um resultado da operação de índice e entrada em um multiplexador de 4 para l 424 que emite uma constante de CABAC selecionada com base na faixa de comutação 445. A constante de CABAC selecionada pode corresponder a uma largura do LPS (por exemplo, rLPS 427). A faixa de comutação 445 e a rLPS 427 podem ser fornecidas para um subtrator 412. O subtrator 412 pode subtrair o rLPS 427 a partir da faixa de comutação 445 (por exemplo, Faixa - rLPS) para gerar uma largura do MPS (por exemplo, rMPS 448).
[0048] A tabela de pesquisa de constantes H.264/H.265 de CABAC 422 também pode produzir uma nova constante de estado de LPS 425 e uma nova constante de estado de MPS 426. A nova constante de estado de LPS 425 e a nova constante de estado de MPS 426 podem ser fornecidas para um multiplexador de 2 para l 474. O bin de entrada 350 e o bit de MPS de entrada 302 podem ser fornecidos para um comparador 414. O comparador 414 pode determinar se o bin de entrada 350 e o bit de MPS de entrada 302 são iguais. Em resposta a uma determinação de que o bin de entrada 350 e o bit de MPS de entrada 302 são iguais, o comparador 414 gera um sinal de alta tensão lógico (por exemplo, um “1” lógico). Em resposta a uma determinação de que o bin de entrada 350 e o bit de MPS de entrada 302 não são iguais, o comparador 414 gera um sinal de baixa tensão lógico (por exemplo, um “0” lógico).O resultado do comparador 414 é fornecido para uma porta de comunicação -AND lógica 418, para uma entrada de controle de um multiplexador de 2 para 1 470, para uma entrada de controle do multiplexador de 2 para 1 474, e para a entrada de controle de um multiplexador de 2 para 1 476.
[0049] O deslocamento de entrada 305 (“Baixo”) pode ser fornecido para o multiplexador de 2 para 1 470 e para um somador 449. O rMPS 448 também pode ser fornecido para o somador 449. O somador 449 é configurado para adicionar o rMPS 448 com o deslocamento de entrada 305 e para fornecer o resultado (por exemplo, soma) para o multiplexador de 2 para 1 470. Com base no resultado do comparador 414, o multiplexador de 2 para 1 470 pode resultar no deslocamento de entrada 305 como o deslocamento de saída 309 ou resultar na soma do deslocamento de entrada 305 e rMPS 448 como o deslocamento de saída 309. Por exemplo, quando o bin de entrada 350 for criptografado como um LPS (por exemplo, o bin de entrada 350 não é igual ao bit de MPS de entrada 302), o comparador 414 pode fornecer um sinal de alta tensão lógico para a entrada de controle do multiplexador de 2 para 1 470. Em resposta ao recebimento do sinal de alta tensão lógico, o multiplexador de 2 para 1 470 pode resultar na soma do deslocamento de entrada 305 e rMPS 448 como o deslocamento de saída 309 como o deslocamento de saída 309. Quando o bin de entrada 350 for criptografado como um MPS (por exemplo, o bin de entrada 350 é igual ao bit de MPS de entrada 302), o comparador 414 pode fornecer um sinal de baixa tensão lógico para a entrada de controle do multiplexador de 2 para 1 470. Em resposta ao recebimento do sinal de baixa tensão lógico, o multiplexador de 2 para 1 470 pode resultar no deslocamento de entrada 305 como o deslocamento de saída 309.
[0050] O estado de saída 308 pode ser dependente do resultado do comparador 414. Por exemplo, quando o bin de entrada 350 for criptografado como um LPS (por exemplo, o bin de entrada 350 não é igual ao bit de MPS de entrada 302), o comparador 414 pode fornecer o sinal de alta tensão lógico para a entrada de controle do multiplexador de 2 para 1 474. Em resposta ao recebimento do sinal de alta tensão lógico, o multiplexador de 2 para 1 474 pode resultar na nova constante de estado de LPS 425 como o estado de saída 308. Quando o bin de entrada 350 for criptografado como um MPS (por exemplo, o bin de entrada 350 é igual ao bit de MPS de entrada 302), o comparador 414 pode fornecer o sinal de baixa tensão lógico para a entrada de controle do multiplexador de 2 para 1 474. Em resposta ao recebimento do sinal de baixa tensão lógico, o multiplexador de 2 para 1 474 pode resultar na nova constante de estado de MPS 426 como o estado de saída 308.
[0051] A faixa de saída 306 pode ser dependente do resultado do comparador 414. Por exemplo, quando o bin de entrada 350 for criptografado como um LPS (por exemplo, o bin de entrada 350 não é igual ao bit de MPS de entrada 302), o comparador 414 pode fornecer o sinal de alta tensão lógico para a entrada de controle do multiplexador de 2 para 1 476. Em resposta ao recebimento do sinal de alta tensão lógico, o multiplexador de 2 para 1 476 pode resultar no LPS 427 como a faixa de saída 306. Quando o bin de entrada 350 for criptografado como um MPS (por exemplo, o bin de entrada 350 é igual ao bit de MPS de entrada 302), o comparador 414 pode fornecer um sinal de baixa tensão lógico para a entrada de controle do multiplexador de 2 para 1 476. Em resposta ao recebimento do sinal de baixa tensão lógico, o multiplexador de 2 para 1 476 pode resultar no rMPS 448 como a faixa de saída 306.
[0052] O estado de entrada 301 também pode ser fornecido para um inversor 420. O inversor 420 pode ser configurado para inverter o estado de entrada 301 e fornecer o resultado para a porta de comunicação -AND lógica 418. Quando o resultado do comparador 414 e o resultado do inversor 420 corresponderem aos sinais de alta tensão lógicos (por exemplo, quando o bin de entrada 350 for igual a bit de MPS de entrada 302 e o estado de entrada 301 for um “0” lógico), a porta de comunicação -AND lógica 418 pode fornecer um sinal de alta tensão lógico para a entrada de controle do multiplexador de 2 para 1 472. O estado de entrada 301 ilustrado na Figura 4 é um “0” lógico (por exemplo, “==0”). No entanto, o estado de entrada 301 também pode ser um “1” lógico (por exemplo, “==1”). Se o bin de entrada 350 não for igual ao bit de MPS de entrada e/ou se o estado de entrada 301 for um “1” lógico, a porta de comunicação -AND lógica 418 pode fornecer um sinal de baixa tensão lógico para a entrada de controle do multiplexador de 2 para 1 472.
[0053] O bit de MPS de entrada 302 pode fornecido para o multiplexador de 2 para 1 472. O bit de MPS de entrada 302 também pode ser invertido por um inversor 416. O resultado do inversor (por exemplo, o bit de MPS de entrada invertido) pode ser fornecido para o multiplexador de 2 para 1 472. O bit de MPS de saída 307 pode ser dependente do resultado da porta de comunicação -AND lógica 418. Por exemplo, quando a porta de comunicação -AND lógica 418 fornecer o sinal de alta tensão lógico para a entrada de controle do multiplexador de 2 para 1 472 (por exemplo,quando o bin de entrada 350 for igual ao bit de MPS de entrada 302 e ao estado de entrada 301 for um “0” lógico), o multiplexador de 2 para 1 472 resulta no bit de MPS de entrada invertido como o bit de MPS de saída 302. De outro modo, o multiplexador de 2 para 1 472 resulta no bit de MPS de entrada 302 como o bit de MPS de saída 307.
[0054] Será observado que, devido ao fato de que muitos processadores incluem um comutador, a lógica 400 da Figura 4 pode ser implantada em tais processadores ao armazenar a tabela de pesquisa de constantes 422 e ao adicionar alguns elementos de circuito, como comparadores, somadores, inversores e multiplexadores. Desse modo, um processador pode ser configurado para executar uma instrução de criptografia aritmética dedicada ao implantar a lógica 400 da Figura 4 sem exigir alterações substanciais para o processador.
[0055] Com referência à Figura 5, um diagram de fluxo 500 ilustra um método de renormalização de uma faixa e um deslocamento. O deslocamento pode corresponder aos bits no segundo registro Rdd.w1 332 do par de registro de saída 331. Por exemplo, o segundo registro Rdd.w1 332 pode armazenar oito bits (por exemplo, um primeiro byte low.ub[0]) em uma primeira porção ub[0], armazenar um segundo byte low.ub[1] em uma segunda porção ub[1], armazenar um terceiro byte low.ub[2] em uma terceira porção ub[2], e armazenar um quarto byte low.ub[3] em uma quarta porção ub[3]. Os bytes armazenados no segundo registro Rdd.w1 332 podem corresponder ao deslocamento de saída 309.
[0056] Conforme explicado em relação à Figura 2, a faixa e o deslocamento podem ser renormalizadas quando um valor da faixa cair abaixo de um limite. Por exemplo, uma faixa representada por um número binário de 9 bits pode ser renormalizada quando um bit mais significativo (MSB) da faixa for zero (por exemplo, a faixa é menor do que o binário “100000000”). Com referência à Figura 5, um processador (por exemplo, o processador 110 da Figura 1) pode determinar se a faixa de saída 306 é menor do que o valor hexadecimal 0x100 (por exemplo, menor que 256), em 502. Se a faixa de saída 306 não for menor que o valor hexadecimal 0x100, o deslocamento de saída 309 e a faixa de saída 309 não precisam ser renormalizados e o processo acaba, em 504.
[0057] Se a faixa de saída 306 for menor que o valor hexadecimal 0x100, o processador pode determinar se o segundo byte low.ub[1] armazenado na segunda porção ub[1] do terceiro registro Rdd.w1 332 for igual ao valor hexadecimal 0xFF (por exemplo, 255), em 506. Por exemplo, o processador pode determinar se cada bit do byte low.ub[1] é um bit de “1” lógico. Em resposta a uma determinação de que o segundo byte low.ub[1] é igual ao valor hexadecimal 0xFF, o número dos armazenados em buffer (por exemplo, bytes a serem escritos para um fluxo de bits de saída) pode ser incrementado, em 508. O processador pode, então, comutar o primeiro byte low.ub[0] para a segunda porção ub[1], o valor hexadecimal de carga 0x00 para a primeira porção ub[0], e comutar a faixa de saída 306 para a esquerda por oito bits, em 510. O método pode acabar em 504.
[0058] Em resposta a uma determinação, em 506, de que o segundo byte low.ub[1] não é igual ao valor hexadecimal 0xFF, o processador pode determinar se o número de bytes armazenados em buffer é maior do que zero, em 512. Em resposta a uma determinação de que o número de bytes armazenados em buffer é maior que zero, o processador pode inserir o quarto byte low.ub[3] no fluxo de bits, em 518. Por exemplo, o processador pode transmitir o quarto byte low.ub[3] para um decodificador como um fluxo de bits criptografado. O processador pode determinar se o número de bytes armazenados em buffer é maior que um, em 520. Em resposta a uma determinação de que o número de bytes armazenados em buffer é maior que um, o processador pode inserir o terceiro byte low.ub[2] no fluxo de bits, em 5220 e pode diminuir o número de bytes armazenados em buffer, em 524. As operações em 520 a 524 podem ser continuadas enquanto o número de bytes armazenados em buffer é maior do que um. Em resposta a uma determinação de que o número de bytes armazenados em buffer não é maior que um, em 520, o processador pode comutar o segundo byte low.ub[1] na quarta porção ub[3] e comutar o valor hexadecimal 0xFF na terceira porção ub[2], em 516. Então, o processador pode comutar o primeiro byte low.ub[0] para a segunda porção ub[1], o valor hexadecimal de carga 0x00 para a primeira porção ub[0], e comutar a faixa de saída 306 para a esquerda por oito bits, em 510. Após isso, o método pode terminar, em 504.
[0059] Em resposta a uma determinação, em 512, de que o número de bytes armazenados em buffer não é maior do que zero, o processador pode definir o número de bytes armazenados em buffer para um, em 514. Em seguida, o processador pode comutar o segundo byte low.ub[1] na quarta porção ub[3] e comutar o valor hexadecimal 0xFF na terceira porção ub[2], em 516. Então, o processador pode comutar o primeiro byte low.ub[0] para a segunda porção ub[1], o valor hexadecimal de carga 0x00 para a primeira porção ub[0], e comutar a faixa de saída 306 para a esquerda por oito bits (por exemplo, um byte), em 510. O método pode acabar em 504.
[0060] O diagrama de fluxo 500 da Figura 5 pode evitar a necessidade de verificar o bit de portadora do deslocamento de saída 309 e a necessidade de derivar se um “0” lógico ou um “1” lógico deve ser escrito no fluxo de bits. Por exemplo, se houver qualquer portadora que é gerada quando se atualiza o deslocamento de saída 309 durante a execução da instrução de criptografia aritmética dedicada 360, a portadora pode ser automaticamente propagada para o quarto byte low.ub[3] (por exemplo, o byte mais significativo) pode meio do terceiro byte low.ub[2]. O diagrama de fluxo 500 também pode reduzir uma taxa de recorrência de renormalização ao inserir seletivamente (por exemplo, escrever) múltiplos bytes no fluxo de bits com base em um número de bytes armazenados em buffer.
[0061] Com referência à Figura 6, um fluxograma de um aspecto ilustrativo específico de um método 600 para executar uma instrução de criptografia aritmética dedicada é mostrado Em um aspecto ilustrativo, o método 600 pode ser realizado pelo processador 110 da Figura 1 ou a lógica 400 da Figura 4.
[0062] O método 600 inclui executar, em um processador, uma instrução de criptografia aritmética binária adaptativa a contexto (CABAC) dedicada, em 602. Por exemplo, o processador 110 pode executar uma ou mais instruções de criptografia aritmética dedicada, como a instrução de criptografia aritmética dedicada 202, 222 ou a instrução de criptografia aritmética dedicada 360. A instruções de criptografia aritmética dedicada 202, 222, 360 pode aceitar como entrada o estado de entrada 301 (por exemplo, um primeiro estágio), o bit de MPS de entrada 302, a posição de bit (bitpos) de entrada 303, a faixa de entrada 304 (por exemplo, uma primeira faixa), o deslocamento de entrada 305 (por exemplo, um primeiro deslocamento), e o bin de entrada 350.
[0063] O método 600 também pode incluir, com base nas uma ou mais saídas da instrução de criptografia CABAC dedicada, armazenar um segundo estado, realinhar a primeira faixa para produzir uma segunda faixa, e realinhar o primeiro deslocamento para produzir um segundo deslocamento, em 604. Por exemplo, a execução da instrução de criptografia aritmética dedicada pode gerar o deslocamento de saída 309 (por exemplo, o segundo deslocamento), o bit de MPS de saída 307, o estado de saída 308 (por exemplo, o segundo estado) e a faixa de saída 306 (por exemplo, a segunda faixa). Com referência à Figura 3, o bit de MPS de saída 307 pode ser armazenado no primeiro registro Rdd.w0 331 do par de registro de saída 330, a faixa de entrada 304 no primeiro registro Rss.w0 321 do segundo par de registro de entrada 320 pode ser realinhado no primeiro registro Rdd.w0 331 do par de registro de saída 330, e o deslocamento de entrada 305 no segundo registro Rss.w1 322 do segundo par de registro de entrada 320 pode ser realinhado no segundo registro Rdd.w1 332 do par de registro de saída 330.
[0064] O método 600 da Figura 6 pode possibilitar a execução de instruções de criptografia aritmética dedicada (por exemplo, enquanto criptografa os fluxos de vídeo). Os processadores configurados para executar instruções de criptografia aritmética dedicada (por exemplo, o processador 110) podem criptografar fluxos de vídeo mais rápido do que os processadores que executam um algoritmo de criptografia de vídeo (por exemplo, CABAC) com o uso de múltiplas instruções para fins gerais. Por exemplo, a capacidade de executar uma instrução de criptografia aritmética dedicada pode possibilitar que um processador realize operações de criptografia complexas e demoradas em menos ciclos de execução do que com o uso de instruções para fins gerais.
[0065] A Figura 7 é um diagrama de blocos de um dispositivo sem fio 700. Uma memória 732 no dispositivo sem fio 700 inclui instruções para fins gerais 752 e uma instrução de criptografia aritmética dedicada 754. O dispositivo sem fio 700 inclui um processador 710, como um processador de sinal digital, acoplado à memória 732. Em um aspecto ilustrativo, o processador 710 pode incluir o processador 110 da Figura 1, e a memória 732 pode incluir a memória 120 da Figura 1. A memória 732 pode ser um meio de armazenamento legível por computador.
[0066] Em um aspecto específico, as instruções para fins gerais 752 e a instrução de criptografia aritmética dedicada 754 são usadas em um aplicativo de criptografia ou algum outro software de criptografia que é armazenado na memória 732. Por exemplo, as instruções para fins gerais 752 e a instrução de criptografia aritmética dedicada 754 podem ser usadas em um aplicativo de criptografia de CABAC que é usado para criptografar o vídeo. O dispositivo sem fio 700 também inclui a lógica 712 para executar a instrução de criptografia aritmética dedicada 754. Em um aspecto ilustrativo, a lógica 712 inclui a lógica 400 da Figura 4. Em um aspecto específico, a lógica 712 é uma unidade de execução do processador 710 que é configurada para executar instruções para fins gerais 752 e a instrução de criptografia aritmética dedicada 754.
[0067] Em um aspecto específico, a instrução de criptografia aritmética dedicada 754 é uma única instrução. Em um aspecto específico, as instruções para fins gerais 752 e a instrução de criptografia aritmética dedicada 754 possibilitam que o dispositivo sem fio 700 criptografe um fluxo de vídeo criptografado por CABAC compatível com H.264 ou um fluxo de vídeo criptografado por CABAC compatível com H.265. A lógica 712 é empregada pelo processador 710 para executar a instrução de criptografia aritmética dedicada 754. Em um aspecto específico, a execução da instrução de criptografia aritmética dedicada 754 inclui recuperar, processar e armazenar dados conforme descritos no presente documento em relação à Figura 4.
[0068] A Figura 7 também mostra um controlador de visor 726 opcional que é acoplado ao processador 710 e a um visor 728. Um codificador/decodificador (CODEC) 734 também pode ser acoplado ao processador de sinal digital 710. Um alto-falante 736 e um microfone 738 podem ser acoplados a CODEC 734. A Figura 7 também indica que um controlador sem fio 740 pode ser acoplado ao processador 710 e a uma antena 742. Em um aspecto específico, o processador 710, o controlador de visor 726, a memória 732, o CODEC 734 e o controlador sem fio 740 são incluídos em um dispositivo de sistema em pacote ou sistema em um chip 722. Em um aspecto específico, um dispositivo de entrada 730 e uma fonte de alimentação 744 são acoplados ao dispositivo de sistema em um único chip 722. Além do mais, em um aspecto específico, conforme ilustrado na Figura 7, o visor 728, o dispositivo de entrada 730, o alto-falante 736, o microfone 738, a antena 742 e a fonte de alimentação 744 são externos ao dispositivo de sistema em um único chip 722. No entanto, cada um pode ser acoplado a um componente do dispositivo de sistema em um único chip 722, como por meio de uma interface ou um controlador. Em um aspecto ilustrativo, o dispositivo sem fio 700 é um telefone celular, um telefone inteligente ou um assistente pessoal digital (PDA). Desse modo, o dispositivo sem fio 700 pode criptografar um fluxo de vídeo e transmitir o fluxo de vídeo criptografado por meio da antena 742. O fluxo de vídeo pode ser criptografado com o uso das instruções para fins gerais 752 e uma ou mais das instruções de criptografia aritmética dedicada 754 executadas pela lógica 712 do processador 710.
[0069] Deve-se notar que embora a Figura 7 retrata o dispositivo sem fio 700, a lógica 712, as instruções para fins gerais 752 e a instrução de criptografia aritmética dedicada 754 podem, alternativamente, estar incluídos em outros dispositivos, como um decodificador de sinais, um reprodutor de música, um reprodutor de vídeo, uma unidade de entretenimento, um dispositivo de navegação, um dispositivo de comunicações, uma unidade de dados de localização fixa ou um computador.
[0070] Em conjunto com os aspectos descritos, um aparelho é revelado que inclui meios para armazenar instruções para fins gerais e uma instrução de criptografia aritmética dedicada. Por exemplo, os meios para armazenamento podem incluir a memória 120 da Figura 1, a memória 732 da Figura 7, um ou mais outros dispositivos, circuitos ou módulos para armazenar instruções para fins gerais e uma instrução de criptografia aritmética dedicada ou qualquer combinação dos mesmos.
[0071] O aparelho também pode incluir meios para executar as instruções para fins gerais e a instrução de criptografia aritmética dedicada. Por exemplo, os meios para execução podem incluir o processador 110 da Figura 1, a lógica de execução de instrução para fins gerais 112 da Figura 1, a lógica de execução de instrução de criptografia aritmética dedicada 114 da Figura 1, o registro predicado 340 da Figura 3, o primeiro par de registro de entrada 310 da Figura 3, o segundo par de registro de entrada 320 da Figura 3, o par de registro de saída 330 da Figura 3, a lógica 400 da Figura 4, o processador 710 da Figura 7, a lógica 712 para executar instruções de criptografia aritmética dedicada 754 da Figura 7, um ou mais outros dispositivos, circuitos ou módulos para executar as instruções para fins gerais e a instrução de criptografia aritmética dedicada ou qualquer combinação dos mesmos.
[0072] Aqueles versados irão observar adicionalmente que os vários blocos lógicos, configurações, modelos, circuitos e etapas de algoritmo ilustrativos descritos em conjunto com os aspectos revelados no presente documento podem ser implantados como hardware eletrônico, software de computador executado por um processador ou combinações de ambos. Vários componentes, blocos, configurações, módulos, circuitos e etapas ilustrativos foram descritos acima em termos gerais de sua funcionalidade. Se tal funcionalidade for implantada como hardware ou instruções executáveis por processador, depende das restrições de projeto e pedido particular impostas no sistema geral. Os versados na técnica podem implantar a funcionalidade descrita de vários modos para cada aplicação específica, mas tais decisões de implantação não devem ser interpretadas como ocasionando um afastamento do escopo da presente revelação.
[0073] As etapas de um método ou algoritmo descritas em conjunto com os aspectos revelados no presente documento podem ser embutidas diretamente em hardware, em um módulo de software executado por um processador, ou em uma combinação dos dois. Um módulo de software pode residir na memória de acesso aleatório (RAM), memória flash, memória somente de leitura (ROM), memória somente de leitura programável (PROM), memória somente de leitura programável e apagável (EPROM), memória somente de leitura eletricamente programável e apagável (EEPROM), registros, disco rígido, um disco removível, uma memória somente de leitura de disco rígido compacto (CD-ROM) ou qualquer outra forma de meio de armazenamento não transiente conhecido na técnica. Um meio de armazenamento exemplificativo é acoplado ao processador de modo que o processador possa ler as informações do meio de armazenamento e escrever as informações no mesmo. Alternativamente, o meio de armazenamento pode ser integral ao processador. O processador e o meio de armazenamento podem residir em um circuito integrado de aplicação específica (ASIC). O ASIC pode residir em um dispositivo de computação ou um terminal de usuário. Alternativamente, o processador e o meio de armazenamento podem residir como componentes discretos em um dispositivo de computação ou terminal de usuário.
[0074] A descrição anterior dos aspectos revelados é fornecida para possibilitar que uma pessoa versada na técnica reproduza ou use os aspectos revelados. Várias modificações nos aspectos serão prontamente evidentes aos versados na técnica, e os princípios definidos no presente documento podem ser aplicados a outros aspectos sem se afastar do escopo da revelação. Assim, a presente revelação não se destina se limitar aos aspectos mostrados no presente documento, mas deve estar de acordo com o mais amplo escopo possível consistente com os princípios e os recursos inovadores conforme definidos pelas reivindicações a seguir.

Claims (15)

1. Aparelho (100) adaptado para codificar fluxos de vídeo usando um esquema de criptografia de codificação aritmética binária adaptativa a contexto (CABAC) caracterizado pelo fato de que compreende: uma memória (120); um registro predicado (340) configurado para armazenar um valor de bin de entrada(350); e um processador (110) acoplado à memória, sendo que o processador é configurado para: executar uma instrução de criptografia aritmética binária adaptativa a contexto, CABAC, (202, 222), em que a instrução de criptografia CABAC é configurada para aceitar uma pluralidade de entradas que inclui uma primeira faixa (304), um primeiro deslocamento (305), e um primeiro estado (301) e para produzir uma ou mais saídas com base na pluralidade de entradas; e em que um valor da pelo menos uma saída das uma ou mais saídas é computável com base no valor de bin de entrada (350); a instrução de criptografia de CABAC fazendo o processador: determinar, em um comparador (414), um primeiro valor de saída do comparador com base em uma comparação entre um primeiro valor de entrada do comparador e um segundo valor de entrada do comparador, em que o primeiro valor de entrada do comparador é baseado em um bit de símbolo mais provável, MPS (302), de entrada armazenado em um primeiro par de registro de entrada, e o segundo valor de entrada do comparador é baseado no valor de bin de entrada (350); realizar renormalização na primeira faixa e no primeiro deslocamento para gerar um ou mais valores da primeira faixa que são maiores do que ou iguais a um limite; e com base nas uma ou mais saídas da instrução de criptografia CABAC incluindo a saída do comparador, a instrução de criptografia CABAC fazendo o processador: armazenar um segundo estado (308); realinhar a primeira faixa para produzir uma segunda faixa (306); e realinhar o primeiro deslocamento para produzir um segundo deslocamento (309).
2. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que a instrução de criptografia CABAC é executável pelo processador para criptografar um fluxo de vídeo com o uso de um esquema de codificação por entropia, e em que o esquema de codificação por entropia é CABAC.
3. Aparelho, de acordo com a reivindicação 2, caracterizado pelo fato de que o primeiro estado inclui bits de estado de CABAC, em que a primeira faixa inclui bits de faixa de CABAC, em que o primeiro deslocamento inclui bits de deslocamento de CABAC, em que a pluralidade de entradas inclui ainda um bit MPS de CABAC, posição de bit CABAC, bitpos, bts, e um bin de valor de entrada, e compreende adicionalmente um primeiro par de registro de entrada e um segundo par de registro de entrada, em que o processador é adicionalmente configurado para: recuperar bits de estado de CABAC e o bit de MPS de CABAC de um primeiro registro do primeiro par de registro de entrada; recuperar os bits de bitpos de CABAC de um segundo registro do primeiro par de registro de entrada; recuperar os bits de faixa de CABAC a partir de um terceiro registro do segundo par de registro de entrada; recuperar os bits de deslocamento CABAC a partir de um quarto registro do segundo par de registro de entrada; e recuperar o valor de bin de entrada a partir do registro predicado.
4. Aparelho, de acordo com a reivindicação 2, caracterizado pelo fato de que o segundo estado inclui bits de estado de CABAC, em que a segunda faixa inclui bits de faixa de CABAC, em que o segundo deslocamento inclui bits de deslocamento de CABAC, e em que a instrução de criptografia CABAC gera um bit de MPS de CABAC, e compreendendo ainda um par de registro de saída, em que o processador é adicionalmente configurado para: armazenar os bits de estado de CABAC, o bit de MPS de CABAC e os bits de faixa de CABAC em um primeiro registro do par de registro de saída; e armazenar os bits de deslocamento de CABAC de uma maneira normalizada em um segundo registro do par de registro de saída.
5. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que a instrução de criptografia CABAC é executável pelo processador sem separar a instrução de criptografia CABAC em uma ou mais instruções para fins gerais, e em que a lógica configurada para executar as uma ou mais instruções para fins gerais e lógica configurada para executar a instrução de criptografia CABAC corresponde a uma unidade de execução comum do processador.
6. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que a instrução de criptografia CABAC é uma única instrução de um conjunto de instruções do processador que pode ser executada em menos do que três ciclos de execução, e em que o processador compreende um processador de palavra de instrução muito grande multiexecutada em pipeline (VLIW).
7. Método para codificar fluxos de vídeo usando um esquema de criptografia de codificação aritmética binária adaptativa a contexto, CABAC, caracterizado pelo fato de que compreende: armazenar um valor de bin de entrada (350) em um registro predicado (340); executar, em um processador (110), uma instrução de criptografia aritmética binária adaptativa a contexto, CABAC , em que a instrução de criptografia CABAC aceita uma pluralidade de entradas que inclui uma primeira faixa (304), um primeiro deslocamento (305), e um primeiro estado (301) e produz uma ou mais saídas com base na pluralidade de entradas; e em que um valor de pelo menos uma saída de uma ou mais saídas é computável com base no valor de bin de entrada (350); a instrução de criptografia CABAC fazendo o processador: determinar, em um comparador (414), um primeiro valor de saída do comparador com base em uma comparação entre um primeiro valor de entrada do comparador (302) e um segundo valor de entrada do comparador (350), em que o primeiro valor de entrada do comparador é baseado em um bit de símbolo mais provável, MPS (302), de codificação aritmética binária adaptativa a contexto, CABAC, armazenado em um primeiro par de registro de entrada (310), e o segundo valor de entrada do comparador é baseado no valor de bin de entrada; realizar a renormalização da primeira faixa e o primeiro deslocamento para gerar um ou mais valores da primeira faixa que são maiores ou iguais a um limitar; e com base nas uma ou mais saídas da instrução de criptografia CABAC incluindo a saída de comparador, armazenar um segundo estado (308), realinhar a primeira faixa renormalizada para produzir uma segunda faixa (306), e realinhar o primeiro deslocamento renormalizado para produzir um segundo deslocamento (309).
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que a execução da instrução de criptografia CABAC compreende: fornecer a primeira faixa a um comutador; e usar o primeiro estado como valor de pesquisa de índice para uma tabela de pesquisa de aritmética binária adaptativa a contexto (CABAC), em que a tabela de pesquisa de CABAC é permanentemente codificada ou pode ser escrita novamente.
9. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que compreende adicionalmente: realizar a renormalização no segundo deslocamento independente de um bit de portadora do segundo deslocamento; inserir múltiplos bytes do segundo deslocamento em um fluxo de bits; e transmitir o fluxo de bits para um decodificador.
10. Memória legível por computador caracterizada pelo fato de que compreende instruções nela armazendas que, quando executadas, fazem com que o computador realize o método conforme definido em qualquer uma das reivindicações 7 a 9.
11. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: um primeiro par de registro de entrada configurado para armazenar o primeiro estado, um bit MPS de CABAC, posição de bit CABAC, bitpos, bits ou uma combinação destes; e um segundo par de registro de entrada configurado para armazenar a primeira faixa, o primeiro deslocamento ou uma combinação destes, em que o primeiro estado inclui bits de estado de CABAC, a primeira faixa inclui bits de faixa de CABAC, e o primeiro deslocamento inclui bits de deslocamento de CABAC.
12. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que o comparador é configurado ainda para: receber o primeiro valor de entrada do comparador, o primeiro valor de entrada do comparador com base no bit de MPS de CABAC armazenado no primeiro par de registro de entrada; e receber o segundo valor de entrada de comparador.
13. Aparelho, de acordo com a reivindicação 12, caracterizado pelo fato de que compreende ainda um inversor configurado para: receber um primeiro valor de entrada do inversor, o primeiro valor de entrada do inversor com base nos bits de estado de CABAC do primeiro par de registro de entrada; e gerar um primeiro valor de saída do inversor com base no valor de entrada do inversor.
14. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda uma porta lógica configurada para: receber o primeiro valor de entrada do comparador de um comparador; receber um primeiro valor de saída do inversor de um inversor, o primeiro valor de saída do inversor com base no primeiro estado; e determinar um valor de saída da porta lógica com base no primeiro valor de saída do comparador e o primeiro valor de saída do inversor.
15. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda uma porta lógica configurada para determinar um valor de saída da porta lógica com base no primeiro valor de saída do comparador e um primeiro valor de saída do inversor, em que o primeiro valor de saída do comparador é baseado na comparação o primeiro valor de entrada do comparador e o segundo de entrada do comparador, e em que o primeiro valor de do inversor é baseado no primeiro estado.
BR112016027558-6A 2014-05-27 2015-04-30 Aparelho e método para codificar fluxos de vídeo usando um esquema de criptografia de codificação aritmética binária adaptativa a contexto e memória legível por computador BR112016027558B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/288,018 2014-05-27
US14/288,018 US9455743B2 (en) 2014-05-27 2014-05-27 Dedicated arithmetic encoding instruction
PCT/US2015/028443 WO2015183462A1 (en) 2014-05-27 2015-04-30 Dedicated arithmetic encoding instruction

Publications (2)

Publication Number Publication Date
BR112016027558A2 BR112016027558A2 (pt) 2017-08-15
BR112016027558B1 true BR112016027558B1 (pt) 2023-03-14

Family

ID=53267582

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016027558-6A BR112016027558B1 (pt) 2014-05-27 2015-04-30 Aparelho e método para codificar fluxos de vídeo usando um esquema de criptografia de codificação aritmética binária adaptativa a contexto e memória legível por computador

Country Status (10)

Country Link
US (1) US9455743B2 (pt)
EP (1) EP3149947B1 (pt)
JP (1) JP6695813B2 (pt)
KR (1) KR102296153B1 (pt)
CN (1) CN106415484B (pt)
BR (1) BR112016027558B1 (pt)
CA (1) CA2947856A1 (pt)
ES (1) ES2826425T3 (pt)
TW (1) TWI669945B (pt)
WO (1) WO2015183462A1 (pt)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107743239B (zh) * 2014-09-23 2020-06-16 清华大学 一种视频数据编码、解码的方法及装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0586057B1 (en) * 1992-08-31 2000-03-01 Sun Microsystems, Inc. Rapid instruction (pre)fetching and dispatching using prior (pre)fetch predictive annotations
US7769088B2 (en) * 2003-05-28 2010-08-03 Broadcom Corporation Context adaptive binary arithmetic code decoding engine
US7061410B1 (en) * 2005-07-18 2006-06-13 Lsi Logic Corporation Method and/or apparatus for transcoding between H.264 CABAC and CAVLC entropy coding modes
CN100466739C (zh) * 2005-10-12 2009-03-04 华为技术有限公司 Cabac解码系统及方法
TWI428850B (zh) * 2006-06-08 2014-03-01 Via Tech Inc 解碼方法
US7656326B2 (en) 2006-06-08 2010-02-02 Via Technologies, Inc. Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit
US8749409B2 (en) 2006-08-25 2014-06-10 Sony Computer Entertainment Inc. Entropy decoding methods and apparatus using most probable and least probable signal cases
US7561082B2 (en) 2006-12-29 2009-07-14 Intel Corporation High performance renormalization for binary arithmetic video coding
CN100531386C (zh) * 2007-06-15 2009-08-19 上海富瀚微电子有限公司 一种上下文自适应二进制算术编码器及其方法
US7839311B2 (en) * 2007-08-31 2010-11-23 Qualcomm Incorporated Architecture for multi-stage decoding of a CABAC bitstream
US8782379B2 (en) * 2007-09-27 2014-07-15 Qualcomm Incorporated H.264 video decoder CABAC core optimization techniques
US7777654B2 (en) * 2007-10-16 2010-08-17 Industrial Technology Research Institute System and method for context-based adaptive binary arithematic encoding and decoding
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
US7982641B1 (en) 2008-11-06 2011-07-19 Marvell International Ltd. Context-based adaptive binary arithmetic coding engine
US8638850B2 (en) * 2009-05-06 2014-01-28 Advanced Micro Devices, Inc. Execution units for context adaptive binary arithmetic coding (CABAC)
US20110125987A1 (en) 2009-11-20 2011-05-26 Qualcomm Incorporated Dedicated Arithmetic Decoding Instruction
US8913662B2 (en) * 2011-01-06 2014-12-16 Qualcomm Incorporated Indicating intra-prediction mode selection for video coding using CABAC
WO2013050612A1 (en) 2011-10-06 2013-04-11 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Entropy coding buffer arrangement
US10289412B2 (en) * 2012-02-09 2019-05-14 Qualcomm Incorporated Floating point constant generation instruction

Also Published As

Publication number Publication date
ES2826425T3 (es) 2021-05-18
BR112016027558A2 (pt) 2017-08-15
CA2947856A1 (en) 2015-12-03
US20150349796A1 (en) 2015-12-03
US9455743B2 (en) 2016-09-27
EP3149947B1 (en) 2020-07-22
WO2015183462A1 (en) 2015-12-03
TW201607294A (zh) 2016-02-16
JP6695813B2 (ja) 2020-05-20
EP3149947A1 (en) 2017-04-05
KR20170013222A (ko) 2017-02-06
KR102296153B1 (ko) 2021-08-30
CN106415484A (zh) 2017-02-15
CN106415484B (zh) 2019-02-01
TWI669945B (zh) 2019-08-21
JP2017525005A (ja) 2017-08-31

Similar Documents

Publication Publication Date Title
JP6381546B2 (ja) 多バイト・フレームのパイプライン化圧縮のための方法、符号化データ・ストリームへの高帯域圧縮のための装置、およびコンピュータ・プログラム製品
TW201347409A (zh) 狀態機晶格中之布林邏輯
US10248498B2 (en) Cyclic redundancy check calculation for multiple blocks of a message
CN106664101B (zh) 自适应速率压缩散列处理装置
JP2021527376A (ja) データ圧縮
US10706018B2 (en) Bandwidth-efficient installation of software on target devices using reference code libraries
US20220092034A1 (en) System and methods for bandwidth-efficient cryptographic data transfer
US8868584B2 (en) Compression pattern matching
US20240028563A1 (en) System and method for securing high-speed intrachip communications
BR112016027558B1 (pt) Aparelho e método para codificar fluxos de vídeo usando um esquema de criptografia de codificação aritmética binária adaptativa a contexto e memória legível por computador
US20110125987A1 (en) Dedicated Arithmetic Decoding Instruction
US11734231B2 (en) System and methods for bandwidth-efficient encoding of genomic data
US9825649B1 (en) Efficient huffman decoder improvements
JP2016052046A (ja) 圧縮装置、伸長装置およびストレージ装置
US11838034B2 (en) System and method for blockchain data compaction
US20230385242A1 (en) System and methods for bandwidth-efficient data encoding
CN110659508B (zh) 一种基于卢卡斯数列的加解密方法、设备及可读介质
US10579375B2 (en) Method to build reconfigurable variable length comparators
CN107850994A (zh) 具有单端输入的n位比较逻辑

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 19/91 , G06F 9/30 , G06F 9/38

Ipc: H03M 7/40 (2006.01), G06F 9/30 (2018.01), G06F 9/3

B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 30/04/2015, OBSERVADAS AS CONDICOES LEGAIS