BR112019010741B1 - Método e aparelho para acessar dispositivos de memória de porta única como dispositivos de pseudomemória de duas portas - Google Patents
Método e aparelho para acessar dispositivos de memória de porta única como dispositivos de pseudomemória de duas portas Download PDFInfo
- Publication number
- BR112019010741B1 BR112019010741B1 BR112019010741-0A BR112019010741A BR112019010741B1 BR 112019010741 B1 BR112019010741 B1 BR 112019010741B1 BR 112019010741 A BR112019010741 A BR 112019010741A BR 112019010741 B1 BR112019010741 B1 BR 112019010741B1
- Authority
- BR
- Brazil
- Prior art keywords
- port
- memory device
- read
- memory devices
- access table
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 51
- 230000003111 delayed effect Effects 0.000 claims description 4
- 238000013461 design Methods 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims description 2
- 238000011084 recovery Methods 0.000 claims 1
- 238000013507 mapping Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 21
- 238000004364 calculation method Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 13
- 230000003287 optical effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1039—Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
- G11C7/222—Clock generating, synchronizing or distributing circuits within memory device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/10—Decoders
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6566—Implementations concerning memory access contentions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1075—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6563—Implementations using multi-port memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Probability & Statistics with Applications (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Dram (AREA)
- Static Random-Access Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
um método e um aparelho permitem que dispositivos de memória de porta única sejam acessados como dispositivos de pseudo-memória de duas portas. uma tabela de acesso é criada para mapear o dispositivo de memória de porta única para um banco par de porta única e um banco ímpar de porta única. o dispositivo de memória de porta única é acessado com base no mapeamento. um número inicial de entradas da tabela de acesso é recuperado para ler os endereços no dispositivo de memória até que um atraso predeterminado expire. operações simultâneas são, então, realizadas para ler as linhas no dispositivo de memória e registrar em linhas no dispositivo de memória. depois que todos os endereços de memória tiverem sido lidos, as operações de registro são executadas sequencialmente nas linhas do dispositivo de memória com base nas entradas restantes da tabela de acesso.
Description
[0001] Com a crescente demanda por dados de usuários, há também uma demanda contínua por maior modulação. A alta modulação, no entanto, normalmente requer durações mais curtas de burst e, consequentemente, menor tempo de processamento do descodificador. Os descodificadores convencionais utilizam arquiteturas de memória de porta única para reduzir o tamanho e os custos. As arquiteturas de memória de porta única apenas facilitam o acesso de leitura ou registro durante um determinado ciclo de relógio da CPU ou do barramento. As operações de leitura e registro não podem ser realizadas simultaneamente no mesmo ciclo de relógio. Consequentemente, são necessários dois ciclos de relógio para concluir operações que leem e atualizem (registram) para a memória, como aquelas realizadas pelos descodificadores de verificação de paridade de baixa densidade (LDPC).
[0002] Várias alterações de hardware podem ser feitas para fornecer configurações de descodificador capazes de atender às demandas de maior modulação. Tais configurações, no entanto, são normalmente realizadas com um aumento no tamanho e custo do dispositivo resultante. Por exemplo, um ou mais dispositivos de memória de porta única podem ser substituídos por dispositivos de memória de porta dupla para facilitar o acesso simultâneo a operações de leitura e registro em um ciclo de relógio. Os dispositivos de memória de porta dupla são fisicamente maiores (por exemplo, 2 a 3 vezes), aumentam o consumo de energia e são mais caros do que os dispositivos de memória de porta única correspondentes. Assim, embora sejam capazes de atender às demandas de modulação e processamento, os dispositivos de memória de acesso duplo aumentam o tamanho e o custo do descodificador. Além disso, tais aumentos podem proibir o uso do descodificador em dispositivos com limitações de espaço estritas.
[0003] Outra configuração para atender às demandas de maior modulação requer aumentar a velocidade do relógio do descodificador. Essa configuração permite o uso de dispositivos de memória de porta única existente e não requer alterações nos motores de processamento do descodificador. Aumentar a velocidade do relógio do descodificador, no entanto, também aumentará o consumo de energia dinâmica e possivelmente exigirá o redesenho de algumas das lógicas do descodificador. Também será difícil encontrar as restrições de tempo a uma velocidade muito alta.
[0004] O número de mecanismos de processamento no descodificador também pode ser aumentado junto com um aumento proporcional na largura do dispositivo de memória. Tais configurações, no entanto, normalmente exigem um aumento no tamanho do lógico e alto paralelismo, o que acaba dificultando o roteamento. Além disso, a largura aumentada do dispositivo de memória ocupará mais espaço. Várias combinações das configurações anteriores também podem ser aplicadas. No entanto, as mesmas desvantagens persistirão.
[0005] Com base no exposto acima, existe uma necessidade de uma abordagem para aumentar significativamente a produtividade do descodificador para acomodar modulações aumentadas e durações reduzidas da rajada, sem aumentos significativos na área e/ou energia.
[0006] Um aparelho e método são divulgados para acessar dispositivos de memória de porta única como dispositivos de pseudomemória de duas portas. De acordo com uma modalidade, o aparelho inclui um dispositivo de memória de porta única; um dispositivo de pseudomemória de duas portas incluindo um banco par de porta única e um banco ímpar de porta única; e um controlador, incluindo microcódigo contendo uma ou mais instruções. O microcódigo configura o controlador para: gerar uma tabela de acesso para mapear o dispositivo de memória de porta única para o dispositivo de pseudomemória de duas portas, recuperar sequencialmente entradas da tabela de acesso, ler a partir dos endereços no dispositivo de memória de porta única correspondente as n entradas das entradas, em que n corresponde a um atraso de pipeline medido em ciclos de relógio do controlador, conduzir operações simultâneas para leitura dos endereços no dispositivo de memória de porta única correspondente às entradas restantes da tabela de acesso e para registrar endereços no dispositivo de memória de porta única correspondente às entradas restantes da tabela de acesso atrasada por n ciclos de relógio, até todos os endereços no dispositivo de memória de porta única correspondentes às entradas recuperadas terem sido lidos; e registrar os endereços no dispositivo de memória de porta única correspondente a quaisquer entradas restantes da tabela de acesso. As operações de leitura e registro para o dispositivo de memória de porta única são realizadas através do dispositivo de pseudomemória de duas portas.
[0007] De acordo com outra modalidade o método inclui: gerar uma tabela de acesso para mapear o dispositivo de memória de porta única para um dispositivo de pseudomemória de duas portas incluindo um banco par de porta única e um banco ímpar de porta única, recuperar sequencialmente entradas da tabela de acesso, ler a partir dos endereços no dispositivo de memória de porta única correspondente as n entradas das entradas, em que n corresponde a um atraso de pipeline medido em ciclos de relógio da CPU, conduzir operações simultâneas para leitura dos endereços no dispositivo de memória de porta única correspondente às entradas restantes da tabela de acesso e para registrar endereços no dispositivo de memória de porta única correspondente às entradas restantes da tabela de acesso atrasada por n ciclos de relógio, até todos os endereços no dispositivo de memória de porta única correspondentes às entradas recuperadas terem sido lidos; e registrar os endereços no dispositivo de memória de porta única correspondente a quaisquer entradas restantes da tabela de acesso.
[0008] O sumário descrito acima se destina apenas a fornecer uma breve introdução aos recursos selecionados, que são descritos em maiores detalhes abaixo na descrição detalhada. Assim, este sumário não pretende identificar, representar ou destacar recursos considerados essenciais ou essenciais para o assunto reivindicado. Além disso, este sumário não se destina a ser utilizado como um auxílio para determinar o escopo da matéria reivindicada.
[0009] Várias modalidades exemplificativas são ilustradas a título de exemplo, e não como limitação, nas figuras dos desenhos anexos nos quais números de referência similares se referem a elementos similares e em que:
[0010] A FIG. 1A é um diagrama que ilustra vários componentes de um descodificador de LDPC convencional;
[0011] A FIG. 1B é um diagrama do acesso à memória para o descodificador de LDPC da FIG. 1A;
[0012] A FIG. 2 é um diagrama que ilustra o hardware para converter dispositivo de memória de porta única em um dispositivo de pseudomemória de duas portas, de acordo com uma modalidade;
[0013] A FIG. 3A ilustra uma parte de uma tabela de acesso ao descodificador para acessar o dispositivo de memória de porta única como um dispositivo de pseudomemória de duas portas, de acordo com uma modalidade;
[0014] A FIG. 3B é um diagrama que ilustra o acesso a memória para um dispositivo de pseudomemória de duas portas, de acordo com uma modalidade;
[0015] A FIG. 4A ilustra uma parte de uma tabela de acesso ao descodificador para acessar o dispositivo de memória de porta única como um dispositivo de pseudomemória de duas portas, de acordo com modalidades adicionais;
[0016] A FIG. 4B é um diagrama que ilustra o acesso a memória para um dispositivo de pseudomemória de duas portas, de acordo com modalidades adicionais;
[0017] A FIG. 5 é um diagrama que ilustra o acesso a memória para um dispositivo de pseudomemória de duas portas, de acordo com outra modalidade;
[0018] A FIG. 6 é um diagrama que ilustra vários componentes de um descodificador LDPC que incorpora dispositivo de pseudomemória de duas portas, de acordo com uma ou mais modalidades;
[0019] A FIG. 7 é fluxograma de um processo para acessar o dispositivo de memória de porta única como um dispositivo de pseudomemória de duas portas, de acordo com uma modalidade;
[0020] As FIGs. 8A e 8B são fluxograma de um processo para acessar o dispositivo de memória de porta única como um dispositivo de pseudomemória de duas portas, de acordo com outra modalidade;
[0021] A FIG. 9 é um diagrama de um sistema de computador que pode ser utilizado para implementar várias modalidades exemplificativas; e
[0022] A FIG. 10 é um diagrama de um conjunto de chips que pode ser utilizado para implementar várias modalidades exemplificativas.
[0023] Um aparelho e método para acessar dispositivos de memória de porta única como dispositivos de pseudomemória de duas portas são divulgados. Na descrição que se segue, para fins de explicação, numerosos detalhes específicos são estabelecidos a fim de fornecer uma compreensão completa das modalidades divulgadas. Além disso, várias modalidades são discutidas em conexão com um descodificador. Será aparente, contudo, para um versado na técnica que várias modalidades podem ser praticadas sem estes detalhes específicos ou com uma disposição equivalente. Por exemplo, os recursos das modalidades descritas podem ser aplicados a descodificadores LDPC de crença em camadas, descodificadores LDPC de crença padrão ou quaisquer dispositivos capazes de utilizar uma configuração de pseudomemória de duas portas para reduzir o tempo de processamento e/ou aumentar o acesso a um dispositivo de memória de porta única. Em outros casos, as estruturas e dispositivos bem conhecidos são mostrados na forma de diagrama de blocos, a fim de evitar obscurecer desnecessariamente as várias modalidades.
[0024] A FIG. 1A ilustra componentes de um descodificador convencional 100 que incorpora dispositivos de memória de porta única. O descodificador 100 inclui um mecanismo de computação 110 que está configurado para realizar vários cálculos e/ou funções durante a operação do descodificador 100. Como ilustrado na FIG. 1A, o mecanismo de computação 110 pode incluir uma pluralidade de caminhos de dados 112. Os caminhos de dados 112 podem ser configurados para realizar simultaneamente várias tarefas. Por exemplo, cada caminho de dados 112 pode ser configurado para recuperar informação específica e simultaneamente realizar cálculos específicos para a informação recuperada.
[0025] O descodificador 100 também inclui um controlador 114 e o microcódigo 116 para monitorar e controlar todas as atividades do mecanismo de computação. Mais particularmente, o microcódigo 116 pode ser armazenado em uma parte de memória não volátil para realização pelo controlador 114. O microcódigo 116 conterá as instruções necessárias que, após a realização pelo controlador 114, resultam em operações específicas para controlar todos os aspectos do mecanismo de computação 110 e/ou descodificador 100. Tal como ilustrado na FIG. 1A, o descodificador 100 também inclui dispositivos de memórias múltiplas, nomeadamente um dispositivo de memória RAM de bordo 118, um dispositivo de memória RAM de canal 120 e um dispositivo de memória FIFO 122. Os dispositivos de memória (118, 120, 122) estão na forma de dispositivos de porta única que permitem apenas uma operação (por exemplo, leitura ou registro) por ciclo de relógio. Por exemplo, durante um dado ciclo de relógio, a informação pode ser lida ou registrada no dispositivo de memória RAM do canal 120. As operações de leitura, no entanto, não podem ser realizadas simultaneamente com operações de registro. Assim, a fim de completar uma operação de leitura e uma operação de registro com o dispositivo de memória RAM de canal 120, são necessários dois ciclos de relógio.
[0026] Os dispositivos de memória (118, 120, 122) são tipicamente configurados como dispositivos de porta única devido às restrições físicas e de custo associadas ao descodificador 100. Por exemplo, o uso de dispositivos de memória de duas portas pode aumentar potencialmente o tamanho físico do descodificador 100 em mais de 30%. Adicionalmente, os custos associados com a produção do descodificador 100 aumentariam grandemente. Consequentemente, todos os dispositivos de memória (borda de RAM 118, canal RAM 120 e FIFO 122) são configurados como dispositivos de porta única, que requerem dois ciclos de relógio para realizar uma transação combinada de leitura/registro.
[0027] A FIG. 1B ilustra o acesso da memória para o descodificador 100 ilustrado na FIG. 1A. Durante certas operações, é necessário que o mecanismo de computação 110 leia/registre informações de/para os diferentes dispositivos de memória (118, 120, 122). Por exemplo, de acordo com uma operação, o mecanismo de computação 110 lê informações a partir do dispositivo de memória RAM de canal 120, realiza vários cálculos e grava subsequentemente os resultados dos cálculos de volta aos mesmos locais no dispositivo de memória RAM de canal 120. Como ilustrado na FIG. 1A, o mecanismo de computação 110 contém 360 caminhos de dados 112 que são capazes de processar simultaneamente informação recuperada a partir de várias localizações do dispositivo de memória RAM de canal 120. O descodificador 100 pode geralmente incluir um dispositivo de memória RAM de canal 120 capaz de armazenar informação que é significativamente maior do que o tamanho do mecanismo de computação 110. Isto resulta no mecanismo de computação 110 processando apenas um subconjunto da informação contida no dispositivo de memória RAM de canal 120 até que todo o conteúdo possa ser acessado.
[0028] Por exemplo, o mecanismo de computação 110 pode executar uma primeira série de operações de leitura 150 (também denotada como R1) para acessar uma parte do conteúdo armazenado no dispositivo de memória RAM de canal 120. Em seguida, o mecanismo de computação 110 processa a informação lida a partir do dispositivo de memória RAM de canal 120 durante a primeira operação de leitura 150. Ao mesmo tempo, o mecanismo de computação 110 realiza uma segunda operação de leitura 160 (também indicada como R2) para acessar informações de uma parte subsequente do dispositivo de memória RAM de canal 120. A quantidade de tempo (em ciclos de relógio) requerida entre a primeira operação de leitura 150 e a segunda operação de leitura 160 é baseada em um grau de nó de verificação associado ao mecanismo de computação 110. Isto é seguido por uma terceira operação de leitura 170 (também indicada como R3) para acessar a próxima parte do dispositivo de memória RAM de canal 120. Uma vez realizada a primeira operação de leitura 150, é necessário um tempo de processamento fixo antes que a informação possa ser atualizada de volta para o dispositivo de memória RAM do canal 120. Um atraso de pipeline associado com a leitura, processamento e registro em um determinado local da memória pode ser determinado como uma soma do atraso do grau do nó de verificação e do atraso de processamento fixo.
[0029] Como discutido anteriormente, as operações de leitura e registro não podem ocorrer simultaneamente para dispositivos de memória de porta única. Os resultados de cálculo da primeira operação de leitura (isto é, operação de primeiro registro 152) e terceira série de operações de leitura 170 são, portanto, intercalados. Mais particularmente, como ilustrado na FIG. 1B, uma vez concluídos os cálculos, é executada uma primeira operação de registro 152, seguida por uma terceira operação de leitura 170, seguida por outra primeira operação de registro 152, seguida por uma terceira operação de leitura 170, etc. Similarmente, quando o mecanismo de computação 110 realiza uma quarta operação de leitura 180, é intercalado com a parte restante da primeira operação de registro 152 e a segunda operação de registro 162. Uma vez que o atraso de processamento inicial tenha expirado, todas as operações de leitura e registro subsequentes para o dispositivo de memória RAM do canal 120 são intercaladas entre si. Como resultado, um tempo de processamento significante (em termos de ciclos de relógio) é necessário para cada iteração do descodificador. Mais particularmente, uma vez que o tempo de processamento é limitado pelo acesso à memória. Cada endereço de memória definido na tabela de acesso será lido uma vez e registrado uma vez durante cada iteração do descodificador. Como resultado, o tempo total de processamento será 2*M+n, em que M é o número de entradas na tabela de acesso e n é o atraso do pipeline.
[0030] A FIG. 2 ilustra a configuração de hardware para converter um dispositivo de memória de porta única em um dispositivo de pseudomemória de duas portas, de acordo com, pelo menos, uma modalidade. Por exemplo, o dispositivo de memória de porta única 220 (ou simplesmente (“dispositivo de memória”) pode ser um dispositivo de memória RAM de canal a partir do qual as informações serão acessadas, processadas e atualizadas. O dispositivo de memória 220 está configurado para ter várias linhas do mesmo tamanho. Como ilustrado na FIG. 2, o dispositivo de memória 220 contém 180 linhas. Cada linha tem colunas P, onde P é o número de fatias do caminho de dados do descodificador. Por exemplo, se o descodificador contiver 360 fatias de caminho de dados, o dispositivo de memória funcionaria como uma matriz bidimensional que possui 180 linhas e 360 colunas. A informação suave que tem múltiplos bits armazenados em cada coluna alimentará uma fatia do mecanismo de computação do descodificador.
[0031] De acordo com pelo menos uma modalidade, o dispositivo de memória 220 é convertido em um dispositivo de pseudomemória de duas portas, mapeando linhas numeradas pares 222 para um banco par de porta única 232, e mapeando as linhas numeradas ímpares 223 para um banco ímpar de porta única 234. Como resultado, as linhas 0, 1, 2, 3., do banco par de porta única 232 contêm valores correspondentes às linhas 0, 2, 4, 6..., do dispositivo de memória 220. Similarmente, as primeiras quatro linhas do banco ímpar de porta única 234 contêm valores correspondentes às linhas 1, 3, 5 e 7 do dispositivo de memória 220. Como será discutido em maiores detalhes abaixo, uma tabela de acesso pode ser criada exclusivamente para permitir que o mecanismo de computação acesse linhas ímpares e pares do dispositivo de memória 220 como um dispositivo de pseudomemória de duas portas 230, superando assim qualquer potencial conflito de leitura/registro e reduzindo o tempo de processamento em até 50%.
[0032] Como ilustrado na FIG. 2, o dispositivo de pseudomemória de duas portas 230 inclui hardware adicional que ajuda a facilitar a leitura e registro simultâneos para o dispositivo de memória 220 durante um único ciclo de relógio. Todos os sinais recebidos pelo dispositivo de memória 220 são também recebidos pelo dispositivo de pseudomemória de duas portas 230, com a exceção do sinal de endereço. Especificamente, o dispositivo de memória 220 recebe um sinal de endereço (Endereço [7:0]) como entrada para determinar a localização a ser usada para quaisquer operações de leitura e registro. De acordo com uma ou mais modalidades, o dispositivo de pseudomemória de duas portas 230 recebe simultaneamente um sinal de endereço de leitura (Rd_Address [7: 0]) bem como um sinal de endereço de registro (Wt_Address [7: 0]) como entrada. Ambos os sinais são fornecidos para um primeiro multiplexador 240 e um segundo multiplexador 242. O sinal Data_in e o sinal de relógio são fornecidos para o banco par de porta única 232 e para o banco ímpar de porta única 234.
[0033] De acordo com várias modalidades, o mecanismo de computação é capaz de realizar operações de leitura e registro simultâneas usando o dispositivo de pseudomemória de duas portas 230. Isso pode ser feito acessando apenas conjuntos ímpares/pares de endereços. Por exemplo, uma linha 222 do banco par de porta única 232 pode ser simultaneamente acessada com uma linha 223 a partir do banco ímpar de porta única 234 e vice-versa. De acordo com pelo menos uma modalidade, isto pode ser conseguido aplicando uma operação OR exclusiva (XOR) aos últimos bits dos endereços de leitura e registro que devem ser acessados simultaneamente. Se o XOR resultante é verdadeiro (ou seja, retorna um valor de 1), ambos os endereços podem ser acessados simultaneamente. Como ilustrado na FIG. 2, o último bit do endereço de registro recebido (Wt_Address [0]) bem como o sinal de permissão de registro (Wen) são fornecidos a uma porta AND 236 para gerar um sinal de permissão de registro ímpar (O_Wen ) que é fornecido ao banco ímpar de porta única 234. A saída da porta AND 236 é também fornecida a uma porta NOT 238 de modo a gerar um sinal de permissão de registro par (E_Wen) que é fornecido ao banco par de porta única 232. A saída do banco de banco par de porta única 232 e banco ímpar de porta única 234 são ambos fornecidos a um terceiro multiplexador 244, de modo a que ambas as operações (por exemplo, ler e registrar) possam ser realizadas simultaneamente e sem gerar conflitos de acesso memória.
[0034] Como discutido anteriormente, vários cálculos podem ser realizados nas informações armazenadas no dispositivo de memória 220 para gerar valores para cada bit que correspondem a uma decisão suave. De acordo com várias modalidades, os cálculos podem ser realizados várias vezes para atualizar continuamente a decisão suave até que um nível de confiança aceitável seja atingido. Os valores para cada bit podem ser enviados como decisões difíceis. Assim, o processo de ler e registrar simultaneamente para o dispositivo de memória 220 pode ser repetido várias vezes, resultando assim em mais reduções no tempo de processamento. Dependendo da implementação específica, várias técnicas conhecidas podem ser aplicadas para obter um nível de confiança aceitável nas decisões suaves atualizadas. Por exemplo, tais técnicas podem incluir, mas não estão limitadas a algoritmos que incorporam soma mínima em camadas, matriz de verificação de paridade, convergência forçada, convergência iterativa, etc. Além disso, o nível de confiança (ou critérios de convergência) pode ser definido, em parte, sobre os requisitos de implementação, o nível de precisão e o tempo de processamento. Alternativamente, os cálculos podem ser realizados em um número predeterminado de vezes sem uma verificação explícita de convergência. De acordo com a modalidade ilustrada, o dispositivo de pseudomemória de duas portas é incorporado em um descodificador de LDPC de crença em camadas. Deve-se notar, no entanto, que o dispositivo de pseudomemória de duas portas também pode ser incorporado em descodificadores LDPC de crença padrão ou quaisquer dispositivos capazes de utilizar uma configuração de pseudomemória de duas portas para reduzir o tempo de processamento e/ou aumentar o acesso a um dispositivo de memória de porta única.
[0035] A FIG. 3A ilustra uma tabela de descodificadores que pode ser utilizada para facilitar o acesso ao dispositivo de memória de porta única 220 como um dispositivo de pseudomemória de duas portas 230, de acordo com, pelo menos, uma modalidade. A tabela de descodificadores 300 inclui uma pluralidade de linhas marcadas com R1, R2, R3, R4, R5, ... Rn. Embora a FIG. 3A ilustre apenas cinco linhas e oito colunas na tabela de descodificadores 300, deve se notar que tal valor não se destina a ser restritivo de qualquer forma. O número de linhas e colunas na tabela de descodificadores 300 pode variar com base nos critérios de design de código e no paralelismo do mecanismo de processamento. Cada linha da tabela de descodificadores 300 também inclui uma pluralidade de colunas. De acordo com a modalidade ilustrada, um grau de nó de verificação para acessar o dispositivo de memória 220 é determinado como sendo 8. Assim, cada linha da tabela de descodificadores 300 contém 8 colunas. Por exemplo, a Linha 1 contém oito colunas identificadas pelos números de referência 310, 311, 312, 313, 314, 315, 316 e 317. A linha 2 contém 8 colunas identificadas pelos números de referência 320, 321, 322, 323, 324, 325, 326, 327. A linha 3 contém 8 colunas identificadas pelos números de referência 330, 331, 332, 333, 334, 335, 336 e 337. A linha 4 contém 8 colunas identificadas pelos números de referência 340, 341, 342, 343, 344, 345, 346 e 347. A linha 5 contém 8 colunas identificadas pelos números de referência 350, 351, 352, 353, 354, 355, 356 e 357. Cada entrada na tabela de descodificadores 300 contém um valor de endereço de linha/coluna correspondente ao dispositivo de memória 220.
[0036] Como pode ser tido em consideração, uma tabela de descodificadores típica conterá significativamente mais linhas e colunas. Por simplicidade e propósitos de ilustração, no entanto, a tabela de descodificadores 300, exemplificadora, ilustrada na FIG. 3A mostra apenas cinco colunas e é ajustada com um grau de nó de verificação de 8 para utilizar oito colunas. O grau do nó de verificação pode variar com base nos critérios de design de código. De acordo com pelo menos uma modalidade, a tabela de descodificadores 300 é configurada de tal modo que colunas adjacentes em uma linha particular alternam entre valores ímpares e pares para o endereço da linha. Por exemplo, a primeira coluna 310 da Linha 1 contém um valor de 10/154, enquanto a segunda coluna 311 contém um valor de 19/4. Assim, com referência às entradas na Linha 1, pode-se ver que as linhas do dispositivo de memória 220 sendo acessadas são marcadas como 10, 19, 20, 41, 24, 63, 112 e 105, o que satisfaz a alternância de formato par/ímpar. Adicionalmente, uma coluna 320 da Linha 2 identifica a linha 30 do dispositivo de memória 220 de modo a manter a natureza alternada da tabela de descodificadores 300.
[0037] Com referência adicional à FIG. 3B, é mostrado um diagrama para ilustrar o acesso à memória utilizando o dispositivo de pseudomemória de duas portas 230, de acordo com uma ou mais modalidades. As entradas da Linha 1 da tabela de descodificadores 300 são recuperadas para acessar ao dispositivo de memória 220. Mais particularmente, o conteúdo de cada entrada na tabela de descodificadores 300 pode especificar pelo menos uma linha e coluna do dispositivo de memória 220 a ser acessado. De acordo com pelo menos uma modalidade, apenas a linha especificada em cada entrada da tabela de descodificadores 300 é utilizada e o conteúdo da fila inteira especificada pela entrada é lido a partir do dispositivo de memória 220. Assim, os endereços de memória (ou localizações de linha de memória) podem ser lidos de tal forma que as linhas alternam de maneira par/ímpar, conforme especificado na tabela de descodificadores 300. Em seguida, as entradas a partir da Linha 2 da tabela de descodificadores 300 são recuperadas para determinar qual linha do dispositivo de memória 220 será lida. Da mesma forma, as entradas a partir da Linha 3 e da Linha 4 (assim como a Linha 5) são recuperadas para identificar linhas adicionais do dispositivo de memória 220 que devem ser lidas.
[0038] De acordo com pelo menos uma modalidade, uma vez que o conteúdo do dispositivo de memória 220 tenha sido lido, o mecanismo de computação começará a realizar vários cálculos e atualizará o conteúdo desses locais de linha de memória quando concluído. Como discutido anteriormente, o tempo de processamento (ou atraso de processamento) necessário para realizar os cálculos necessários é fixado com base na configuração específica do mecanismo de computação, grau de nó de verificação, etc. O mecanismo de computação continua a processar o conteúdo recuperado na ordem especificada pela tabela de descodificadores 300 até o conteúdo atualizado para a primeira entrada estar pronto. Durante esse tempo, o acesso à memória continua como um dispositivo de memória de porta única. Embora a descrição anterior descreva entradas de linhas individuais da tabela de descodificadores 300 a ser recuperada, deve se notar que cada entrada pode ser acessada individualmente ou todas as entradas a partir de toda a tabela de descodificadores podem ser acessadas simultaneamente. No entanto, o conteúdo do dispositivo de memória 220 é acessado (tanto lido como gravado) com base em entradas individuais a partir da tabela de descodificadores 300.
[0039] Conforme ilustrado na FIG. 3B, o atraso do pipeline corresponde à soma do atraso do grau do nó de verificação e do atraso de processamento fixo. O atraso do pipeline é o mesmo para todo o conteúdo do dispositivo de memória 220. O primeiro atraso do pipeline é concluído após o local de memória (por exemplo, linha) especificado pela quinta coluna 334 da Linha 3 ter sido acessado. Para propósitos de ilustração, apenas as operações de registro correspondentes à Linha 1 e Linha 2 (ou seja, W1 e W2) são ilustradas para explicar os recursos de várias modalidades. Deve se notar, no entanto, que as operações de registro seriam realizadas para todas as linhas na tabela de descodificadores 300.
[0040] Durante o próximo ciclo de relógio, o conteúdo do local da memória (ou linha do dispositivo de memória) especificado pela sexta coluna 335 da Linha 3 é acessado simultaneamente com o registro (ou atualização) do conteúdo na mesma linha de endereço de leitura utilizada na primeira coluna 310 da Linha 1. Isso é indicado pela operação de registro 360. Assim, a operação de registro no 360 utiliza o mesmo endereço de linha que a operação de leitura no 310. Durante o próximo ciclo de relógio, o local da memória (ou linha do dispositivo de memória) especificado pela sétima coluna 336 da Linha 3 é simultaneamente acessada enquanto se registra no local da memória especificado pela segunda coluna 311 da Linha 1. Isso é indicado pela operação de registro 361. O acesso simultâneo dos locais de leitura e registro continua até que os locais de memória especificados pela tabela de descodificadores 300 tenham sido lidos. Neste ponto, os valores restantes são registrados sequencialmente nos locais de memória final, desde que todos os valores anteriores tenham sido lidos. De acordo com a parte das operações ilustradas na FIG. 3B, os locais de memória 335-337 e 340-347 seriam simultaneamente acessados enquanto se escrevem em locais de memória especificadas pelas operações 360-367 e 370-372, respectivamente.
[0041] Como discutido anteriormente, o dispositivo de pseudomemória de duas portas 230 pode facilitar reduções significativas no tempo de processamento em comparação com dispositivos de memória de porta única convencionais que requerem dois ciclos de relógio para completar as operações de leitura e registro para uma linha do dispositivo de memória. Consequentemente, o tempo de processamento total necessário para uma iteração do descodificador usando dispositivos de memória de porta única será 2*M+n, em que M é o número de entradas na tabela de acesso e n é o atraso do pipeline associado à leitura, processamento e registro um determinado local de memória. De acordo com várias modalidades, no entanto, o dispositivo de pseudomemória de duas portas 220 pode simultaneamente facilitar as operações de leitura e registro. O tempo de processamento total necessário para uma iteração do descodificador será reduzido para os ciclos de relógio M+n usando o dispositivo de pseudomemória de duas portas 220. Tal redução pode traduzir para aproximadamente 50% do tempo de processamento, onde o dispositivo de memória 220 armazena um código típico que tem 64k de comprimento. Como ilustrado adicionalmente na FIG. 2, o tamanho do dispositivo de memória 230 não se altera. Apenas uma lógica mínima é necessária para mapear virtualmente o dispositivo de memória 220 como um dispositivo de pseudomemória de duas portas 230.
[0042] A FIG. 4A ilustra uma tabela de descodificadores que pode ser utilizada para facilitar o acesso ao dispositivo de memória de porta única 220 como um dispositivo de pseudomemória de duas portas 230, de acordo com modalidades adicionais. A tabela de descodificadores 400 inclui uma pluralidade de linhas marcadas com R1, R2, R3, R4, R5, ... Rn. Dependendo da implementação específica, o número de linhas na tabela de descodificadores 400 pode variar com base no tamanho e configuração específicos do dispositivo de memória 230, o mecanismo de computação, etc. Cada linha da tabela de descodificadores 400 também inclui uma pluralidade de colunas. Similar à modalidade ilustrada na FIG. 3A, um grau de nó de verificação para acessar o dispositivo de memória 220 é determinado como sendo 8. Assim, cada linha da tabela de descodificadores 400 contém 8 colunas. Por exemplo, a Linha 1 contém oito colunas identificadas pelos números de referência 410, 411, 412, 413, 414, 415, 416 e 417. A linha 2 contém 8 colunas identificadas pelos números de referência 420, 421, 422, 423, 424, 425, 426, 427. A linha 4 contém 8 colunas identificadas pelos números de referência 430, 431, 432, 433, 434, 435, 436 e 437. A linha 4 contém 8 colunas identificadas pelos números de referência 440, 441, 442, 443, 444, 445, 446 e 447. A linha 5 contém 8 colunas identificadas pelos números de referência 450, 451, 452, 453, 454, 455, 456 e 457. Cada entrada na tabela de descodificadores 400 contém um valor de endereço de linha/coluna correspondente ao dispositivo de memória 220.
[0043] De acordo com várias modalidades, a tabela de descodificadores 400 pode ser configurada de modo que colunas adjacentes em uma linha particular (R1-Rn) alternem entre valores de k*ímpar e k*par para o endereço de linha, em que k é uma constante definida para a tabela de descodificadores 400 Por exemplo, se k=3, cada linha na tabela de descodificadores 400 alternaria entre endereços de linha de memória 3 pares e 3 ímpares. Se k=4, então cada linha na tabela de descodificadores 400 alternaria entre endereços de linha de memória 4 pares e 4 ímpares. Assim, o valor de k pode ser definido para qualquer inteiro, com base em fatores como a configuração física do dispositivo de memória. A FIG. 3A, portanto, representa uma modalidade em que k=1.
[0044] Como ilustrado na FIG. 4A, a tabela de descodificadores 400 está configurada de tal modo que k=2. Consequentemente, a primeira coluna 410 e a segunda coluna 411 da Linha 1 contêm os valores 10/154 e 20/208, enquanto a terceira coluna 412 e a quarta coluna 413 contêm os valores 19/4 e 41/279. Assim, com referência às entradas na Linha 1, pode-se ver que as linhas acessadas são marcadas como 10, 20, 19, 41, 24, 112, 63 e 105, o que satisfaz a alternância do formato de linha 2*ímpar/2*par. Adicionalmente, uma coluna 420 e a coluna dois 421 da Linha 2 identificam as filas 30 e 76 do dispositivo de memória 220 de modo a manter a natureza alternada da tabela de descodificadores 400.
[0045] Com referência adicional à FIG. 4B, é mostrado um diagrama para ilustrar o acesso à memória utilizando o dispositivo de pseudomemória de duas portas 230, de acordo com uma ou mais modalidades. As entradas a partir da Linha 1 da tabela de descodificadores 400 são recuperadas para determinar qual local da linha do dispositivo de memória 220 será acessada. Assim, todos os endereços de memória em uma linha especificada são lidos no formato de linha alternada 2*ímpar/2*par, conforme especificado na tabela de descodificadores 400. Em seguida, as entradas a partir da Linha 2 da tabela de descodificadores 400 são recuperadas para determinar qual local da linha do dispositivo de memória 220 será lida. Similarmente, as entradas a partir da Linha 3 e da Linha 4 (assim como a Linha 5) são acessadas de modo a identificar quais as locais da linha do dispositivo de memória 220 que devem ser lidas. Uma vez que o conteúdo do dispositivo de memória 220 tenha sido lido, o mecanismo de computação começa a realizar vários cálculos e atualizará o conteúdo desses locais de linha de memória quando concluído. Como discutido anteriormente, o tempo de processamento (ou atraso de processamento) necessário para realizar os cálculos necessários é fixado com base na configuração específica do mecanismo de computação, dispositivo de memória, etc. O mecanismo de computação continua a ler as entradas especificadas pela tabela de descodificadores 400 até primeira entrada ter sido processada. Durante esse tempo, o acesso à memória continua como um dispositivo de memória de porta única.
[0046] Como ilustrado na FIG. 4B, o atraso do pipeline é completado após o local da linha de memória especificada pela quinta coluna 434 da Fila 3 ter sido acessada. Apenas as operações de registro correspondentes à Linha 1 e Linha 2 (ou seja, W1 e W2) são ilustradas para propósitos de explicar os recursos de várias modalidades. Deve se notar, no entanto, que as operações de registro seriam realizadas para todas as linhas na tabela de descodificadores 400. Durante o próximo ciclo de relógio, o conteúdo do local da linha de memória especificada pela sexta coluna 435 da Linha 3 é acessado simultaneamente com o registro (ou atualização) do conteúdo do local da linha de memória especificada pela primeira coluna 410 da Linha 1. Isso é indicado pela operação de registro 460. Durante o próximo ciclo de relógio, o local da memória linha especificado pela sétima coluna 436 da Linha 3 é simultaneamente acessada enquanto se registra no local da memória especificado pela segunda coluna 411 da Linha 1. Isso é indicado pela operação de registro 461. O acesso simultâneo das operações de leitura e registro continua até que todos os locais de linha de memória especificados pela tabela de descodificadores 400 tenham sido lidos. Neste ponto, os valores restantes são registrados sequencialmente nos locais de linha de memória final, desde que todos os valores anteriores tenham sido lidos. De acordo com a parte das operações ilustradas na FIG. 4B, os locais de linha de memória 435-437 e 440-447 seriam acessados enquanto se escrevia simultaneamente para locais de linha de memória especificadas pelas operações 460-467 e 470-472, respectivamente.
[0047] Como ilustrado na FIG. 4B, uma vez que o primeiro atraso de pipeline (isto é, atraso de pipeline 1) expirou, todos os atrasos de pipeline subsequentes associados à leitura/registro no dispositivo de memória se tornam iguais ao atraso de processamento fixo. O dispositivo de pseudomemória de duas portas 230, portanto, elimina a sobrecarga associada ao grau do nó de verificação (ver FIG. 1B). O dispositivo de memória normalmente pode armazenar informações (ou códigos) com 64k bits de comprimento. Cada bit deve ser lido, processado e atualizado. O atraso associado ao grau do nó de verificação pode, portanto, representar um aumento significativo no tempo necessário para processar as informações armazenadas no dispositivo de memória. Como ilustrado adicionalmente na FIG. 2, o tamanho do dispositivo de memória 230 não se altera. Apenas uma lógica mínima é necessária para mapear virtualmente o dispositivo de memória 220 como um dispositivo de pseudomemória de duas portas 230.
[0048] A FIG. 5 ilustra o acesso de memória para o dispositivo de pseudomemória de duas portas, de acordo com outra modalidade. As linhas da tabela de descodificadores (não mostrada) são fornecidas com um grau de nó de verificação de 7. Assim, cada linha da tabela de descodificadores contém sete colunas. Por exemplo, a Linha 1 conteria sete entradas que identificam locais de linha de memória a serem acessados. Os locais da linha de memória são identificados pelos números de referência 510-516. Similarmente, a Linha 2, Linha 3, Linha 4 e Linha 5 da tabela de descodificadores 300 contêm, cada uma, 7 entradas que identificam as localizações das linhas de memória a serem acessadas. Os locais da linha de memória (por exemplo, R2-R5) são identificados pelos números de referência 520, 522, 524 e 526, respectivamente. De acordo com a modalidade ilustrada, os locais de linha de memória especificados pela Linha 1 e Linha 2 da tabela de descodificadores são acessadas sequencialmente um ciclo de relógio de cada vez. Os locais da linha de memória especificados pelas primeiras 6 colunas da Linha 3 na tabela de descodificadores também são acessados sequencialmente.
[0049] Como ilustrado na FIG. 5, o atraso de pipeline expira quando o local de linha de memória especificada pela sexta entrada 336 da Linha 3 da tabela de descodificadores 300 foi lida. Assim, o local de linha de memória especificada pela primeira coluna 310 da Linha 1 pode ser atualizada. A operação de registro 530 associada com a primeira coluna 310 da Linha 1 normalmente ocorreria quando o local da linha de memória especificada pela sétima coluna 337 da Linha 3 estivesse sendo lida. Como ilustrado na FIG. 5, as entradas a partir da tabela de descodificadores especificam a leitura de uma linha par (isto é, a sétima coluna 337 da Linha 3) e o registro em uma linha par (operação de registro 530) em simultâneo. Além disso, as operações de registro 531-536 são realizadas simultaneamente com as operações de leitura da Linha 4 540. Como ilustrado adicionalmente na FIG. 5, as operações de registro 540 e 542 são realizadas simultaneamente com operações de leitura 524 e 526.
[0050] De acordo com uma ou mais modalidades, a leitura/registro simultânea para linhas pares e leitura/registro simultâneas para linhas ímpares não são realizadas para evitar quaisquer conflitos de acesso à memória potenciais, tais como ler e registrar na mesma linha do dispositivo de memória. De acordo com pelo menos uma implementação, se a soma do grau do nó de verificação e o atraso de processamento fixo resultarem em um número par, então um ciclo de relógio é adicionado ao primeiro atraso de pipeline antes da realização da primeira operação de registro 530. A sétima coluna 337 da Linha 3 seria, portanto, lida sozinha (por exemplo, sequencialmente) para introduzir uma combinação ímpar/par para operações de leitura e registro subsequentes. A primeira operação de registro 550 seria subsequentemente realizada simultaneamente com a primeira operação de leitura especificada pela Linha 4 da tabela de descodificadores. As operações de registro remanescentes (551-556) seriam realizadas simultaneamente com as respectivas operações de leitura 524 especificadas pela Linha 4 da tabela de descodificadores. Como pode ser visto na FIG. 5, estas operações simultâneas resultam em combinações par/ímpar para as operações de leitura da Linha 4 (524) e operações de registro da Linha 1 (550-556). De acordo com tais modalidades, conflitos de acesso de memória potenciais podem ser evitados.
[0051] A FIG. 6 ilustra vários componentes de um descodificador 600 de acordo com uma ou mais modalidades. O descodificador 600 inclui um mecanismo de computação 610 configurado com uma pluralidade de caminhos de dados 612 capazes de executar simultaneamente várias tarefas. Os caminhos de dados 612 podem ser configurados, por exemplo, para recuperar informações e realizar vários cálculos. Além disso, os caminhos de dados 612 podem fornecer informações atualizadas com base nos resultados de quaisquer cálculos. O descodificador 600 pode ser configurado para incluir vários componentes similares aos descodificadores convencionais. Como ilustrado na FIG. 6, por exemplo, o descodificador 600 também inclui um controlador 614 e o microcódigo 616 para monitorar e controlar todas as atividades do mecanismo de computação. O microcódigo 616 pode estar na forma de instruções de programa armazenadas em uma parte de memória não volátil do descodificador 600 para execução pelo controlador 614. Após a execução do microcódigo 616, o controlador 614 seria configurado para realizar quaisquer operações necessárias para controlar alguns ou todos os aspectos do mecanismo de computação 610.
[0052] O descodificador 600 ilustrado na FIG. 6 também inclui um dispositivo de memória RAM de borda 618, um dispositivo de memória RAM de canal 620, e um dispositivo de memória FIFO 622. De acordo com a modalidade ilustrada na FIG. 6, o dispositivo de memória RAM de borda 618, o dispositivo de memória RAM de canal 620 e o dispositivo de memória FIFO 622 são todos configurados como dispositivo de pseudomemória de duas portas. Mais particularmente, o dispositivo de memória RAM de borda 618 configurado para incluir um banco par de porta única 618A e um banco ímpar de porta única 618B. Analogamente, o dispositivo de memória RAM de canal 620 é configurado para incluir um único banco par de porta única 620A e um banco ímpar de porta única 620B. O dispositivo de memória FIFO 622 é também configurado para incluir um único banco par de porta única 622A e um banco ímpar de porta única 622B. De acordo com a modalidade ilustrada, todos os dispositivos de pseudomemória de duas portas (618, 620, 622) podem facilitar o acesso simultâneo aos respectivos bancos pares e ímpares. Assim, os atrasos associados ao acesso à memória sequencial e intercalada podem ser significativamente reduzidos. Além disso, o tamanho físico do descodificador 600 permanecerá substancialmente o mesmo (ou apenas aumentará marginalmente) porque os dispositivos de memória permanecem fisicamente do mesmo tamanho. Apenas circuitos lógicos mínimos são adicionados e a organização da tabela de descodificador é alterada.
[0053] A FIG. 7 é um fluxograma que ilustra um processo para acessar a um dispositivo de memória de porta única como um dispositivo de pseudomemória de duas portas de acordo com, pelo menos, uma modalidade. No 710, uma tabela de acesso é gerada. Dependendo da implementação específica, a tabela de acesso pode estar na forma de uma tabela de descodificadores para acessar, por exemplo, um dispositivo de memória RAM de canal ou um dispositivo de memória RAM de borda. De acordo com outras modalidades, a tabela de acesso pode corresponder a uma tabela que facilita o acesso a qualquer dispositivo de memória de porta única como um dispositivo de pseudomemória de duas portas. De acordo com outras modalidades, a tabela de acesso pode ser gerada manualmente ou gerada automaticamente por um computador usando código executável que estabelece diferentes parâmetros e restrições. Por exemplo, uma restrição poderia exigir um formato de linha de memória alternativo par/ímpar para operações simultâneas de leitura/registro. Outra restrição poderia inserir um ciclo de relógio no atraso do pipeline antes de uma sequência de operações simultâneas se a soma do grau do nó de verificação e o atraso de processamento fixo resultarem em um número par. Uma outra restrição poderia exigir o formato de linha de memória alternada k*par/k*ímpar. O valor de k pode ser fornecido a partir de uma fonte externa (ou seja, unidade de armazenamento, operador, etc.). Além disso, uma unidade de controle integrada também pode ser configurada para gerar a tabela de acesso usando o microcódigo associado.
[0054] No 712, um número predeterminado de entradas é recuperado a partir da tabela de acesso. Dependendo da implementação específica, o número de colunas em cada linha da tabela de acesso pode variar. Cada entrada da tabela de acesso pode incluir um conjunto de valores que especifica pelo menos uma linha e coluna de diferentes locais a serem acessados no dispositivo de memória. De acordo com várias modalidades, todas as entradas da tabela de acesso podem ser recuperadas de uma só vez. Como alternativa, as entradas podem ser recuperadas em várias partes conforme elas são necessárias. No 714, os endereços de memória especificados por n entradas a partir da tabela de acesso são lidos ou recuperados. Se n = 3, por exemplo, então 3 entradas seriam recuperadas a partir da tabela de acesso e o conteúdo de 3 linhas no dispositivo de memória especificado pelas respectivas entradas seria lido. De acordo com pelo menos uma modalidade, “n” corresponde a um atraso de processamento (ou tempo de processamento em ciclos de relógio) necessário para realizar quaisquer cálculos nos valores recuperados mais um atraso de grau de nó de verificação. O atraso de processamento e o atraso do grau do nó de verificação também podem ser medidos em termos de ciclos de relógio usados pela memória, pelo controlador ou pelo barramento de dados. Assim, as linhas na memória seriam lidas sequencialmente até que o conteúdo atualizado da primeira linha estivesse pronto na saída do mecanismo de computação. Como discutido anteriormente, cada entrada da tabela de acesso identifica, em parte, um local de linha dentro do dispositivo de memória que deve ser acessado. Isso resulta em “n” linhas de endereços de memória sendo lidos sequencialmente uma linha por vez.
[0055] No 716 uma variável (“i”) recebe um valor de n+1, que corresponde a um índice que identifica a próxima entrada recuperada a partir da tabela de acesso. Por exemplo, se n é determinado para ter um valor de 21 e vinte e uma entradas foram usadas para ler endereços de memória, então i seria atribuído um valor de 22. Um segundo índice (“w”) recebe um valor de 1, que identifica a primeira entrada da tabela de acesso. Em 718, os endereços de memória (ou locais) dentro da linha especificada pela 1a entrada (isto é, entrada [i]) a partir da tabela de acesso são lidos, enquanto registram simultaneamente para os endereços de memória (ou locais) dentro da linha especificada por o° entrada W (isto é, entrada [W]) a partir da tabela de acesso. Se n=21, por exemplo, os endereços de memória a partir da linha identificada pela 22a entrada da tabela de acesso seriam lidos (por exemplo, operação de leitura 22) e simultaneamente registrados (ou atualizados) nos endereços de memória a partir da linha especificada pela primeira entrada (por exemplo, primeira operação de registro) a partir da tabela de acesso. Com referência adicional à FIG. 3B, isto corresponderia a realizar simultaneamente a operação de leitura 335 e a operação de registro 360.
[0056] De acordo com uma ou mais modalidades, uma vez que o atraso de processamento tenha expirado, o dispositivo de memória pode ser acessado como um dispositivo de pseudomemória de duas portas que permite operações de leitura/registro contínuas e simultâneas. Assim, em 720, é determinado se a entrada atual (ou seja, entrada [i]) corresponde à última entrada a partir da tabela de acesso. Se a entrada atual não for a última entrada a partir da tabela de acesso, então o controle passa para 722, em que as variáveis i e w são incrementadas em um. Em seguida, o controle retorna para 718, em que as operações simultâneas de leitura e registro são executadas nos próximos endereços de memória. Mais particularmente, a 23a entrada a partir da tabela de acesso especificaria a linha contendo endereços de memória a serem lidos (por exemplo, operação de leitura 23) enquanto registrando simultaneamente os endereços de memória na linha especificada pela segunda entrada (por exemplo, segunda operação de registro) a partir da tabela de acesso. As operações de leitura/registro simultâneas são realizadas até que todos os endereços de memória especificados pelas entradas a partir da tabela de acesso tenham sido lidos. Se a 1a entrada corresponde à última entrada a partir da tabela de acesso, em seguida, o controle passa para 722. Isso pode corresponder, por exemplo, à condição em que os locais de linha de memória especificados por todas as entradas a partir da tabela de acesso foram lidos, mas as operações de registro não foram executadas devido ao atraso de processamento. No 722, as operações de registro são realizadas para locais de linhas de memória especificados pela w° entrada da tabela de acesso à última entrada da tabela de acesso de forma sequencial. Mais particularmente, uma vez que todos os locais de linha de memória correspondentes às entradas recuperadas tenham sido lidos, não é mais possível realizar operações de leitura/registro simultâneas. Assim, apenas as operações de registro permanecem para serem executadas. Isso é similar às operações de leitura sequencial realizadas antes da expiração do atraso de processamento.
[0057] As FIGs. 8A e 8B são um fluxograma que ilustra um processo para acessar o dispositivo de memória de porta única como um dispositivo de pseudomemória de duas portas de acordo com outra modalidade. No 810, e a tabela de acesso é gerada. Como discutido anteriormente, a tabela de acesso pode ser gerada de várias maneiras, inclusive pelo controlador ou por um computador. De acordo com modalidades opcionais, um grau de nó de verificação, bem como o número de motor de processamento paralelo, pode ser fornecido como entrada para auxiliar na geração da tabela de acesso. De acordo com pelo menos uma modalidade, a tabela de acesso pode ser configurada de modo que entradas adjacentes em cada linha especifiquem locais no dispositivo de memória que alternam entre valores ímpares e pares.
[0058] No 812, um número predeterminado de entradas é recuperado a partir da tabela de acesso. Dependendo da implementação específica, todas as entradas podem ser recuperadas a partir da tabela de acesso. No 814, um contador (“j”) é inicializado com um valor de 1, correspondente à primeira iteração. Uma segunda variável (“k”), correspondente ao número de entradas par e ímpar para alternar, também recebe um valor de 1. Como discutido anteriormente, várias modalidades permitem a configuração da tabela de acesso para incluir entradas para acessar o dispositivo de memória usando o formato de linha de memória alternada k*par/k*ímpar. Assim, quando k=1, as linhas do dispositivo de memória serão acessadas usando o formato de alternância par/ímpar. Se k=2, as linhas do dispositivo de memória serão acessadas usando o formato de alternância 2*par/2*ímpar. No 816, endereços de memória especificados por n entradas a partir da tabela de acesso são lidos. De acordo com pelo menos uma modalidade, “n” corresponde a um atraso de processamento necessário para realizar quaisquer cálculos nos valores recuperados mais um atraso de grau de nó de verificação. O atraso de processamento e o atraso do grau do nó de verificação podem ser medidos, por exemplo, em termos de ciclos de relógio usados pela memória, pelo controlador ou pelo barramento de dados. Assim, os endereços de memória seriam lidos sequencialmente até que os cálculos baseados no primeiro valor lido fossem completados.
[0059] No 818, uma variável (“i”) recebe um valor de n+1, que corresponde a um índice que identifica a próxima entrada recuperada a partir da tabela de acesso. Por exemplo, se n é determinado para ter um valor de 21 e vinte e uma entradas foram usadas para ler endereços de memória, então i seria atribuído um valor de 22. Um segundo índice (“w”) é inicializado com um valor de 1, que corresponde à primeira entrada a partir da tabela de acesso. No 820, o grau do nó de verificação é adicionado ao atraso de processamento para determinar se a soma resultante é um valor par. Se a soma resultante tiver um valor par, o controle passa para 822, onde um ciclo de relógio é usado como um atraso.
[0060] Se a soma não resultar em um valor par, o controle passa para 824, onde um exclusivo ou uma operação (XOR) é executada entre o último bit do endereço de leitura atual e o último bit do endereço de registro atual. Se o exclusivo ou a operação (XOR) não for igual a um, o controle passa para 826, onde as operações de leitura e registro são executadas sequencialmente. Mais particularmente, as operações de leitura e registro podem ser intercaladas e executadas sequencialmente. Se o exclusivo ou operação resultar em um valor de um, operações simultâneas de leitura e registro serão iniciadas em 828. No 828, o endereço de memória (ou local) especificado pela i° entrada (ou seja, a entrada [i]) a partir da tabela de acesso é lido e, simultaneamente, escrevendo para o endereço de memória (ou local) especificado pela w° entrada (isto é, entrada [w]) a partir da tabela de acesso. Se n=21, por exemplo, os endereços de memória identificados pela 22a entrada da tabela de acesso seriam lidos (por exemplo, operação de leitura 22) e simultaneamente registrados (ou atualizados) nos endereços de memória especificada pela primeira entrada (por exemplo, primeira operação de registro) a partir da tabela de acesso. Com referência adicional à FIG. 3B, isto corresponderia a realizar simultaneamente a operação de leitura 335 e a operação de registro 360.
[0061] Em 830, é determinado se a entrada atual (ou seja, entrada [i]) corresponde à última entrada a partir da tabela de acesso. Se a entrada atual não for a última entrada a partir da tabela de acesso, então o controle passa para 832, em que as variáveis i e w são incrementadas em um. Em seguida, o controle retorna para 828, em que as operações simultâneas de leitura e registro são executadas nos próximos endereços de memória. Mais particularmente, a 23a entrada a partir da tabela de acesso seria lida enquanto simultaneamente registrada no endereço de memória especificado pela segunda entrada da tabela de acesso. As operações de leitura/registro simultâneas continuam até que todos os endereços de memória especificados pelas entradas a partir da tabela de acesso tenham sido lidos. Se a 1a entrada corresponde à última entrada a partir da tabela de acesso, em seguida, o controle passa para 834. As operações de registro são realizadas para locais de memória especificados pela w° entrada da tabela de acesso à última entrada da tabela de acesso, (por exemplo, entrada [w] para [última] entrada) de forma sequencial.
[0062] Em 836, é determinado se os critérios apropriados de convergência (ou seja, nível de confiança) ou de iteração foram atingidos. Como discutido anteriormente, um critério de convergência pode ser definido para determinar se os valores atuais (decisões suaves) armazenados no dispositivo de memória devem ser atualizados ou emitidos como decisões difíceis. Além disso, um valor correspondente a um número predeterminado de iterações pode ser usado para determinar quando os valores atuais armazenados no dispositivo de memória devem ser emitidos como decisões difíceis. De acordo com a modalidade ilustrada, tal determinação pode ser feita comparando a variável j com uma predeterminada iteração_máx. Se os critérios de convergência ou iteração não tiverem sido atingidos, o controle passará para 838 para incrementar o valor de j e executar outra iteração. De acordo com pelo menos uma modalidade, o controle retorna para 816 em que os endereços de memória para as primeiras n entradas da tabela de acesso são lidos. Se for determinado, em 836, que os critérios de convergência ou iteração foram atingidos, o processo termina em 840.
[0063] Os processos aqui descritos podem ser implementados, de acordo com uma ou mais modalidades exemplificativas, via software, hardware (por exemplo, processador geral, chip de Processamento Digital de Sinal (DSP), um Circuito Integrado de Aplicação Específica (ASIC), Matrizes de Portas Programáveis em Campo (FPGAs), etc.), firmware) ou uma combinação dos mesmos. Tal hardware exemplificador para executar as funções descritas é detalhado abaixo.
[0064] A FIG. 9 é um diagrama de um sistema de computador que pode ser utilizado para implementar várias modalidades. O sistema de computador 900 inclui um barramento 901 ou outro mecanismo de comunicação para comunicar informação e um processador 903 acoplado ao barramento 901 para processar informação. O sistema de computador 900 também inclui a memória principal 905, tal como uma memória de acesso aleatório (RAM) ou outro dispositivo de armazenamento dinâmico, acoplado ao barramento 901 para armazenar informação e instruções a serem executadas pelo processador 903. A memória principal 905 também pode ser usada para armazenar variáveis temporárias ou outras informações intermediárias durante a execução de instruções pelo processador 903. O sistema de computador 900 pode ainda incluir uma memória somente de leitura (ROM) 907 ou outro dispositivo de armazenamento estático acoplado ao barramento 901 para armazenar informações estáticas e instruções para o processador 903. Um dispositivo de armazenamento 909, tal como um disco magnético ou disco óptico, é acoplado ao barramento 901 para armazenar persistentemente informações e instruções.
[0065] O sistema de computador 900 pode ser acoplado através do barramento 901 a um monitor 911, tal como um diodo emissor de luz (LED) ou outros monitores de tela plana, para exibir informações para um usuário de computador. Um dispositivo de entrada 913, tal como um teclado incluindo alfanumérico e outras teclas, é acoplado ao barramento 901 para comunicar informações e comandar seleções para o processador 903. Outro tipo de dispositivo de entrada do usuário é um controle de cursor 915, tal como um mouse, um trackball ou teclas de direção do cursor, para comunicar informação de direção e seleções de comando para o processador 903 e para controlar o movimento do cursor no monitor 911. Além disso, o monitor 911 pode ser ativado por toque (isto é, capacitivo ou resistivo) para facilitar a entrada do usuário por meio de toques ou gestos.
[0066] De acordo com uma modalidade exemplificadora, os processos aqui descritos são executados pelo sistema de computador 900, em resposta ao processador 903 que executa uma disposição de instruções contidas na memória principal 905. Tais instruções podem ser lidas na memória principal 905 a partir de outro meio legível por computador, tal como o dispositivo de armazenamento 909. A execução da disposição das instruções contidas na memória principal 905 faz com que o processador 903 execute as etapas do processo aqui descritos. Um ou mais processadores em uma disposição de multiprocessamento também podem ser empregados para executar as instruções contidas na memória principal 905. Em modalidades alternativas, podem ser utilizados circuitos com fios em vez de ou em combinação com instruções de software para implementar modalidades exemplificativas. Assim, as modalidades exemplificativas não estão limitadas a qualquer combinação específica de circuitos de hardware e software.
[0067] O sistema de computador 900 também inclui uma interface de comunicação 917 acoplada ao barramento 901. A interface de comunicação 917 fornece um acoplamento de comunicação de dados bidirecional para um link de rede 919 conectado a uma rede local 921. Por exemplo, a interface de comunicação 917 pode ser um cartão ou modem de linha de assinante digital (DSL), uma placa de rede digital de serviços integrados (ISDN), um modem a cabo, linha de serviço de fibra óptica (FiOS) ou qualquer outra interface de comunicação para fornecer uma conexão de comunicação de dados para um tipo correspondente de linha de comunicação. Como outro exemplo, a interface de comunicação 917 pode ser uma placa de rede de área local (LAN) (por exemplo, para Ethernet™ ou uma rede de modo de transferência assíncrona (ATM)) para fornecer uma conexão de comunicação de dados a uma LAN compatível. Os links sem fio também podem ser implementados. Em qualquer implementação deste tipo, a interface de comunicação 917 envia e recebe sinais elétricos, eletromagnéticos ou ópticos que transportam fluxos de dados digitais representando vários tipos de informação. Além disso, a interface de comunicação 917 pode incluir dispositivos periféricos de interface, como uma interface USB (Universal Serial Bus), uma interface multimídia de alta definição (HDMI), etc. Embora uma única interface de comunicação 917 esteja representada na FIG. 9, múltiplas interfaces de comunicação também podem ser empregadas.
[0068] O link de rede 919 normalmente fornece comunicação de dados através de uma ou mais redes para outros dispositivos de dados. Por exemplo, o link de rede 919 pode fornecer uma conexão através da rede local 921 para um computador hospedeiro 923, que tem conectividade com uma rede 925, como uma rede de longa distância (WAN) ou a Internet. A rede local 921 e a rede 925 usam sinais elétricos, eletromagnéticos ou ópticos para transmitir informações e instruções. Os sinais através das várias redes e os sinais no link de rede 919 e através da interface de comunicação 917, que comunicam dados digitais com o sistema de computador 900, são modalidades exemplificativas de ondas portadoras contendo as informações e instruções.
[0069] O sistema de computador 900 pode enviar mensagens e receber dados, incluindo código de programa, através da(s) rede(s), o link de rede 919 e a interface de comunicação 917. No exemplo da Internet, um servidor (não mostrado) pode transmitir código solicitado pertencente a um programa de aplicação para implementar uma modalidade exemplificadora através da rede 925, a rede local 921 e a interface de comunicação 917. O processador 903 pode executar o código transmitido enquanto é recebido e/ou armazena o código no dispositivo de armazenamento 909, ou outro armazenamento não volátil para execução posterior. Desta maneira, o sistema de computador 1000 pode obter o código de aplicação na forma de uma onda portadora.
[0070] O termo “meio legível por computador”, como aqui utilizado, se refere a qualquer meio que participa no fornecimento de instruções ao processador 903 para execução. Esse meio pode assumir muitas formas, incluindo, entre outras, mídia não volátil, mídia volátil e mídia de transmissão. Meios não voláteis incluem, por exemplo, discos ópticos ou magnéticos, tais como o dispositivo de armazenamento 909. A mídia não volátil pode incluir ainda pen drives, drives USB, cartões microSD, etc. A mídia volátil inclui memória dinâmica, como a memória principal 905. Os meios de transmissão incluem cabos coaxiais, fio de cobre e fibra óptica, incluindo os fios que compõem o barramento 901. A mídia de transmissão também pode assumir a forma de ondas acústicas, ópticas ou eletromagnéticas, como aquelas geradas durante as comunicações de dados por radiofrequência (RF) e infravermelho (IR). As formas comuns de mídia legível por computador incluem, por exemplo, uma unidade USB, cartão microSD, unidade de disco rígido, unidade de estado sólido, disco ótico (por exemplo, DVD, DVD RW, Blu-ray) ou qualquer outro meio do qual um computador pode ler.
[0071] A FIG. 10 ilustra um conjunto de chips 1000, no qual uma modalidade da invenção pode ser implementada. O conjunto de chips 1000 é programado para implementar vários recursos como aqui descrito e inclui, por exemplo, o processador e os componentes de memória descritos em relação à FIG. 10 incorporados em uma ou mais embalagens físicas (por exemplo, chips). Por exemplo, um pacote físico inclui uma disposição de um ou mais materiais, componentes e/ou fios em uma disposição estrutural (por exemplo, um rodapé) para fornecer uma ou mais características, como resistência física, conservação de tamanho e/ou limitação de interação elétrica. Está contemplado que, em certas modalidades, o conjunto de chip pode ser implementado em um único chip. O conjunto de chips 1000, ou uma parte dele, constitui um meio para realizar um ou mais etapas das figuras.
[0072] Em uma modalidade, o conjunto de chip 1000 inclui um mecanismo de comunicação, tal como um barramento 1001, para passar informação entre os componentes do conjunto de set 1000. Um processador 1003 tem conectividade com o barramento 1001 para executar instruções e processar informações armazenadas, por exemplo, em uma memória 1005. O processador 1003 pode incluir um ou mais núcleos de processamento com cada núcleo configurado para funcionar de forma independente. Um processador múltiplos núcleos permite o multiprocessamento dentro de um pacote físico único. Exemplos de um processador de múltiplos núcleos incluem dois, quatro, oito ou mais números de núcleos de processamento. Alternativamente ou adicionalmente, o processador 1003 pode incluir um ou mais microprocessadores configurados em tandem através do barramento 1001 para permitir a execução independente de instruções, pipelining e multithreading. O processador 1003 pode também ser acompanhado por um ou mais componentes especializados para executar determinadas funções de processamento e tarefas, tais como um ou mais processadores de sinal digital (DSP) 1007, ou um ou mais circuitos integrados específicos da aplicação (ASIC) 1009. Um DSP 1007 é tipicamente configurado para processar sinais do mundo real (por exemplo, som) em tempo real, independentemente do processador 1003. Similarmente, um ASIC 1009 pode ser configurado para executar funções especializadas que não são facilmente executadas por um processador de propósito geral. Outros componentes especializados para auxiliar na realização das funções inventivas aqui descritas incluem uma ou mais matrizes de portas programáveis de campo (FPGA) (não mostradas), um ou mais controladores (não mostrados), ou um ou mais outros chips de computador para fins especiais.
[0073] O processador 1003 e os componentes que o acompanham têm conectividade com a memória 1005 através do barramento 1001. A memória 1005 inclui tanto a memória dinâmica (por exemplo, RAM, disco magnético, disco óptico regravável, etc.) quanto a memória estática (por exemplo, ROM, CD-ROM, DVD, disco BLU-RAY, etc.) para armazenar instruções executáveis que, quando executado, execute as etapas inventivas descritas aqui para controlar um set-top box com base nos eventos do dispositivo. A memória 1005 também armazena os dados associados ou gerados pela execução das etapas inventivas.
[0074] Embora certas modalidades e implementações exemplificativas tenham sido aqui descritas, outras modalidades e modificações serão evidentes a partir desta descrição. Consequentemente, as várias modalidades descritas não pretendem ser limitativas, mas são abrangidas pelo escopo mais amplo das Reivindicações apresentadas e várias modificações óbvias e disposições equivalentes.
Claims (14)
1. Método Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, caracterizado por que compreende: gerar uma tabela de acesso para mapear um dispositivo de memória de porta única para um dispositivo de pseudomemória de duas portas, incluindo um banco par de porta única e um banco ímpar de porta única; recuperar sequencialmente entradas da tabela de acesso; ler a partir dos endereços no dispositivo de memória de porta única correspondente as n entradas das entradas recuperadas, em que n corresponde ao atraso de pipeline medido em ciclos de relógio da CPU; conduzir operações simultâneas para leitura dos endereços no dispositivo de memória de porta única correspondente às entradas restantes da tabela de acesso e para registrar endereços no dispositivo de memória de porta única correspondente às entradas restantes da tabela de acesso, começando da primeira entrada recuperada, e atrasada por n ciclos de relógio, até todos os endereços no dispositivo de memória de porta única correspondentes às entradas recuperadas terem sido lidos; e registrar os endereços no dispositivo de memória de porta única correspondente a quaisquer entradas restantes da tabela de acesso, em que cada entrada da tabela de acesso especifica, em parte, endereços de linha de k*par/k*ímpar alternados a serem acessados no dispositivo de memória de porta única, onde: 1 < k < M/2 k é um inteiro e M é o número total de entradas na tabela de acesso.
2. Método Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 1, caracterizado por que a tabela de acesso é uma tabela de acesso à memória de canal para um descodificador de Verificação de Paridade de Baixa Densidade (LDPC).
3. Método Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 2, caracterizado por que um número de colunas em cada linha da tabela de acesso é determinado com base, pelo menos em parte, em um grau de nó de verificação do descodificador de LDPC.
4. Método Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 3, caracterizado por que o grau do nó de verificação é baseado em um design de código e paralelismo do motor de processamento para o descodificador de LDPC.
5. Método Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 3, caracterizado por que uma soma do atraso de processamento mais o grau do nó de verificação resulta em um valor par e compreende ainda esperar um ciclo de relógio antes de realizar a etapa de conduzir operações simultâneas.
6. Método Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 1, caracterizado por que a realização de operações simultâneas é realizada apenas quando Read_address[0] XOR Write_address[0] é igual a 1, onde Read_address[0] é o último bit do endereço no local da memória que está sendo lido e Write_address [0] é o último bit do endereço no local da memória que está sendo registrado.
7. Método Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 1, caracterizado por que compreende ainda: determinar se um critério de convergência ou critério de iteração foi satisfeito; e repetir a recuperação sequencialmente, ler dos endereços no dispositivo de memória de porta única correspondente as n entradas, conduzir operações simultâneas e registrar em endereços, se os critérios de convergência ou os critérios de iteração deixarem de ser satisfeitos.
8. Aparelho Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, compreendendo: um dispositivo de memória de porta única; um dispositivo de pseudomemória de duas portas incluindo um único banco par de porta e um único banco ímpar de porta; e um controlador, incluindo microcódigo contendo uma ou mais instruções para configurar o controlador para: gerar uma tabela de acesso para mapear o dispositivo de memória de porta única para o dispositivo de pseudomemória de duas portas, recuperar sequencialmente entradas da tabela de acesso, ler a partir dos endereços no dispositivo de memória de porta única correspondente as n entradas das entradas recuperadas, em que n corresponde ao atraso de pipeline medido em ciclos de relógio do controlador, conduzir operações simultâneas para leitura dos endereços no dispositivo de memória de porta única correspondente às entradas restantes da tabela de acesso e para registrar endereços no dispositivo de memória de porta única correspondente às entradas restantes da tabela de acesso, começando da primeira entrada recuperada, e atrasada por n ciclos de relógio, até todos os endereços no dispositivo de memória de porta única correspondentes às entradas recuperadas terem sido lidos e registrar os endereços no dispositivo de memória de porta única correspondente a quaisquer entradas restantes da tabela de acesso, caracterizado por que as operações de leitura e registro para o dispositivo de memória de porta única são realizadas através do dispositivo de pseudomemória de duas portas, e em que cada entrada da tabela de acesso especifica, em parte, endereços de linha de k*par/k*ímpar alternados a serem acessados no dispositivo de memória de porta única, onde: 1 < k < M/2 k é um inteiro e M é o número total de entradas na tabela de acesso.
9. Aparelho Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 8, compreendendo ainda: um mecanismo de computação de Verificação de Paridade de Baixa Densidade (LDPC), caracterizado por que a tabela de acesso é uma tabela de acesso de memória do canal para o mecanismo de computação de LDPC.
10. Aparelho Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 9, caracterizado por que um número de colunas em cada linha da tabela de acesso é determinado com base, pelo menos em parte, em um grau de nó de verificação do descodificador de LDPC.
11. Aparelho Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 10, caracterizado por que o grau do nó de verificação é baseado em um design de código e paralelismo do motor de processamento para o descodificador de LDPC.
12. Aparelho Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 10, caracterizado por que uma soma do atraso de processamento mais um grau de nó de verificação resulta em um valor par e compreende ainda esperar um ciclo de relógio antes de realizar a etapa de conduzir operações simultâneas.
13. Aparelho Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 8, caracterizado por que a realização de operações simultâneas é realizada apenas quando Read_address[0] XOR Write_address[0] é igual a 1, onde Read_address[0] é o último bit do endereço no local da memória que está sendo lido e Write_address [0] é o último bit do endereço no local da memória que está sendo registrado.
14. Aparelho Para Acessar Dispositivos de Memória de Porta Única Como Dispositivos de Pseudomemória de Duas Portas, de acordo com a Reivindicação 8, caracterizado por que o controlador é configurado ainda para: determinar se um critério de convergência ou critério de iteração foi satisfeito; e repetir o seguinte: recuperar sequencialmente, ler dos endereços no dispositivo de memória de porta única correspondente as n entradas, realizar operações simultâneas e registrar em endereços, se os critérios de convergência ou critérios de iteração deixarem de ser satisfeitos.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/361,227 | 2016-11-25 | ||
US15/361,227 US10168938B2 (en) | 2016-11-25 | 2016-11-25 | LDPC decoder design to significantly increase throughput in ASIC by utilizing pseudo two port memory structure |
PCT/US2017/063050 WO2018098307A1 (en) | 2016-11-25 | 2017-11-22 | Novel ldpc decoder design to significantly increase throughput in asic by utilizing pseudo two port memory |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112019010741A2 BR112019010741A2 (pt) | 2019-10-01 |
BR112019010741B1 true BR112019010741B1 (pt) | 2024-03-05 |
Family
ID=62190862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112019010741-0A BR112019010741B1 (pt) | 2016-11-25 | 2017-11-22 | Método e aparelho para acessar dispositivos de memória de porta única como dispositivos de pseudomemória de duas portas |
Country Status (5)
Country | Link |
---|---|
US (1) | US10168938B2 (pt) |
EP (1) | EP3545420B1 (pt) |
BR (1) | BR112019010741B1 (pt) |
CA (1) | CA3045016A1 (pt) |
WO (1) | WO2018098307A1 (pt) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10553285B2 (en) * | 2017-11-28 | 2020-02-04 | Western Digital Technologies, Inc. | Single-port memory with opportunistic writes |
US11036403B2 (en) * | 2018-07-30 | 2021-06-15 | Marvell Asia Pte, Ltd. | Shared memory block configuration |
DE102019213998A1 (de) * | 2019-09-13 | 2021-03-18 | Airbus Defence and Space GmbH | Prozessorsystem mit speicherverschränkung und zugriffsverfahren auf speicherverschränkte speicherbänke |
US11223372B2 (en) | 2019-11-27 | 2022-01-11 | Hughes Network Systems, Llc | Communication throughput despite periodic blockages |
US11838127B2 (en) | 2022-03-11 | 2023-12-05 | Hughes Network Systems, Llc | Adaptive satellite communications |
CN117912518B (zh) * | 2024-01-22 | 2024-08-06 | 成都市元视芯智能科技有限公司 | 基于sram接口带宽拓展的缓存方法、系统及装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5371877A (en) | 1991-12-31 | 1994-12-06 | Apple Computer, Inc. | Apparatus for alternatively accessing single port random access memories to implement dual port first-in first-out memory |
US5559450A (en) * | 1995-07-27 | 1996-09-24 | Lucent Technologies Inc. | Field programmable gate array with multi-port RAM |
WO1997030395A1 (fr) * | 1996-02-16 | 1997-08-21 | Hitachi, Ltd. | Memoire a acces multiples et processeur de donnees procurant l'acces a cette memoire |
JP2002526848A (ja) * | 1998-09-25 | 2002-08-20 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | マルチポートメモリを含む装置 |
US6798420B1 (en) * | 1998-11-09 | 2004-09-28 | Broadcom Corporation | Video and graphics system with a single-port RAM |
US6711170B1 (en) * | 1999-08-31 | 2004-03-23 | Mosaid Technologies, Inc. | Method and apparatus for an interleaved non-blocking packet buffer |
US6222786B1 (en) * | 1999-11-02 | 2001-04-24 | Silicon Aquarius, Inc. | Dynamic random access memory with write-without-restore and systems and methods using the same |
US7681018B2 (en) * | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US7242633B1 (en) * | 2004-09-10 | 2007-07-10 | Xilinx, Inc. | Memory device and method of transferring data in memory device |
US7490208B1 (en) * | 2004-10-05 | 2009-02-10 | Nvidia Corporation | Architecture for compact multi-ported register file |
US8161348B2 (en) * | 2008-02-05 | 2012-04-17 | Agere Systems Inc. | Systems and methods for low cost LDPC decoding |
US8266408B2 (en) * | 2009-03-17 | 2012-09-11 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
US8923089B2 (en) * | 2012-12-21 | 2014-12-30 | Lsi Corporation | Single-port read multiple-port write storage device using single-port memory cells |
KR20150024489A (ko) * | 2013-08-26 | 2015-03-09 | 삼성전자주식회사 | 메모리 시스템에서의 ldpc 디코딩 방법 및 이를 이용한 ldpc 디코더 |
CN103970680A (zh) * | 2014-04-28 | 2014-08-06 | 上海华为技术有限公司 | 内存管理方法、装置及嵌入式系统 |
-
2016
- 2016-11-25 US US15/361,227 patent/US10168938B2/en active Active
-
2017
- 2017-11-22 WO PCT/US2017/063050 patent/WO2018098307A1/en unknown
- 2017-11-22 EP EP17874774.7A patent/EP3545420B1/en active Active
- 2017-11-22 CA CA3045016A patent/CA3045016A1/en active Pending
- 2017-11-22 BR BR112019010741-0A patent/BR112019010741B1/pt active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
US20180150253A1 (en) | 2018-05-31 |
EP3545420A1 (en) | 2019-10-02 |
WO2018098307A1 (en) | 2018-05-31 |
CA3045016A1 (en) | 2018-05-31 |
US10168938B2 (en) | 2019-01-01 |
EP3545420B1 (en) | 2022-06-29 |
EP3545420A4 (en) | 2020-07-01 |
BR112019010741A2 (pt) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112019010741B1 (pt) | Método e aparelho para acessar dispositivos de memória de porta única como dispositivos de pseudomemória de duas portas | |
JP5698238B2 (ja) | データベース動作を意識するストライピング技術 | |
US9811287B2 (en) | High-performance hash joins using memory with extensive internal parallelism | |
US9990279B2 (en) | Page-level health equalization | |
US20150120774A1 (en) | Modified b+ tree node searching method and apparatus | |
KR20150024489A (ko) | 메모리 시스템에서의 ldpc 디코딩 방법 및 이를 이용한 ldpc 디코더 | |
KR20080112252A (ko) | 에러 보정 디바이스 및 그 방법 | |
TWI839592B (zh) | 儲存裝置以及用於加速儲存裝置中的操作的方法 | |
US10048899B2 (en) | Storage device, computing system including the storage device, and method of operating the storage device | |
US7783823B2 (en) | Hardware device data buffer | |
US12008270B2 (en) | System, device, and method for memory interface including reconfigurable channel | |
KR101425817B1 (ko) | 수정된 b+트리 노드 갱신 방법 및 장치 | |
US10496457B2 (en) | Grouping requests to reduce inter-process communication in memory systems | |
US20080005435A1 (en) | Bus arbitration system, medium, and method | |
Townsend et al. | A Scalable Unsegmented Multiport Memory for FPGA‐Based Systems | |
WO2013184855A1 (en) | Memory with bank-conflict-resolution (bcr) module including cache | |
WO2012115744A1 (en) | Improved write bandwidth in a memory characterized by a variable write time | |
JP5821501B2 (ja) | 再帰を利用してbddの最適な変数順序を決定する方法及びシステム | |
JP5821499B2 (ja) | パラレル置換を利用したbdd変数をリオーダする方法及びシステム | |
JP5821503B2 (ja) | 最大パラレル化を利用してウィンドウアルゴリズムを利用してbddを処理する方法及びシステム | |
JP5884389B2 (ja) | Bddを処理する方法、システム及びソフトウェア | |
CN113448498A (zh) | 非易失性存储器接口 | |
JP5987289B2 (ja) | ペア単位変数グループ化を利用してbddの最適な変数順序を決定する方法及びシステム | |
US20240193105A1 (en) | Computational storage device and method of operating the same | |
US11080059B1 (en) | Reducing firmware size and increasing firmware performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B07A | Application suspended after technical examination (opinion) [chapter 7.1 patent gazette] | ||
B09B | Patent application refused [chapter 9.2 patent gazette] | ||
B350 | Update of information on the portal [chapter 15.35 patent gazette] | ||
B12B | Appeal against refusal [chapter 12.2 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 22/11/2017, OBSERVADAS AS CONDICOES LEGAIS |