BRPI0608975A2 - protocolo de sinalização fifo insensìvel à latência - Google Patents
protocolo de sinalização fifo insensìvel à latência Download PDFInfo
- Publication number
- BRPI0608975A2 BRPI0608975A2 BRPI0608975-5A BRPI0608975A BRPI0608975A2 BR PI0608975 A2 BRPI0608975 A2 BR PI0608975A2 BR PI0608975 A BRPI0608975 A BR PI0608975A BR PI0608975 A2 BRPI0608975 A2 BR PI0608975A2
- Authority
- BR
- Brazil
- Prior art keywords
- data
- domain
- fifo
- storage device
- source
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/405—Coupling between buses using bus bridges where the bridge performs a synchronising function
- G06F13/4059—Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/12—Indexing scheme relating to groups G06F5/12 - G06F5/14
- G06F2205/126—Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Communication Control (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Information Transfer Systems (AREA)
Abstract
PROTOCOLO DE SINALIZAçãO FIFO INSENSìVEL A LATêNCIA. Dados de um domínio de fonte que operam era uma primeira taxa de dados são transferidos para um FIFO em outro domínio operando em uma taxa de dados diferente. O FIFO armazena em buffer dados antes de transferir para um depósito para processamento ou armazenamento adicional. Um contador pelo lado de fonte monitora o espaço disponível no FIFO. Em exemplos revelados, o valor inicial do contador corresponde à profundidade do FIFO. O contador decrementa em resposta a um sinal de dados prontos a partir do domínio de fonte, sem retardo. O contador incrementa em resposta à sinalização a partir do domínio de depósito de uma retirada de dados do FIFO. Portanto, o incremento está sujeito à latência de sinalização entre os domínios. A fonte pode enviar mais um batimento de dados quando o contador indicar que o FIFO está cheio. O último batimento de dados é enviado continuamente da fonte até que seja indicado que uma posição do FIFO se tornou disponível; proporcionando efetivamente mais uma posição do FIFO.
Description
PROTOCOLO DE SINALIZAÇÃO FIFO INSENSÍVEL À LATENCIA
CAMPO TÉCNICO
A presente matéria se refere aos protocolos parasinalização e controle, relacionados à transferência dedados por intermédio de dispositivos de armazenamentoprimeiro a entrar primeiro a sair (FIFO) e ao equipamentoimplementando tais protocolos de sinalização.FUNDAMENTOS
Dispositivos de armazenamento primeiro a entrarprimeiro a sair (FIFO) são usados em processadores eaplicações de comunicação envolvendo transferências dedados entre domínios diferentes, comumente onde os domíniospodem operar em diferentes taxas de dados. Embora as taxasde dados sejam diferentes, e freqüentemente variem entre osdomínios, os sinais entre eles podem ser sincronizados emrelação à mesma freqüência de relógio fundamental (isto é,sincrona) ou sincronizados em relação a diferentesfreqüências de relógio fundamentais (isto é, assincronas).Em uma aplicação sincrona, o armazenamento provido peloFIFO compensa as diferenças nas taxas de dados dos doisdomínios. Em uma aplicação assincrona, o armazenamentoprovido pelo FIFO compensa as diferenças em ambas, taxas dedados e freqüências de relógio, dos dois domínios. Emqualquer um dos casos, o armazenamento ajuda a evitar perdade dados devido à transferência de dados em tempos ouvelocidades quando o domínio receptor não pode lidar com osmesmos e/ou para evitar duplicação de dados porque odominio receptor está esperando e pronto para receber dadosadicionais enquanto o dominio emissor ainda estátransferindo dados anteriores.
A maioria das implementações FIFO, contudo, élimitada pelo tamanho ou profundidade finita da memória ouarranjo de registrador implementando o armazenador FIFO.Por exemplo, os dados podem ainda ser perdidos se o dominioemissor enviar mais dados quando o dispositivo dearmazenamento FIFO já estiver cheio de dados esperando atransferência para o depósito no dominio receptor. Váriastécnicas foram desenvolvidas para alimentar informaçãosobre o nivel de enchimento e/ou status de gravação doFIFO, a partir do dominio receptor ou de depósito para odominio de origem ou emissor. Contudo, continua anecessidade de aperfeiçoamento adicional em tais técnicas.
SUMARIO
Um contador monitoriza o espaço disponível noFIFO e o lado da origem utiliza a contagem para controlar atransferência de dados. Para melhorar o controle detransferência, o contador é implementado no lado de origemenquanto que o FIFO é implementado pelo lado do receptor. 0contador é responsivo a um sinal pelo lado de origem querepresenta um estado de pronto dos dados paratransferência, por exemplo, que novos dados foramcarregados em um registrador pelo lado da origem e estãodisponíveis ao dispositivo de armazenamento FIFO. Como ocontador está no lado de origem, não há retardo depropagação (isto é, retardo dentro do ciclo atual) nemlatência (isto é, retardo de um ou mais ciclos) incorridono recebimento e na resposta a esse sinal. 0 contadortambém é responsivo a um sinal de que espaço se tornoudisponível no dispositivo de armazenamento FIFO, enviado,por exemplo, quando os dados são emitidos a partir de umespaço liberado no dispositivo de armazenamento FIFO. Essesinal mencionado por último, contudo, é enviado a partir dodominio de depósito para o dominio de origem, e a operaçãodo contador está sujeita a qualquer latência incorrida nacomunicação do sinal entre os domínios.Um método exemplar permite a transferência dedados entre um dominio de origem operando em uma primeirataxa de dados e um dominio de depósito operando em umasegunda taxa de dados, diferente da primeira taxa de dados,por intermédio de um dispositivo de armazenamento primeiroa entrar primeiro a sair (FIFO) no dominio de depósito. 0método envolve carregar os dados em um registrador nodominio de origem para tornar os dados disponíveis aodominio de depósito e prover um sinal de dados prontos,quando a fonte tiver os dados prontos para transferência.Nesse exemplo, o valor representando o espaço disponível nodispositivo de armazenamento FIFO, mantido no contador nodominio de origem, é decrementado em resposta ao sinal dedados prontos. 0 método também envolve sinalizar o estadode dados prontos para o dominio de depósito, com base nosinal de dados prontos. No recebimento da sinalização doestado de dados prontos ■ no dominio de depósito, odispositivo de armazenamento FIFO é ativado para carregaros dados disponíveis a partir do registrador no dominio deorigem para o dispositivo de armazenamento FIFO. Em certoponto, os dados são emitidos a partir do dispositivo dearmazenamento FIFO para um depósito de dados, desse modoliberando um espaço no dispositivo de armazenamento FIFO. 0método também envolve sinalizar a liberação de espaço nodispositivo de armazenamento FIFO para o contador nodominio de origem. Em resposta ao recebimento dessasinalização, o contador incrementa o valor representandoespaço disponível no dispositivo de armazenamento FIFO. 0carregamento dos dados prontos no registrador no dominio deorigem para tornar os dados disponíveis ao dominio dedepósito é controlado em resposta ao valor representandoespaço disponível no dispositivo de armazenamento FIFO,mantido no contador no dominio de origem.Duas técnicas ou protocolos de sinalização,diferentes, são revelados. Uma técnica envolve enviar umsinal de pulso de dados prontos para um registrador nodomínio de depósito. Embora cada pulso consista em um únicociclo, o registrador no domínio de depósito mantém o pulso,e prove uma indicação de pronto, continua, até ser liberadoapós conclusão do carregamento de novos dados nodispositivo de armazenamento FIFO.
A outra técnica revelada utiliza sinalização"pingue-pongue". Isso envolve mudar um estado deregistrador de sinalização a partir de um estado de dadosprontos, anterior, válido para um estado de dados prontos,válido alternativo. Essencialmente, a saida do registradoralterna (pingue-pongue) entre os dois estados válidos dedados prontos, quando novas pulsações de dados se tornamsucessivamente disponíveis para transferência, Ummultiplexador (MUX) ou semelhante, pelo lado do depósito,indica que um novo batimento de dados está pronto, emresposta a cada transição entre dois estados alternados. Umelemento de controle pelo lado do depósito utiliza essaindicação de dados prontos a partir do MUX para controlar aentrada para o FIFO.
Outro exemplo de um método para transferir dadosabrange uma pluralidade de ciclos potencialmentesobrepostos de transferência entre o domínio de origem e odomínio de depósito. Cada ciclo de transferência, o qualocorre tipicamente através de uma pluralidade de ciclos derelógio, requer o carregamento de dados a partir de umaorigem em um registrador no domínio de origem; sinalizandodados prontos para o domínio de depósito; carregamento dosdados a partir do registrador a partir do registrador nodominio de origem para um primeiro dispositivo dearmazenamento primeiro a entrar primeiro a sair (FIFO) nodomínio de depósito; emitindo os dados a partir dodispositivo de armazenamento FIFO para um dispositivo dedepósito e liberando espaço para dados no dispositivo dearmazenamento FIFO; e sinalizando a saida de dados eliberação de espaço no dispositivo de armazenamento FIFOpara o dominio de origem. Um valor de contagem mantido nodominio de origem é modificado de uma primeira maneira (porexemplo, decrementado ou incrementado), em resposta a cadacarregamento de dados no registrador no dominio de origem.O valor de contagem é modificado, de uma maneira oposta(por exemplo, incrementado ou decrementado) em reposta acada sinalização da liberação de espaço no dispositivo dearmazenamento FIFO para o dominio de origem. Controle decarregamento de dados a partir da origem para o registradorno dominio de origem, em sucessivos ciclos detransferência, se baseia em um estado atual do valor docontador. A etapa de carregar dados a partir do registradorde origem para o FIFO também inclui a transferência dedados e o sinal de pronto através de um ou maisregistradores intermediários como seria tipicamente feitoquando a transferência do registrador de origem para o FIFOnão pode ocorrer fisicamente em um único ciclo de relógio.
Ainda outro exemplo de um método para transferirdados entre domínios envolve um número de repetições deetapas, inclui o carregamento de dados a partir de umaorigem para um registrador no dominio de origem, e tornandoos dados disponíveis para o dominio de depósito; quandoespaço está disponível no dispositivo de armazenamentoprimeiro a entrar primeiro a sair (FIFO) no dominio dedepósito, carregando os dados a partir do registrador nodominio de origem para o dispositivo de armazenamento FIFO;e emitindo os dados a partir do dispositivo dearmazenamento FIFO para um dispositivo de depósito paraliberar espaço para os dados no dispositivo dearmazenamento FIFO. Esse método também envolve manter umacontagem no domínio de origem representativa do espaçodisponível no dispositivo de armazenamento F1F0. A contagemé mantida em resposta a cada carregamento de dados noregistrador no dominio de origem e em resposta àsinalização a partir do dominio de depósito de cadaliberação de espaço no dispositivo de armazenamento FIFO.Para cada repetição da etapa de carregar dados noregistrador no dominio de origem, existe uma etaparelacionada de controlar o carregamento de dados a partirda origem para aquele registrador com base em um estadoatual da contagem. Além disso, no caso da contagem indicarque o dispositivo de armazenamento FIFO está cheio, ométodo permite o carregamento de um próximo batimentodisponível de dados para o registrador no domínio de origeme manutenção daquele batimento de dados de tal modo que obatimento de dados é tornado continuamente disponível parao dispositivo de armazenamento FIFO para carregamento nodispositivo de armazenamento FIFO quando o espaço se tornadisponível.
Equipamento específico, utilizando essas técnicasde controle e de sinalização ou técnicas similares paratransferir dados entre os domínios, também é revelado. Umexemplo de tal equipamento poderia incluir um registradorde dados de leitura no domínio de origem, para receber osdados a partir de uma fonte e apresentar os dados recebidospara transferência ao domínio de depósito. Um dispositivode armazenamento primeiro a entrar primeiro a sair (FIFO) ,no domínio de depósito, recebe os dados a partir doregistrador de dados de leitura para transferência para umdepósito. 0 equipamento também inclui um contador nodomínio de origem. 0 contador é responsivo ao carregamentode dados no registrador de dados de leitura edescarregamento dos dados a partir do dispositivo dearmazenamento FIFO. 0 valor mantido no contador representao espaço disponível no dispositivo de armazenamento FIFO. 0equipamento inclui ainda um controle no dominio de origem,para controlar o carregamento de dados no registrador dedados de leitura para transferência para o dominio dedepósito, em resposta ao valor de contagem.
Em um aspecto, mediante indicação de que odispositivo de armazenamento FIFO está cheio por intermédiodo valor de contagem no contador, o controlador permite ocarregamento de um próximo batimento disponível de dadospara o registrador de dados de leitura. 0 registrador dedados de leitura mantém esse batimento de dados de modo aser continuamente apresentado ao dispositivo dearmazenamento FIFO para carregamento no dispositivo dearmazenamento FIFO quando o espaço se tornar disponível.
Em outro aspecto, o equipamento inclui meio parasinalizar quando os dados estão no registrador de dados deleitura para transferência para o dispositivo dearmazenamento FIFO, para o dominio de depósito paracontrolar o recebimento de dados pelo dispositivo dearmazenamento FIFO. Vários exemplos de técnicas desinalização apropriadas são revelados.
Objetivos, vantagens e características inovadorasserão apresentadas em parte na descrição a seguir, e emparte se tornaram evidentes para aqueles versados natécnica mediante exame do que se segue e dos desenhosanexos ou podem ser aprendidos por intermédio da produçãoou operação dos exemplos. Os obj etivos e vantagens dospresentes ensinamentos podem ser realizados e conseguidospela prática ou uso das metodologias, instrumentalidades ecombinações particularmente assinaladas nas reivindicaçõesanexas.
BREVE DESCRIÇÃO DOS DESENHOS
As figuras de desenho ilustram uma ou maisimplementações de acordo com os presentes ensinamentos,apenas como exemplo, e não como limitação. Nas figuras,numerais de referência semelhantes se referem aos mesmoselementos ou a elementos similares,
A Figura 1 é um diagrama funcional de blocos deelementos transferindo dados entre dominios por intermédiode um armazenador primeiro a entrar primeiro a sair (FIFO)e elementos para sinalização e controle da troca de dados.
As Figuras 2 (A) a 2(C) são diagramas detemporização úteis no entendimento da troca de dados nosistema da Figura 1.
A Figura 3 é um diagrama funcional de blocos deelementos transferindo dados entre dominios por intermédiode um armazenador primeiro a entrar primeiro a sair (FIFO),e um conj unto de certo modo diferente de elementos parasinalização e controle da troca de dados.
As Figuras, 4(A) e 4(B) , são diagramas detemporização úteis para o entendimento da troca de dados nosistema da Figura 3.
DESCRIÇÃO DETALHADA
Na descrição detalhada seguinte, vários detalhesespecíficos são apresentados como exemplos para prover umentendimento completo dos ensinamentos relevantes. Contudo,deve ser evidente para aqueles versados na técnica que ospresentes ensinamentos podem ser praticados sem taisdetalhes. Em outras instâncias, métodos, procedimentos,componentes e conjunto de circuitos conhecido descritos emum nivel relativamente elevado, sem detalhe, para evitar osaspectos que podem desnecessariamente obscurecer ospresentes ensinamentos.A tecnologia aqui revelada se refere aosprocessos para sinalização e controle relacionados àtransferência de dados para e a partir de dispositivos dearmazenamento primeiro a entrar primeiro a sair (FIFO) e aoequipamento utilizando tais protocolos. Faz-se agorareferência, em detalhe, aos exemplos ilustrados nosdesenhos anexos e discutidos abaixo. A Figura 1 ilustra umprimeiro exemplo de um sistema implementando o protocolo desinalização relacionado ao FIFO.
0 sistema ilustrado inclui dois elementos em doisdomínios diferentes, um dominio de origem 11 desejandoenviar dados e um dominio de depósito 13 destinado areceber os dados. Essencialmente, um elemento no dominio 11representado genericamente pela origem de dados 15 temdados disponíveis, e um elemento no dominio 13 representadogenericamente pelo depósito de dados 17 precisa receberaqueles dados para processamento adicional, armazenamentoou semelhante.
Os dois domínios são separados por um limite dedominio, representado pela linha pontilhada D-D. Os doisdomínios podem ser regiões diferentes de um único chip desemicondutor separado por uma região de limite, tal comoporções de núcleo diferentes de um chip de processador. Osdomínios diferentes também podem ser chips diferentes, oudiferentes dispositivos conectados por intermédio defiação, através de uma série de um ou mais registradores,ou outros meios de interface, ou dois sistemas separados secomunicando por intermédio de uma rede de área local ouremota. As operações dos circuitos nos dois domínios podemser sincronizadas em relação à mesma freqüência de relógiofundamental (isto é, sincrona) ou sincronizadas em relaçãoa diferentes freqüências de relógio fundamentais (isto é,assincronas).Para facilitar a discussão, supõe-se que os doisdomínios são sincronos e representam elementos bem próximosque são conectados diretamente juntos através do limite,por exemplo, duas seções de um chip de processadorinterconectadas ou acopladas juntas através de uma regiãode limite do chip. A separação das duas seções pode serfisica, por exemplo, duas partes ou áreas separadas dochip, ou a separação pode ser simplesmente lógica querdizer simplesmente entre componentes operando na taxa dedados do primeiro domínio e componentes operando na taxa dedados do segundo dominio.
Desse modo, as taxas de dados dos dois domíniosdiferem. Elementos no dominio de origem 11 operam em umataxa de dados, enquanto que os elementos no dominio dedepósito 13 operam em outra taxa de dados de certo mododiferente. A taxa de dados do dominio de depósito 13 edesse modo o dispositivo de depósito de dados 17 pode sermais lenta ou mais rápida do que a taxa de dados da origem15 no dominio 11. Além disso, as taxas de dados e dessemodo a diferença nas taxas de dados pode variar com otempo, por exemplo, à medida que variam as operações deprocessamento da origem 15 e do depósito 17. Nos diagramasde temporização exemplares (Figuras 2(A) a 2(C)), a taxa dedados de depósito é de certo modo mais lenta do que a taxade dados de origem. Embora nos exemplos as taxas de relógiosejam idênticas, vantagens também podem ser obtidas quandoos relógios são diferentes, utilizando técnicas conhecidasdaqueles versados na arte.
Retornando à Figura 1, para compensar a diferençade taxa de dados dos domínios 11 e 13, através do limite D-D, o dominio de depósito 13 inclui um dispositivo dearmazenamento primeiro a entrar primeiro a sair (FIFO),essencialmente para armazenar dados recebidos a partir dodomínio de origem 11. 0 armazenamento compensa asdiferenças nas taxas de dados dos dois domínios 11 e 13,para evitar perda de dados devido à transferência de dadosem tempos ou velocidades, quando o dominio receptor nãopode lidar com os mesmos, e/ou para evitar a duplicação dedados porque o dominio receptor 13 está esperando e prontopara receber dados adicionais enquanto o dominio emissor 11ainda está transferindo dados anteriores.
0 dispositivo de armazenamento FIFO 19 pode serimplementado em qualquer uma de uma variedade dearquiteturas físicas, tal como registradores ou memórias.Para fins de discussão, é conveniente considerar o FIFO 19como uma série ou pilha de registradores através dos quaisse deslocam os dados recebidos. Contudo, os dispositivosFIFO freqüentemente utilizam memória e proporcionamoperações de primeiro a entrar primeiro a sair, porintermédio de manipulação apropriada do endereçamento dememória usado durante as operações de leitura e gravação.Um registrador ou localização está cheio quando um novobatimento de dados, 12 8 bytes no exemplo, é carregado ougravado no dispositivo de armazenamento FIFO 19. Umregistrador ou localização está liberado quando umbatimento de dados é descarregado ou lido a partir dodispositivo de armazenamento FIFO 19 para o depósito 17.
Pelo lado da origem ou emissão 11, a origem dedados 15 fornece um batimento de dados, nesse exemplo, 128bits de dados, a um registrador 21, referido algumas vezescomo um registrador de dados de leitura. No exemplo, oregistrador 21 é designado como registrador de dados deleitura (ReadData). O registrador ReadData 21 retém os 128bits de dados e apresenta os bits de dados nas linhas paratransferir os dados através do limite D-D para a entrada dodispositivo de armazenamento FIFO 19. Embora não se j amostrada no desenho, lógica adicional pode existir após oregistrador de dados de leitura e antes do FIFO. Enquanto oregistrador 21 retém o novo batimento (128 bytes) de dados,os dados estão disponíveis nas linhas para a entrada dodispositivo de armazenamento FIFO 19. Contudo, quando onovo batimento de dados é primeiramente carregado noregistrador 21, existe certo retardo de propagação antes doaparecimento dos dados na entrada do dispositivo dearmazenamento FIFO 19 no dominio de depósito 13.
Um controle FIFO 23 controla o fluxo de dadospara e através do registrador ReadData 21. 0 controladorFIFO 23 é uma máquina de estado finito. A máquina de estadopode ser implementada como um processador programável, masé formada tipicamente de circuitos e/ou blocos lógicos paragerar saldas desejadas em resposta às entradas especificas,quer dizer, de modo a implementar o algoritmo de controleespecifico pelo lado da origem. Quando a origem 15 tivernovos dados para enviar, o controle FIFO 2 3 faz com que oregistrador ReadData 21 apresente os novos dados se houverespaço disponível no dispositivo de armazenamento FIFO 19para o último batimento de dados, conforme indicado por umcontador de uso de registrador 25. 0 alcance ou valorinicial do contador corresponde à profundidade do FIFO.Portanto, o controle 2 3 pode determinar se espaço estádisponível no FIFO mediante exame de um estado do contador,por exemplo, se o contador ainda não é negativo (nenhumespaço disponível). Como discutido mais abaixo, é vantajosoque o contador 25 seja um elemento no dominio de origem 11.Embora mostrado como um elemento separado, o contador 25pode ser integrado como parte da máquina de estado servindocomo o controle FIFO 23.
Quando o controle FIFO 23 faz com que oregistrador ReadData 21 apresente os novos dados paraentrada no dispositivo de armazenamento FIFO 19, o controleFIFO 2 3 sinaliza para o dominio de depósito 13 mediantegeração de um pulso de pronto, referido no exemplo comosinal ReadDataReady. Esse sinal é tipicamente um pulsoasseverado para um único ciclo de relógio, o que significaque ele não é um sinal de estado mantido elevado (ou baixo)pelo tempo em que os dados são mantidos disponíveis peloregistrador ReadData 21. No dominio de depósito, o sinal depulso ReadDataReady é aplicado a um registrador 27,designado como o registrador de pronto (Rdy) na figuraexemplar. Quando o registrador 27 recebe um pulso depronto, ele prove um sinal de estado, significando que osdados estão prontos para transferência para o controle FIFO no dominio de depósito 13. 0 registrador 27 mantém oestado de pronto (mantém o batimento) até ser liberado pelocontrole FIFO 29.
No dominio de depósito 13, o controle FIFO 29 éoutra máquina de estado finito. A máquina de estado podeser implementada como um processador programável, mastipicamente é formada de circuitos e/ou blocos lógicos paragerar saidas desejadas em resposta às entradas especificas,quer dizer, de modo a implementar o algoritmo de controleespecifico pelo lado do depósito. 0 controle FIFO 2 9, porexemplo, prove sinais de "gravação" e "leitura" para odispositivo de armazenamento FIFO para controlar a entrada(gravação) e saida (leitura) de dados para e a partir dodispositivo de armazenamento FIFO 19. A função de leituralibera espaço para receber novos dados. Conforme observado,o registrador 27 prove um sinal de estado de pronto para ocontrole FIFO 29 em resposta ao batimento de pronto apartir do controle de dominio de origem 23. Se espaçoestiver disponível no dispositivo de armazenamento FIFO 19para receber os dados de pronto, o controlador 29 gera osinal de gravação, fazendo com que o dispositivo dearmazenamento FIFO aceite a entrada dos dados a partir doregistrador ReadData 21 no dominio de origem 11. 0 controleFIFO 29 sincroniza o registrador de estado de pronto 27(isto é, permite que ele seja atualizado com base no valordo sinal ReadDataReady) quando ele gera o sinal degravação, quer dizer quando ele instrui o dispositivo dearmazenamento FIFO 19 a aceitar um batimento de dados (12 8bits) a partir da fonte.
Conforme ilustrado, o pulso servindo como o sinalReadDataReady decrementa o contador 25, indicando que menosum local de registrador está disponível no dispositivo dearmazenamento FIFO 19. A esse respeito, o contador 25 édecrementado em resposta ao pulso de pronto gerado no mesmodominio 11, sem qualquer retardo ou latência paratransferência de um sinal entre os dois domínios 11 e 13. 0sinal de leitura a partir do controle FIFO 2 9 pelo lado dodepósito instrui o dispositivo de armazenamento FIFO 19 aemitir os dados a partir de um de seus locais deregistrador para o depósito 17 e liberar aquele local nodispositivo 19. Portanto, o pulso do sinal de pronto éfornecido a partir do dominio de depósito 13 através dolimite D-D, para incrementar o contador 25.
Haverá certa latência entre a emissão do sinal depronto pelo controle 29 e o surgimento do sinalcorrespondente como a indicação de entrada livre FIFO nocontador 25 no dominio de origem 11. A latência desinalização pode ser devido ao tempo exigido para asinalização atravessar o chip. Contudo, pode haver conjuntode circuitos de estado adicional, representadogenericamente pelo elemento de retardo/temporização 28 nodesenho, entre o sinal de leitura e a entrada livre deFIFO. Embora mostrado no dominio de depósito 13, o conjuntode circuitos 28 pode estar fisicamente em qualquer um ou emambos os domínios. 0 conjunto de circuitos adicional,tipicamente um ou mais flip-flops, garante niveis de sinaladequados e alinhamento de temporização através do limite Dentre os domínios. Contudo, o conjunto de circuitosadicional 2 8 acrescentaria um ou mais ciclos de retardos àlatência entre a asseveração do sinal de pronto pelocontrole 29 e o surgimento do sinal correspondente como aindicação de entrada livre de FIFO no contador 25. Emboranão sejam mostrados por conveniência, aqueles versados natécnica reconhecerão que se tal conjunto de circuitoadicional for provido, elementos similares deretardo/temporização seriam providos em outras linhas entreos dois domínios, tal como a linha ReadData e a linhaReadDataReady.
0 contador 2 5 fornece a contagem de espaço livreFIFO ao controle FIFO 23 no domínio de origem 11 para usoem sua determinação para transferir novos dados através dolimite D-D. Ao decrementar a contagem cada dado de tempo édisponibilizado para o FIFO 19 e incrementando-se acontagem cada vez que um local for liberado (quando osdados são lidos a partir do FIFO 19), o valor do contador25 monitoriza a quantidade de espaço (número de locais deregistrador), disponíveis, ou livres, no dispositivo dearmazenamento FIFO 19. Contudo, como o contador 25 está nodomínio de origem 11, o decremento de certo modo precede orecebimento do sinal ReadDataReady e resposta a ele nodomínio de depósito 13. Há certo retardo ou latência natransferência do sinal de pulso através do limite D-D parao registrador 27. Inversamente, o incremento do contador 25no domínio de origem 11 de certo modo atrasa a leitura dedados a partir do dispositivo de armazenamento FIFO 19 nodomínio de depósito 13, devido ao retardo ou latência natransferência do sinal de leitura através do limite D-D.
0 controle FIFO 23 também é responsivo a um indicador de validade de dados (V) em um registrador de um bit 31 definido pela origem de dados 15, quando a origem inicialmente tem dados disponíveis para transferência para o depósito 17. Dito de outra forma, a fonte 15 define o indicador V no registrador 31 para informar ao controle FIFO 23 que existem novos dados válidos disponíveis para carregamento no registrador ReadData 21. 0 controle FIFO 23 prove um sinal de relógio (habilitação) para o registrador de um bit servindo como o indicador de validade de dados (V) 31. Quando os dados tiverem sido transferidos de forma bem-sucedida para o FIFO 19 no domínio de depósito, o controle FIFO 2 3 prove um sinal de relógio (habilitação) para carregar o registrador 31 e desse modo o estado do indicador de validade (V) . Em operação, o bit válido de origem é enviado a partir do registrador 31 para o controle FIFO de origem 23, para informar a esse controle FIFO 23 de que os dados estão prontos para serem enviados. 0 bit é liberado a partir do registrador 31 quando os dados são enviados, a menos que novos dados se desloquem simultaneamente a partir da origem 15. Dessa maneira, o controle FIFO 23 controla o indicador V no registrador 31 para permitir que a origem 15 aplique o indicador (e introduza um novo batimento de dados ao registrador ReadData) quando o contador 25 indica que existe espaço disponível para o novo batimento de dados.
Para considerar a transferência de dados no sistema da Figura 1, pode ser útil considerar uma seqüência especifica de operações do sistema, com referência aos diagramas de temporização simples conforme ilustrado nas Figuras 2(A) a 2(C). A linha superior em cada desenho prove numeração dos ciclos de relógio, e as pulsações do relógiosão mostradas na próxima linha. Nos exemplos, o relógio é o mesmo em ambos os domínios. A terceira linha representa os dados introduzidos nos registradores ReadData 21, e a quarta linha representa o sinal ReadDataReady (abreviado DataRdy nos diagramas de sinal).
Considere agora a Figura 2 (A) como um primeiro exemplo. Nesse exemplo, para simplicidade, o FIFO consiste em uma única linha (Fifo[0]). A contagem (mostrada na quinta linha) representa o número de pulsações de dados que podem ser enviadas. A contagem começa com uma posição a mais do que o número de posições FIFO. Esse batimento adicional representa os dados que podem ser mantidos "continuamente" (no registrador ReadData). Uma contagem de zero indica que os dados de origem precisam ser mantidos a partir do ciclo anterior. Conseqüentemente, o sinal DataReady não deve ser asseverado em tal ciclo. Como o exemplo da Figura 2(A) tem apenas uma posição FIFO, inicialmente a contagem é ajustada para 2.
No ciclo 2, quando os dados Qo primeiramente aparecem no registrador ReadData 21, o controle FIFO 2 3 primeiramente assevera o sinal ReadDataReady (DataRdy). No próximo ciclo, como ele recebeu o sinal ReadDataReady, o contador decrementa sua contagem dos locais de armazenador FIFO disponíveis em 1. No exemplo, a quinta linha do diagrama, a contagem cai para 1 no terceiro ciclo.
Suponha para discussão desse exemplo, que o espaço está disponível no FIFO. Em resposta ao sinal ReadDataReady no ciclo 2, o FIFO aceita o primeiro batimento Q0 de dados e desloca o mesmo para a linha Fifo[0] no próximo ciclo, quer dizer no ciclo 3. Ao mesmo tempo, nesse exemplo, o depósito está pronto, e aceita aquele batimento de dados nesse ciclo (linha inferior do desenho) , de modo que o controle FIFO 2 9 assevera o sinalde leitura (próximo à última linha no desenho) , para permitir a leitura daquele batimento de dados para fora do FIFO para o depósito.
Nesse primeiro exemplo, o sistema exibe um ciclo único de latência entre os dominios- Como resultado da latência entre os dominios, o sinal de leitura a partir do controle FIFO 2 9 alcança o contador no próximo (quarto) ciclo, como o sinal de entrada livre do FIFO mostrado na Figura 1 ou a seta na Figura 2 (A) . Esse sinal representa uma liberação de uma entrada a partir do FIFO, que normalmente faria com que o contador incrementasse. Contudo, um novo batimento de dados também está disponível naquele mesmo ciclo, como indicado pelo sinal ReadDataReady continuado. 0 decremento responsivo ao sinal ReadDataReady neutraliza o incremento responsivo ao sinal de leitura, de modo que a contagem permanece em 1 (como mostrado pelo sombreado na linha Contagem). De forma similar, a contagem permanece em um através do ciclo 11, quer dizer desde que novos dados se tornem disponíveis e os dados estejam sendo lidos a partir do FIFO no dominio de depósito.
No ciclo 10, o último batimento de dados Q8 é carregado no registrador ReadData, e o sinal ReadDataReady (DataRdy) permanece elevado. Contudo, no ciclo 11, quando aquele batimento de dados se desloca para o FIFO, e nenhum batimento novo de dados está disponível. O controle 23 cancela a asseveração do sinal ReadDataReady (DataRdy na Figura 2(A)). No próximo ciclo, quando o sinal de pronto a partir do controle 29 alcança o contador, o contador incrementa (não é necessidade correspondente de decrementar porque nenhum dado novo está disponível). Nesse exemplo simples, a contagem retorna até 2, no ciclo 12, após o último batimento de dados ter se deslocado através do FIFO para o depósito.A Figura 2B mostra a temporização para um exemplo similar, no qual o FIFO é três linhas mais profundo (posições Fifo[0], Fifo[l] e Fifo[2]), e existem dois ciclos de latência na sinalização entre os dois domínios, conforme representado pela linha adicional de entrada livre de FIFO. A latência adicional pode ser devido à inclusão de conjunto de circuitos de estado, adicional 28, por exemplo, um flip-flop, entre o sinal de leitura a partir do controle 2 9 e a entrada de sinal de entrada livre de FIFO do contador 25. Devido às similaridades, aqueles versados na técnica devem considerar as operações apresentadas pelo diagrama de sinalização mostrado nesse desenho.
A Figura 2(C) é outro exemplo de latência de ciclo único similar à Figura 2(A), contudo, na Figura 2 (C) o FIFO está mais fundo em três linhas (posições Fifo[0], Fifo[l] e Fifo[2]). Além disso, a Figura 2 (C) mostra a leitura mais lenta pelo Depósito e desse modo os dados se deslocando através das linhas do FIFO. Outra vez, a linha superior do diagrama prove numeração de ciclos de relógio, e os pulsos do relógio são mostrados na próxima linha. A terceira linha representa dados introduzidos no registrador ReadData 21. Deve ser observado, quando os dados estão disponíveis a partir da origem e espaço está disponível no FIFO, por exemplo, nos ciclos 2, 3 e 4, os dados se deslocam para o registrador ReadData em um ciclo e para fora do registrador para o FIFO no próximo ciclo. Por exemplo, pulsações de dados Qo, Qi e Q2 residem no registrador para apenas um ciclo cada. Contudo, quando os dados estão no registrador ReadData, mas espaço não está disponível no FIFO, um batimento de dados permanece no registrador por dois ou mais ciclos. No exemplo, as pulsações de dados começando com Q3 residem no registrador por pelo menos dois ciclos.Outra vez, a contagem (mostrada na quinta linha) representa o número de pulsações de dados que podem ser enviadas. A contagem começa com uma posição a mais do que o número de posições FIFO, quer dizer em 4 para o exemplo de FIFO de três linhas da Figura 2(C). Esse batimento adicional representa os dados que podem ser mantidos "continuamente" no registrador ReadData. Uma contagem de zero indica que os dados de origem precisam ser mantidos a partir do ciclo anterior, como representado pela retenção de cada uma das pulsações de dados começando com Q3 no registrador por pelo menos dois ciclos. Outra vez, o sinal DataReady não deve ser asseverado em um ciclo quando a contagem é 0.
Conforme observado, nesse exemplo, o FIFO consiste em três linhas, portanto, inicialmente a contagem mostrada na quinta linha é ajustada em 4. No ciclo 2, quando os dados Qo aparecem primeiramente no registrador 21, o controle FIFO 2 3 primeiramente assevera o sinal ReadDataReady (DataRdy) mostrado na quarta linha do diagrama. No próximo ciclo (ciclo 3), porque ele recebeu o sinal ReadDataReady a partir do controle de domínio de origem 23, o contador 25 decrementa sua contagem dos locais de armazenador disponíveis em 1 - No exemplo, na quinta linha do diagrama, a contagem cai para 3 no terceiro ciclo. Inicialmente, as linhas FIFO estão vazias, de modo que o primeiro batimento de dados pode se deslocar para o FIFO e diretamente para a linha inferior do FIFO, quer dizer para a linha Fifo[0], no terceiro ciclo. O depósito não está pronto para receber esses dados até algum tempo depois (por exemplo, no ciclo 6) conforme mostrado na parte inferir do diagrama. Assim, Fifo[0] mantém o primeiro batimento de dados Qo por vários ciclos.
No ciclo 3, contudo, um segundo batimento dedados Qi se desloca para o registrador ReadData, e o controle pelo lado de origem 23 mantém o sinal ReadDataReady (DataRdy) alto. Como o contador ainda não recebeu um sinal de entrada livre de FIFO ou leitura a partir do dominio de depósito, o contador decrementa outra vez a contagem no ciclo 4, nesse caso, para um valor de 2. Nesse ponto no exemplo, duas das linhas FIFO estão vazias, de modo que o segundo batimento de dados pode se deslocar para o FIFO e diretamente para a linha próxima da última do FIFO, quer dizer para a linha Fifo[l], no quarto ciclo. 0 depósito ainda não está pronto para receber os dados até algum momento posterior (por exemplo, no ciclo 6), conforme mostrado na parte inferior do diagrama. Assim, Fifo[1] mantém o segundo batimento de dados Qx por vários ciclos.
No ciclo 4, um terceiro batimento de dados Qi se desloca para o registrador ReadData, e o controle pelo lado de origem 2 3 mantém o sinal ReadDataReady (DataRdy) alto. Outra vez, o contador ainda não recebeu um sinal de entrada livre de FIFO ou de leitura a partir do dominio de depósito no próximo ciclo, de modo que no ciclo 5 o contador decrementa adicionalmente a contagem em 1, nesse caso, para um valor de 1. Nesse ponto no exemplo, uma das linhas FIFO está vazia, de modo que o segundo batimento de dados pode se deslocar para o FIFO na linha Fifo[0], no quinto ciclo. O depósito ainda não está pronto para receber aqueles dados até algum momento posterior, portanto, Fifo[0] inicialmente mantém o terceiro batimento de dados Q2.
No ciclo 5, outro batimento de dados Q3 se desloca para o registrador ReadData, e o controle pelo lado de origem 23 mantém o sinal ReadDataReady (DataRdy) alto. Dessa vez, como nenhum dado se deslocou para fora do FIFO, no ciclo 6 o contador decrementa adicionalmente a contagem para um valor de 0. Nesse ponto no exemplo, nenhuma daslinhas FIFO está vazia, e existem dados no registrador ReadData. Conseqüentemente, o sinal DataReady não é asseverado nesse ciclo. Contudo, o quarto batimento de dados Q3 é mantida "continuamente" no registrador ReadData.
No exemplo, o depósito primeiramente se torna pronto para aceitar um batimento de dados no sexto ciclo (linha inferior do desenho), de modo que o controle FIFO 29 assevera o sinal de leitura (próximo à última linha no desenho), para permitir a leitura daquele batimento de dados a partir do FifofO] para o depósito. Nesse exemplo, o sistema exibe um único ciclo de latência entre os dominios. Como resultado da latência entre os dominios, o sinal de leitura a partir do controle FIFO 29 alcança o contador no próximo (sétimo) ciclo, como o sinal de entrada livre FIFO mostrado na Figura 1 ou a seta na Figura 2(C). Esse sinal representa uma liberação de uma entrada a partir do FIFO, o que faz com que o contador incremente de volta para um valor 1.
Quando o primeiro batimento de dados Qo se desloca para o depósito no ciclo 6, o espaço é liberado no Fifo [0] , de modo que outros dados no FIFO se deslocam descendentemente (Qi para Fifo [0] e Q2 para Fifo [1] ) no ciclo 7. O Fifo [2] da linha superior está vazia e pode receber agora o novo batimento de dados a partir do registrador ReadData, quer dizer o batimento Q3 nesse ponto no exemplo. Como o batimento Q3 se deslocou para o FIFO, o registrador ReadData agora aceita o próximo batimento de dados Q4.
No exemplo, o depósito aceita os dados a partir da parte inferior do FIFO em ciclos alternados, de modo que operações similares àquelas dos ciclos 6 e 7 se alternam, por exemplo, de modo que a contagem se alterna entre 1 e 0 quando o contador decrementa alternadamente e entãoincrementa. Como mostrado, o DataRegister mantém cada novo batimento de dados "continuamente" por dois ciclos sucessivos, quer dizer até que o espaço se torne disponível no FIFO. Dessa forma, o registrador ReadData é essencialmente uma linha FIFO extra, embora ele proporcione essa função dentro do dominio de origem.
Como observado acima, o contador 25 está localizado com a fonte 15 no dominio 11, mais propriamente do que com o próprio FIFO 19 no dominio 13. Isso é vantajoso uma vez que existe tipicamente latência para os sinais a partir do FIFO para a origem, significando que a origem não pode enviar dados até que certo número de ciclos após o FIFO se torne pronto. No exemplo ilustrado, o contador 25 não prove um instantâneo fiel em tempo do que está no FIFO 19, porque o contador incorre na penalidade de latência para incrementar. Contudo o sinal de espaço vazio de FIFO está disponível imediatamente para o controle de FIFO de origem 23 (sem latência). Desse modo, para condições típicas, o contador 25 pode ser visto como "comendo" a latência para a sinalização necessária entre os dominios 11 e 13.
0 custo aqui é que o contador 25 pode ser pessimista em que ele poderia algumas vezes dizer que os dados não podem ser enviados quando na realidade existe espaço no dispositivo de armazenamento FIFO 19, porque o sinal livre a partir do controle 29 ainda não se propagou para o contador 25. Contudo, isso pode ser superado no desenho ilustrado mediante dimensionamento da profundidade de FIFO de acordo com a latência de sinal "livre" de modo que os dados podem ser transferidos continuamente. Também é possível comprar um pouco de largura de banda pelo fato de se poder enviar um último batimento de dados quando o controle pelo lado da origem 23 acredita que o FIFO 19 estácheio, quer seja pelo modelo apropriado da lógica de controle 2 3 ou mediante dimensionamento do contador para N+l (onde N é a profundidade de FIFO, por exemplo, o número de locais no FIFO 19).
Em virtude do contador local e da profundidade do FIFO, a fonte 15 pode enviar os dados continuamente. Desse modo, mediante dimensionamento do FIFO adequadamente, as transferências podem ocorrer sem considerar a latência dos sinais; portanto o sistema é substancialmente "insensível à latência". Observar que é possível que a latência se apresente aqui, especificamente, quando o lado de destino ou depósito não drena o FIFO 19 rapidamente o suficiente, e o sistema perde o armazenamento igual à latência. Isso pode ser compensado fazendo-se o FIFO 19 mais profundo, para cobrir as taxas de dados tipicas na qual o FIFO 19 é drenado. Desse modo, em condições tipicas, os dados são transferidos continuamente.
Além disso, o sistema não tem que ler os dados a partir do FIFO 19 exatamente quando ele decrementa o contador 25. Em vez disso, o sinal para decrementar o contador poderia levar à leitura de modo a decrementar o contador de certa forma mais cedo, desde que a temporização e a latência possam garantir que o lado do depósito lerá um batimento de dados a partir do dispositivo FIFO 19 e liberará espaço para dados novos, antes do lado de origem poder responder e enviar novos dados.
Como observado acima, com dimensionamento apropriado da profundidade de FIFO, é possível prover transferência de dados substancialmente continua entre os dois domínios. Para essa finalidade, a profundidade do FIFO deve ser pelo menos tão grande quanto a latência de sinalização de ida e volta, isto é, a contagem de ciclo a partir do ReadDataReady até que Espaço Vazio de FIFO sejavisível de volta na origem. Esse número é afetado por quaisquer estágios intermediários entre o registrador ReadData 21 e o FIFO 19 assim como latência intermediária entre o FIFO e solicitações de leitura a partir do depósito.
0 dimensionamento do FIFO pode ser mais complicado quando o depósito não pode ler os dados tão rapidamente quanto a origem os enviam. Por exemplo, o depósito pode consumir os dados em metade da taxa em que eles são originados. 0 número de estágios adicionados depende da quantidade de dados enviados em um tempo (isto é, uma rajada), a latência de sinalização de ida e volta, e a taxa de consumo pelo depósito. No máximo, o tamanho do FIFO precisaria ser aumentado pelo tamanho (contagem de ciclo) da raj ada. Contudo, como espaço adicional será tornado disponível no FIFO quando o depósito lê os dados, o FIFO efetivo será de certo .modo menor. Onde o tamanho de rajada e os intervalos entre as rajadas variam, determinar o tamanho ótimo pode exigir simulações com várias profundidades de FIFO para se obter a transferência contínua desej ada dos dados entre os dois domínios.
0 contador é inicializado para o tamanho do dispositivo de armazenamento FIFO 19 e decrementado e incrementado à medida que os dados são introduzidos e descarregados do dispositivo de armazenamento FIFO 19. Portanto, a faixa de valores de contagem permissíveis corresponde ao número N de locais, quer dizer, a profundidade do dispositivo de armazenamento FIFO 19. Mesmo quando o contador informa que não há espaço livre (contagem de 0) , o controle 23 permitirá que a origem carregue os dados no registrador 21 e aplique um conjunto adicional dos 108 bits de dados às linhas de entrada FIFO. 0 controle fornecerá o pulso ReadDataReady, o qual é mantido noregistrador 27. Efetivamente, o registrador 21 e as linhas de transferência proporcionam um local de registrador extra para o dispositivo de armazenamento FIFO 19. Além disso, esse mecanismo emprega essencialmente o FIFO para mascarar (em casos típicos) a latência de sinalização entre a origem e o depósito.
No exemplo da Figura 1, o controle FIFO 23 pelo lado da origem prove um único pulso como o sinal indicando que um novo batimento válido de dados estava disponível e pronta para transferência para o FIFO 19. Contudo, em vez dessa sinalização de pulso do estado ReadDataReady a partir do dominio de origem para o dominio de depósito, os conceitos podem ser adaptados para utilizar outras técnicas, tal como um método de sinalização pingue-pongue. Esse método de sinalização pingue-pongue emprega dois sinais entre o controle FIFO de origem e a lógica de Depósito Pronto. No máximo, um desses dois sinais é verdadeiro. Quando os dados são enviados, o primeiro sinal é asseverado. O próximo batimento de dados faz com que o primeiro sinal seja liberado enquanto o segundo é asseverado. 0 próximo batimento de dados faz com que o segundo sinal seja liberado enquanto o primeiro é asseverado, e assim por diante. 0 lado do depósito sabe observar o sinal alternado após receber os dados em um sinal. Essa abordagem tem a vantagem de que quando o batimento de dados extra é enviado após a origem acreditar que o FIFO está cheio, o sinal permanece asseverado até que o contador seja incrementado e outro batimento de dados seja enviado. Desse modo, não existe a necessidade de capturar o pulso. Essencialmente, um sinal continuo é asseverado através do limite indicado quando dados válidos estão prontos e disponíveis para transferência para o FIFO.
A Figura 3 é um diagrama funcional de blocos deum sistema, geralmente similar àquele da Figura 1, porém utilizando a técnica de sinalização pingue-pongue. Como o primeiro exemplo, esse segundo sistema ilustrado inclui elementos em dois domínios diferentes, um domínio de origem 311 desej ando enviar dados e um dominio de depósito 313 destinado a receber os dados. Essencialmente, um elemento no dominio 311 representado genericamente pela origem de dados 315 tem dados disponíveis, e um elemento no dominio 311 representado genericamente pela origem de dados 315 tem dados disponíveis, e um elemento no dominio 313 representado genericamente pelo depósito de dados 317 precisa receber esses dados para processamento adicional, armazenamento ou semelhante.
Os dois domínios são separados por um limite de dominio, representado pela linha pontilhada D-D. Outra vez, os dois domínios podem ser regiões diferentes de um único chip semicondutor, chips diferentes, ou dispositivos diferentes conectados por intermédio de fiação, através de uma série de um ou mais registradores, ou outro meio de interface, ou dois sistemas separados se comunicando por intermédio de uma rede de área local ou remota. Como na discussão anterior, as operações dos circuitos nos dois domínios podem ser sincronizadas em relação à mesma freqüência de relógio fundamental (isto é, sincrona), ou sincronizadas em relação a diferentes freqüências de relógio fundamentais (isto é, assincronas).
Para facilidade de discussão, supõe-se outra vez que os dois domínios sejam sincronos e representem elementos próximos que são conectados diretamente em conj unto através do limite, por exemplo, duas seções de número de um chip de processador interconectadas ou acopladas juntas através de uma região de limite do chip. A separação das duas seções pode ser fisica, por exemplo,duas partes ou áreas separadas do chip, ou a separação pode ser. puramente lógica, quer dizer, simplesmente entre os componentes operando na taxa de dados do primeiro dominio e os componentes operando na taxa de dados do segundo dominio.
Como anteriormente, os dois dominios operam em taxas de dados diferentes. Para compensar a diferença de taxa de dados dos dominios 311 e 313, através do limite D-D, o dominio de depósito 313 inclui um dispositivo de armazenamento primeiro a entrar primeira a sair (FIFO) 319, essencialmente para armazenar os dados recebidos a partir do dominio de origem 311. Outra vez, o dispositivo de armazenamento FIFO pode ser implementado em qualquer uma de uma ampla variedade de arquiteturas fisicas, tais como registradores ou memórias. Para fins de discussão, é conveniente considerar o FIFO 319 como uma série ou pilha de registradores através dos quais se deslocam os dados recebidos. Um registrador ou local é preenchido quando um novo batimento de dados é carregado ou gravado no dispositivo 319, e um registrador ou local é liberado quando um batimento de dados é descarregado ou lido a partir do dispositivo 319 para o depósito 317.
Pelo lado da origem ou envio 311, a origem de dados 315 fornece um batimento de dados, nesse exemplo 128 bits de dados, a um registrador 321, algumas vezes referido como registrador de dados de leitura. No exemplo, o registrador 321 é designado como registrador de dados de leitura (ReadData). 0 registrador ReadData 321 mantém os 12 8 bits de dados e apresenta os bits de dados nas linhas para transferência dos dados através do limite D-D para a entrada do dispositivo de armazenamento FIFO 319. Embora não seja mostrada no desenho, lógica adicional pode existir após o registrador de dados de leitura e antes do FIFO.Enquanto o registrador 321 mantenha o novo batimento de dados, os dados estão disponíveis nas linhas para a entrada do dispositivo de armazenamento FIFO 319. Contudo, quando o novo batimento de dados é primeiramente carregado no registrador 321, existe algum retardo de propagação antes do aparecimento dos dados na entrada do dispositivo de armazenamento FIFO 319 no domínio de depósito 313.
Um controle FIFO 323 controla o fluxo de dados para e através do registrador ReadData 321. 0 controlador FIFO 323 é uma máquina de estado finito, similar ao controle 23 na Figura 1, embora a lógica da máquina de estado de controle 323 seja ligeiramente diferente, como se tornará evidente a partir da discussão abaixo. Quando a fonte 315 tiver novos dados para enviar, ela aplica o (V) indicador no registrador 331, e o controle FIFO 323 faz com que o registrador ReadData 321 apresente os novos dados se houver espaço disponível no dispositivo de armazenamento FIFO 319 para o último batimento de dados, como indicado por um contador de uso de registrador 325 no domínio de origem 321. 0 valor inicial do contador 325, e desse modo a faixa permissível de valores de contagem, corresponde ao número de locais no FIFO 319, quer dizer, a profundidade do FIFO. 0 controle 323 pode determinar se existe espaço no dispositivo. de armazenamento FIFO 319 para receber um novo batimento de dados mediante exame do estado do contador, por exemplo, para ver se a contagem é não-negativa. Embora mostrado como um elemento separado, o contador 32 5 pode ser integrado como parte da máquina de estado servindo como o controle FIFO 323.
Quando o controle FIFO 323 faz com que o registrador ReadData 321 apresente os novos dados para introdução no dispositivo de armazenamento FIFO 319, o controle FIFO 323 outra vez precisa sinalizar o domínio dedepósito 313. Contudo, nesse caso, o controle 323 fornece o sinal ReadDataReady para o registrador pingue-pongue 326, no dominio de origem 311. O registrador pingue-pongue 326 é essencialmente um registrador de 2 bits, por exemplo, implementado utilizando dois ou mais flip-flops. 0 registrador 326 é controlado para ter três estados válidos como a seguir. O estado 0,0 indica que não existem ainda dados válidos prontos. O estado 0,1 é o primeiro de dois estados possivelmente válidos indicando que existem dados prontos para a transferência para o FIFO 319. O estado 1,0 é o segundo dos dois estados possivelmente válidos indicando que existem dados prontos para a transferência para o FIFO 32 9. Conforme discutido abaixo, os estados de dados prontos são indicados em seqüência pelas transições entre os estados 0,1 e 1,0. Digno de nota, o controle 323 e o registrador 32 6 são configurados de modo a não produzir um estado 1,1, uma vez que aquele estado não é um estado de sinalização válido nesse protocolo.
Quando os dados se tornam disponíveis para transferência, o controle FIFO 323 no dominio de origem 311 prove um sinal de pulso ReadDataReady para acionar os estados do registrador pingue-pongue 32 6. 0 controle FIFO 323 também fornece o sinal de pulso ReadDataReady para entrada de decremento (-) do contador de utilização de espaço FIFO 325. Quando nenhum dado está disponível ou pronto para envio, e o contador indica que não havia espaço suficiente no FIFO para os últimos dados enviados, o controle FIFO 32 3 libera o registrador pingue-pongue 32 6 (para o estado 0,0). Suponha agora que um batimento de dados se tornou disponível no presente ciclo, e que mais dados se tornaram disponíveis nos ciclos posteriores. Se nenhum dado estava disponível no ciclo anterior, e havia espaço suficiente no FIFO para a transferência anterior, oregistrador 326 estava no estado 0,0. Então, o primeiro pulso do sinal ReadDataReady faz com que o registrador 326 mude para o estado de dados prontos 0,1, o segundo pulso do sinal ReadDataReady faz com que o registrador 326 mude para o estado de dados prontos 1,0, o terceiro pulso do sinal ReadDataReady faz com que o registrador 326 mude de volta para o estado de dados pronto 0,1 e assim por diante. Desse modo, pulsos sucessivos do sinal ReadDataReady fazem com que o registrador 326 alterne ou "pingue-pongue" entre os dois estados de dados prontos, válidos até que o controle FIFO 323 libere o registrador 326 no momento quando a origem 315 não tem novos dados disponíveis para a transferência e todos os dados anteriores foram capturados.
O registrador 326 mantém cada estado até receber um novo sinal de pulso ou um comando de liberar a partir do controle FIFO 323. Como tal, cada estado aparecerá nas linhas de saida de 2 bits do registrador 32 6 continuamente, enquanto o controle FIFO 323 não mudar o estado do registrador 32 6. As linhas de saida do registrador 32 6 fornecem os dois bits de informação de estado de dados válidos através do limite D-D para um multiplexador (MUX) 327 no dominio de depósito 313. O MUX 327 fornece os dados de estado a um controle FIFO 32 9 no dominio de depósito 313, e a operação do MUX é controlada pelo controle FIFO 329. Sob controle a partir do controle FIFO de dominio de depósito 329, o UX 327 apresenta um 1 em sua saida, cada vez que uma transição aparecer em sua entrada, até que o FIFO capture os dados; quer dizer, ele apresenta um 1 cada vez que o dominio de origem 311 indicar que existe um novo batimento de dados, ou existem ainda para serem capturados os dados antigos, prontos para envio para o dispositivo de armazenamento FIFO 19. Se o MUX recebe um estado 0,0 em suas entradas (nenhum dado válido pronto para envio), elesempre emite um 0.
No domínio de depósito 313, o controle FIFO 329 é outra máquina de estado finito. A máquina de estado é similar ao controle 2 9, embora a lógica da máquina de estado seja ligeiramente diferente, como será evidente a partir da discussão abaixo. 0 controle FIFO 329, por exemplo, prove sinais de "gravar" e "ler" para o dispositivo de armazenamento FIFO 319 para controlar a entrada (gravação) e saida (leitura) de dados para e a partir do dispositivo de armazenamento FIFO 319. Conforme observado, o MUX 327 prove um sinal 1 para o controlador FIFO 329 em resposta a cada novo estado pingue-pongue a partir do registrador 326 no controle de dominio de origem 323, indicando que um novo batimento de dados está disponível para transferência. Se o espaço estiver disponível no dispositivo de armazenamento FIFO 319 para receber os dados prontos, o controle 32 9 gera o sinal de gravação, fazendo com que o dispositivo de armazenamento FIFO 319 aceite entrada dos dados a partir do registrador ReadData 321 no dominio de origem 311.
Uma forma alternativa da sinalização de pingue-pongue pode ser implementada com um sinal de bit único. Em tal caso, a alternância dos bits indica o fornecimento de novos dados. Esse esquema elimina o estado 0,0, substituindo-o com uma ausência de transição. A alternância pode ser transformada em um pulso mediante substituição do MUX da Figura 3 por uma porta OU-exclusiva, A saida da porta OU-exclusiva seria verdadeira para cada ciclo em que existem dados a serem capturados pelo FIFO; quer sejam dados novos ou dados antigos que ainda não foram capturados.
Como no exemplo anterior, o batimento servindo como o sinal ReadDataReady decrementa o contador 325,indicando que um local de registro a menos está disponível no dispositivo de armazenamento FIFO 319. A esse respeito, o contador 325 é decrementado em resposta ao pulso pronto gerado no mesmo domínio 311, sem qualquer retardo ou latência para transferência de um sinal entre os dois domínios 311 e 313. 0 sinal de leitura a partir do controle FIFO 329 pelo lado do depósito instrui o dispositivo de armazenamento FIFO 319 a emitir os dados a partir de um de seus locais de registrador para o depósito 317 e liberar aquele local no dispositivo 319. Portanto, o pulso do sinal de leitura é fornecido a partir do domínio de depósito 313 através do limite D-D, para incrementar o contador 325.
Haverá certa latência entre a emissão do sinal de leitura pelo controle 329 e o surgimento do sinal correspondente como a indicação de entrada livre de FIFO no contador 325 no dominio de origem 311. A latência de sinalização pode ser devido ao tempo exigido para que a sinalização atravesse o chip. Contudo, pode haver conjunto de circuito de estado adicional, representado genericamente pelo elemento de retardo/temporização 328 no desenho, entre o sinal de leitura e a entrada livre do FIFO. Embora mostrado no dominio de depósito 313, o conjunto de circuitos 328 pode estar fisicamente em qualquer um ou em ambos os domínios. 0 conjunto de circuitos adicional, tipicamente um ou mais flip-flops, garante niveis adequados de sinal e alinhamento de temporização através do limite D entre os domínios. Contudo, o conjunto de circuitos adicional 328 acrescentaria um ou mais ciclos de retardo à latência entre a asseveração do sinal de leitura pelo controle 329 e o surgimento do sinal correspondente como a indicação de entrada livre de FIFO no contador 325. Embora não seja mostrado por conveniência, aqueles versados na técnica reconhecerão que se tal conjunto de circuitosadicional for provido, elementos similares de retardo/temporização seriam providos nas outras linhas entre os dois domínios, tal como a linha ReadData e a linha ReadDataReady.
0 contador 325 fornece a contagem de espaço livre do FIFO ao controle de FIFO 323 no domínio de origem 311 para uso em sua determinação para transmitir novos dados através do limite D-D. Mediante ação de decrementar a contagem cada vez que os dados se tornarem disponíveis para o FIFO 319 e incrementar a contagem cada vez que um local for liberado (quando os dados são lidos a partir do FIFO 319) , o valor do contador 25 monitora a quantidade de espaço (número de locais de registrador) disponível ou livre no dispositivo de armazenamento FIFO 319. Contudo, devido ao contador 325 no dominio de origem 311, o decremento de certo modo precede o recebimento da informação de estado a partir do registrador 32 6 e resposta a ela no dominio de depósito 313. Existe certo retardo ou latência na transferência de 2 bits de informação de estado através do limite D-D para o MUX 327. Inversamente, o incremento do contador 325 no dominio de origem 311 de certo modo atrasa a leitura dos dados a partir do dispositivo de armazenamento FIFO 319 no dominio de depósito 313, devido ao retardo ou latência na transferência do sinal de leitura através do limite D-D.
0 controle FIFO 323 também é responsivo a um indicador de validade de dados (V) em um registrado de um bit 331 aplicado pela origem de dados 315, quando a origem inicialmente tem dados disponíveis para transferência para o depósito 317. Dito de outra forma, a origem 315 aplica o sinalizador V no registrador 331 para informar o controle FIFO 323 de que existem novos dados válidos disponíveis para carregamento no registrador ReadData 321. 0 controleFIFO 323 prove um sinal de relógio (habilitação) para o registrador de um bit servindo como o indicador de validade de dados (V) 31. Quando os dados tiverem sido transferidos de forma bem-sucedida para o FIFO 319 no dominio de depósito, o controle FIFO 323 prove um sinal de relógio (habilitação para carregar o registrador 331 e desse o estado do indicador de validade (V) . Em operação, o bit válido de origem é enviado a partir do registrador 331 para o controle FIFO de origem 323, para informar a esse controle FIFO 323 que os dados estão prontos para serem enviados. 0 bit é liberado a partir do registrador 331 quando os dados são enviados, a menos que novos dados se desloquem simultaneamente a partir da origem 315. Dessa maneira, o controle FIFO 323 controla o indicador V no registrador 331 para permitir que a origem 315 aplique o indicador (e introduza um novo batimento de dados para o registrador ReadData 321) quando o contador 325 indicar que existe espaço disponível para o novo batimento de dados.
As Figuras, 4(A) e 4 (B), são diagramas de temporização de exemplos simples de operações do sistema da Figura 3. Geralmente, esses exemplos são similares àqueles discutidos acima em relação às Figuras 2(A) e 2(C), contudo, aqui, a sinalização de dados prontos de leitura a partir do dominio de origem assume a forma de sinais "Pingue" e "Pongue" como mostrado na quarta e quinta linha das Figuras 4 (A) e 4 (B) . Como mostrado nos desenhos, cada transição de um dos dois estados Pingue-Pongue válidos (para 0, 1 ou para 1, 0) é sinalizado que os dados estão prontos no registrador.
Nesses exemplos, a contagem outra vez representa o número de pulsações de dados que podem ser enviados, e a contagem começa com uma posição a mais do que o número de posições FIFO (vide quinta linha em cada uma dessasfiguras). Esse batimento adicional representa os dados que podem ser mantidos "continuamente" no registrador ReadData no dominio de origem. Uma contagem de zero indica que os dados de origem precisam ser mantidos a partir do ciclo anterior. Conseqüentemente, nos exemplos de protocolo pingue-pongue, uma mudança de estado deve ocorrer em tal ciclo.
Como observado acima, o contador 325 está localizado com a origem 315 no dominio 311, mais propriamente do que com o próprio FIFO 319 no dominio 313. Como mostrado pela discussão acima e Figura 3, o segundo exemplo similarmente se baseia no contador 32 5 no dominio de origem para monitorar a utilização de espaço no dispositivo de armazenamento FIFO 319. Muito similar ao primeiro exemplo, o contador efetivamente "consome" a latência de sinalização entre os domínios 311 e 313. Os dados são aplicados por intermédio do registrador 321 imediatamente quando disponíveis e são mantidos nesse lugar disponíveis para o FIFO até que sejam lidos para o FIFO, essencialmente proporcionando um local de armazenamento adicional para a pilha de registradores FIFO. 0 contador 32 5 incorre em penalidade de latência para incrementar, mas está imediatamente disponível para o lado de origem.
0 custo aqui é que o contador 325 pode ser pessimista em que ele poderia algumas vezes dizer que os dados não podem ser enviados quando na realidade existe espaço no dispositivo de armazenamento FIFO 319, porque o sinal de livre ainda não se propagou para o contador 325. Isso pode ser superado mediante dimensionamento da profundidade de FIFO de acordo com a latência de sinal "livre", de modo que os dados podem ser transferidos continuamente. Também é possível comprar um pouco de largura de banda por se poder enviar um último batimento dedados por intermédio do registrador 321, quando a origem de outro modo acredita que o FIFO está cheio, seja mediante modelo apropriado da lógica 323 ou mediante dimensionamento do contador para N+l (onde N é a profundidade de FIFO, por exemplo, o número de locais no FIFO 319) .
Em virtude do contador local e da profundidade do FIFO, a origem 315 pode enviar os dados continuamente. Desse modo, mediante dimensionamento do FIFO 319 adequadamente, as transferências podem ocorrer sem considerar a latência dos sinais; e o processamento é substancialmente "insensível à latência77. Observar que é possível que a latência surja aqui, especificamente, quando o destino não drena o FIFO 319 rapidamente e suficiente, e perde o armazenamento igual à latência. Isso é compensado fazendo-se o FIFO 319 mais profundo para cobrir as taxas de dados tipicas nas quais o FIFO 319 é drenado. Desse modo, em condições tipicas, os dados são transferidos continuamente. A profundidade do FIFO, para obter transferência de dados substancialmente continua entre os domínios seria similar àquela discutida acima em relação ao exemplo da Figura 1.
Além disso, o sistema não tem que ler dados a partir do FIFO 319 exatamente quando ele decrementa o contador 325. Em vez disso, o sinal para decrementar o contador poderia conduzir a leitura de modo a decrementar o contador de certo modo mais cedo, desde que a temporização e a latência possam garantir que o lado de depósito lerá um batimento de dados a partir do dispositivo FIFO 319 e liberará espaço para novos dados, antes do lado de origem poder responder e enviar novos dados.
Essas vantagens do segundo exemplo são substancialmente similares àquelas do primeiro exemplo. Contudo, as técnicas de sinalização de pingue-pongueacrescentam algumas vantagens singulares. Com a abordagem de pingue-pongue, quando um batimento extra de dados é enviado após a origem acreditar que o FIFO está cheio, o sinal permanece asseverado até que o contador 325 seja incrementado e outro batimento seja enviado. Desse modo, não há necessidade de capturar e manter o pulso ReadDataReady no lado do depósito.
Embora o anterior tenha descrito o que é considerado como o melhor modo, e/ou outros exemplos; fica entendido que diversas modificações podem ser feitas no mesmo e que a matéria aqui discutida pode ser implementada de diversas formas e exemplos, e que os ensinamentos podem ser empregados em várias aplicações, apenas algumas das quais foram descritas aqui. Pretende-se por intermédio das reivindicações a seguir reivindicar quaisquer e todas as aplicações, modificações e variações que estej am compreendidas dentro do verdadeiro escopo dos presentes ensinamentos.
Claims (30)
1. Método para transferir dados entre um dominio de origem operando em uma primeira taxa de dados e um domínio de depósito operando em uma segunda taxa de dados, diferente da primeira taxa de dados, por intermédio de um dispositivo de armazenamento primeiro a entrar primeiro a sair (FIFO) no domínio de depósito, o método compreendendo:(a) quando uma origem tiver dados prontos para transferência, carregar os dados prontos em um registrador no domínio de origem, para tornar os dados disponíveis para o domínio de depósito, e prover um sinal de dados prontos;(b) decrementar um valor representando um espaço disponível no dispositivo de armazenamento FIFO, em um contador no domínio de origem, em resposta ao sinal de dados prontos;(c) sinalizar o estado de dados prontos para o domínio de depósito, com base no sinal de dados prontos;(d) no recebimento da sinalização do estado de dados prontos no domínio de depósito, ativar o dispositivo de armazenamento FIFO para carregar os dados disponíveis a partir do registrador no domínio de origem para o dispositivo de armazenamento FIFO;(e) emitir os dados a partir do dispositivo de armazenamento FIFO para um depósito de dados para liberar um espaço no dispositivo de armazenamento FIFO;(f) sinalizar a liberação de espaço no dispositivo de armazenamento FIFO para o contador no domínio de origem;(g) incrementar o valor representando espaço disponível no dispositivo de armazenamento FIFO, no contador no domínio de origem, em resposta ao recebimento no contador da sinalização de liberação do espaço no dispositivo de armazenamento FIFO; e(h) controlar uma etapa subseqüente de carregamento de dados prontos no registrador no domínio de origem para tornar os dados disponíveis para o domínio de depósito e prover um sinal de dados prontos, em resposta ao valor representando espaço disponível no dispositivo de armazenamento FIFO, no contador no domínio de origem.
2. Método, de acordo com a reivindicação 1, compreendendo ainda:repetidamente realizar ciclos através das etapas (a) a (d) ; erepetidamente realizar ciclos através das etapas (e) a (g) ; econtrolar cada ciclo de carregamento de dados prontos no registrador no domínio de origem de acordo com um estado atual do valor representando espaço disponível no dispositivo de armazenamento FIFO, no contador no domínio de origem.
3. Método, de acordo com a reivindicação 2, em que a repetição de ciclos e controle durante cada ciclo de carregamento de dados prontos permite a transferência substancialmente contínua de dados entre o domínio de origem e o domínio de depósito por intermédio do dispositivo de armazenamento FIFO no domínio de depósito.
4. Método, de acordo com a reivindicação 1, emque:o sinal de dados prontos compreende um único ciclo de um sinal de pulso; ea etapa (C) de sinalização de estado de dados prontos para o domínio de depósito, com base no sinal de dados prontos, compreende a transmissão do único ciclo de um sinal de pulso para um registrador no domínio de depósito.
5. Método, de acordo com a reivindicação 4,compreendendo ainda prover um sinal de pronto continuo a partir do registro no dominio de depósito para controlar o FIFO, até conclusão do carregamento dos dados disponíveis a partir do registrador no dominio de origem para o dispositivo de armazenamento FIFO.
6. Método, de acordo com a reivindicação 4, compreendendo ainda:repetidamente realizar ciclos através das etapas (a) a (d) ; erepetidamente realizar ciclos através das etapas (e) a (g); econtrolar cada ciclo de carregamento de dados prontos no registrador no dominio de origem de acordo com um estado atual do valor representando espaço disponível no dispositivo de armazenamento FIFO, no contador no dominio de origem.
7. Método, de acordo com a reivindicação 6, em que a repetição de ciclos e controle durante cada ciclo de carregamento de dados prontos permite a transferência substancialmente continua de dados entre o dominio de origem e o dominio de depósito por intermédio do dispositivo de armazenamento FIFO no dominio de depósito.
8. Método, de acordo com a reivindicação 1, em que a etapa (C) de sinalizar estado de dados prontos para o dominio de depósito, com base no sinal de dados prontos, compreende:mudar uma sinalização de estado de registro a partir de um estado válido anterior de dados prontos para um estado válido alternativo de dados prontos; esinalizar o estado válido alternativo de dados prontos a partir do dominio de origem para o dominio de depósito.
9. Método, de acordo com a reivindicação 8,compreendendo ainda:repetidamente realizar ciclos através das etapas (a) a (g) , em que a realização de ciclos repetidos através da etapa (c) causa a sinalização alternada dos estados válidos de dados para o dominio de depósito; econtrolar cada ciclo de carregamento de dados prontos no registrador no dominio de origem de acordo com um estado atual do valor representando espaço disponível no dispositivo de armazenamento FIFO, no contador no dominio de origem.
10. Método, de acordo com a reivindicação 9, em que a repetição de ciclos e controle durante cada ciclo de carregamento de dados prontos permite a transferência substancialmente continua de dados entre o dominio de origem e o dominio de depósito por intermédio do dispositivo de armazenamento FIFO no dominio de depósito.
11. Método para transferir dados entre um dominio de origem operando em uma primeira taxa de dados e um dominio de depósito operando em uma segunda taxa de dados, diferente da primeira taxa de dados, o método compreendendo:(a) durante uma pluralidade de ciclos,substancialmente de forma continua:(1) carregar os dados a partir de uma origem para um registrador no dominio de origem;(2) sinalizar dados prontos para o dominio de depósito;(3) carregar os dados a partir do registrador no dominio de origem para um dispositivo de armazenamento primeiro a entrar primeiro a sair (FIFO) no dominio de depósito;(4) emitir os dados a partir do dispositivo de armazenamento FIFO para um dispositivo dedepósito para liberar espaço para dados no dispositivo de armazenamento FIFO; e(5) sinalizar a liberação de espaço no dispositivo de armazenamento FIFO para o dominio de origem;(b) em resposta a cada carregamento de dados no registrador no dominio de origem, modificar um valor de contagem no dominio de origem em uma primeira maneira;(c) em resposta a cada sinalização de liberação de espaço no dispositivo de armazenamento FIFO para o dominio de origem, modificar o valor de contagem no dominio de origem de uma segunda maneira oposta à primeira maneira; e(d) em cada ciclo da etapa (a) , controlar o carregamento de dados a partir da origem para o registrador no dominio de origem com base em um estado atual do valor de contagem em relação à profundidade do dispositivo de armazenamento FIFO.
12. Método, de acordo com a reivindicação 11, emque:cada sinalização de dados prontos para o dominio de depósito compreende transmitir um único ciclo de um sinal de pulso de dados prontos a partir do dominio de origem para o dominio de depósito; ecada etapa de modificar o valor de contagem no dominio de origem em uma primeira maneira é responsivo à originação de um único ciclo do sinal de pulso de dados prontos no dominio de origem.
13. Método, de acordo com a reivindicação 11, em que cada sinalização de dados prontos para o dominio de depósito compreende:mudar entre dois estados válidos alternativos dedados; esinalizar um estado atual dos dois estadosválidos alternativos de dados a partir do dominio de origem para o dominio de depósito.
14. Método, de acordo com a reivindicação 11, emque:uma faixa permissivel do valor de contagem corresponde à profundidade do dispositivo de armazenamento FIFO,a modificação da contagem no dominio de origem na primeira maneira compreende decrementar o valor de contagem; ea modificação da contagem no dominio de origem na segunda maneira compreende incrementar o valor de contagem.
15. Método, de acordo com a reivindicação 11, em que a modificação do valor de contagem no dominio de origem na segunda maneira está sujeita às latências envolvidas na comunicação de cada sinalização de liberação de espaço no dispositivo de armazenamento FIFO a partir do dominio de depósito para o dominio de origem.
16. Método para transferir dados entre um dominio de origem operando em uma primeira taxa de dados e um dominio de depósito operando em uma segunda taxa de dados, diferente da primeira taxa de dados, o método compreendendo:(a) durante cada uma de uma pluralidade derepetições:(1) carregar os dados a partir de uma origem para um registrador no dominio de origem, e tornar os dados disponíveis para o dominio de depósito;(2) quando o espaço estiver disponível no dispositivo de armazenamento primeiro a entrar primeiro a sair (FIFO) no dominio de depósito, carregar os dados a partir do registrador nodomínio de origem para o dispositivo de armazenamento (FIFO); e(3) emitir os dados a partir do dispositivo de armazenamento FIFO para um dispositivo de depósito para liberar espaço para dados no dispositivo de armazenamento FIFO;(b) manter uma contagem no dominio de origem representativa de espaço disponível no dispositivo de armazenamento FIFO, responsivo a cada carregamento de dados no registrador no dominio de origem e responsivo à sinalização a partir do dominio de depósito de cada liberação de espaço no dispositivo de armazenamento FIFO; e(c) em cada repetição da etapa (a), controlar o carregamento de dados a partir da origem para o registrador no domínio de origem com base em um estado atual da contagem;em que o controle inclui, no caso da contagem indicar que o dispositivo de armazenamento FIFO está cheio, permitir o carregamento de um próximo batimento de dados disponível para o registrador no domínio de origem e manter aquele batimento de dados de modo que batimento de dados é tornada continuamente disponível ao dispositivo de armazenamento FIFO para carregamento no dispositivo de armazenamento FIFO quando o espaço se tornar disponível.
17. Método, de acordo com a reivindicação 16, compreendendo ainda sinalizar dados prontos para o domínio de depósito em cada carregamento de dados para o registrador no domínio de origem.
18. Método, de acordo com a reivindicação 17, em que cada sinalização de dados prontos para o domínio de depósito compreende transmitir um único ciclo de um sinal de pulso de dados prontos a partir do domínio de origem para domínio de depósito.
19. Método, de acordo com a reivindicação 17, em que cada sinalização de dados prontos para o domínio de depósito compreende sinalizar uma transição para um de dois estados de dados válidos alternativos, a partir do domínio de origem para o domínio de depósito.
20. Equipamento para transmitir dados entre um domínio de origem operando em uma primeira taxa de dados e um domínio de depósito operando em uma segunda taxa de dados, diferente da primeira taxa de dados, o equipamento compreendendo:elementos de domínio de origem, incluindo:(a) um registrador de dados de leitura, para receber dados a partir de uma origem e apresentar os dados recebidos para transferência para o domínio de depósito;(b) um controle para controlar o carregamento de dados a partir da origem para o registrador de dados de leitura e causar uma transmissão de sinalização do carregamento de dados para o domínio de depósito; e(c) um contador, em que o controle é responsivo a um estado de um valor no contador;elementos de dominio de depósito, incluindo:(1) um dispositivo de armazenamento primeiro a entrar primeiro a sair (FIFO) em comunicação com o registrador de dados de leitura;(2) um controle, para controlar aceitação dos dados a partir do registrador de dados de leitura para o dispositivo de armazenamento FIFO em resposta ao recebimentoda sinalização do carregamento de dados, para controlar a liberação de espaço no dispositivo de armazenamento FIFO quando os dados são emitidos a partir do dispositivo de armazenamento FIFO para um depósito, e para causar uma transmissão de sinalização da liberação de espaço para o contador no dominio de origem; em que:o contador modifica o valor em uma primeira maneira em resposta a cada carregamento dos dados a partir da origem para o registrador de dados de leitura, eo contador modifica o valor de uma segunda maneira oposta à primeira maneira, no recebimento de cada sinalização de liberação de espaço no dispositivo de armazenamento FIFO, a partir do controle no dominio de depósito.
21. Equipamento, de acordo com a reivindicação 20, compreendendo ainda um registrador de estado de pronto no dominio de depósito, para receber um sinal de pulso a partir do controle no dominio de origem como a sinalização de carregamento de dados, cada ciclo do sinal de pulso representando um carregamento de novos dados a partir da origem para o registrador de dados de leitura, e para prover uma indicação de dados prontos para o controle no dominio de depósito em resposta a cada ciclo recebido do sinal de pulso.
22. Equipamento, de acordo com a reivindicação 20, compreendendo ainda:um registrador de sinalização no dominio de origem alternando entre dois estados válidos em resposta a cada carregamento de dados a partir da origem para o registrador de dados de leitura; eum multiplexador no dominio de depósito, responsivo aos recebimentos alternados dos estados válidos a partir do registrador de sinalização no domínio de origem para prover indicações de dados prontos para o controle no domínio de depósito.
23. Aparelho, de acordo com a reivindicação 20, em que o dispositivo de armazenamento FIFO é suficientemente profundo para permitir transferência substancialmente contínua de dados a partir do domínio de origem para o domínio de depósito através do registrador de dados de leitura e do dispositivo de armazenamento FIFO.
24. Equipamento para transmitir dados entre um domínio de origem operando em uma primeira taxa de dados e um domínio de depósito operando em uma segunda taxa de dados, diferente da primeira taxa de dados, o equipamento compreendendo:elementos de domínio de origem, incluindo:(a) um registrador de dados de leitura, para receber dados a partir de uma origem e apresentar os dados recebidos para transferência para o domínio de depósito;(b) um controle para controlar o carregamento de dados a partir da origem para o registrador de dados de leitura e causar uma transmissão de sinalização do carregamento de dados para o domínio de depósito; e(c) um contador, em que o controle é responsivo a um estado de um valor no contador;elementos de domínio de depósito, incluindo:(1) um dispositivo de armazenamento primeiro a entrar primeiro a sair (FIFO) em comunicação com o registrador de dados de leitura;(2) um controle, para controlar aceitação dos dados a partir do registrador de dados de leitura para o dispositivo de armazenamento FIFO em resposta aorecebimento da sinalização do carregamento de dados, e para controlar a liberação de espaço no dispositivo de armazenamento FIFO quando os dados são emitidos a partir do dispositivo de armazenamento FIFO para um depósito; em que:o contador é responsivo a cada carregamento de dados no registrador no domínio de origem e responsivo à sinalização a partir do dominio de depósito de cada liberação de espaço no dispositivo de armazenamento FIFO para manter o valor de contagem como uma indicação de espaço disponível no dispositivo de armazenamento FIFO; eresponsivo a uma indicação de que o dispositivo de armazenamento FIFO está cheio por intermédio do valor de contagem no contador, o controlador permite o carregamento de um próximo batimento disponível de dados para o registrador de dados de leitura para manter aquele batimento de dados de modo que o batimento de dados é apresentado continuamente ao dispositivo de armazenamento FIFO para carregamento no dispositivo de armazenamento FIFO quando espaço se torna disponível.
25. Equipamento, de acordo com a reivindicação 24, compreendendo ainda um registrador de estado de pronto no domínio de depósito, para receber um sinal de pulso a partir do controle no domínio de origem como a sinalização de carregamento de dados, cada ciclo do sinal de pulso representando um carregamento de dados novos a partir da origem para o registrador de dados de leitura, e para prover uma indicação de dados prontos para o controle no domínio de depósito em reposta a cada ciclo recebido do sinal de pulso.
26. Equipamento, de acordo com a reivindicação 24, compreendendo ainda:um registrador de sinalização no domínio deorigem tendo dois estados de dados válidos, o registrador de sinalização mudando para um dos dois estados de dados válidos em resposta a cada carregamento de dados a partir da origem para o registrador de dados de leitura; eum multiplexador, no dominio de depósito, responsivo aos recebimentos dos estados de dados válidos a partir do registrador de sinalização no dominio de origem para prover as indicações de dados prontos para o controle no dominio de depósito.
27. Equipamento para transferir dados entre um dominio de origem operando em uma primeira taxa de dados e um dominio de depósito operando em uma segunda taxa de dados, diferente da primeira taxa de dados, o equipamento compreendendo:um registrador de dados de leitura no dominio de origem, para receber os dados a partir de uma origem e apresentar os dados recebidos para transferência ao dominio de depósito;um dispositivo de armazenamento primeiro a entrar primeiro a sair (FIFO) , no dominio de depósito, para receber os dados a partir do registrador de dados de leitura para transferência para um depósito;um contador no dominio de origem, responsivo ao carregamento de dados no registrador de dados de leitura e descarregamento de dados a partir do dispositivo de armazenamento FIFO, para manter um valor de contagem representativo do espaço disponível no dispositivo de armazenamento FIFO;um controle no dominio de origem, para controlar o carregamento de dados no registrador de dados de leitura para transferência para o dominio de depósito, responsivo a um estado do valor de contagem em relação à profundidade do dispositivo de armazenamento FIFO; emeio para sinalizar para o domínio de depósito que os dados no registrador de dados de leitura estão prontos para a transferência para o dispositivo de armazenamento FIFO, para permitir controle do recebimento de dados no dispositivo de armazenamento FIFO.
28. Equipamento, de acordo com a reivindicação 27, em que o arranjo do contador e do meio para sinalização tornam o equipamento substancialmente insensível à latência de sinalização permutada entre o domínio de origem e o domínio de depósito.
29. Equipamento, de acordo com a reivindicação 27, em que a profundidade do dispositivo de armazenamento FIFO e o arran j o do contador e o meio para sinalização permitem transferência substancialmente contínua de dados entre o domínio de origem e o domínio de depósito por intermédio do registrador de dados de leitura e do dispositivo de armazenamento FIFO.
30. Equipamento, de acordo com a reivindicação 27, em que se o estado do valor de contagem indicar que o dispositivo de armazenamento FIFO está cheio, o controle no domínio de origem controla o carregamento de dados no registrador de dados . de leitura para permitir o carregamento de um próximo batimento de dados disponível no registrador de dados de leitura para reter esse batimento de dados de modo que o batimento de dados é apresentado continuamente ao dispositivo de armazenamento FIFO para carregamento no dispositivo de armazenamento FIFO quando espaço se tornar disponível.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/128,135 US7454538B2 (en) | 2005-05-11 | 2005-05-11 | Latency insensitive FIFO signaling protocol |
US11/128,135 | 2005-05-11 | ||
PCT/US2006/017899 WO2006124410A2 (en) | 2005-05-11 | 2006-05-08 | Latency insensitive fifo signaling protocol |
Publications (1)
Publication Number | Publication Date |
---|---|
BRPI0608975A2 true BRPI0608975A2 (pt) | 2010-02-17 |
Family
ID=37420511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BRPI0608975-5A BRPI0608975A2 (pt) | 2005-05-11 | 2006-05-08 | protocolo de sinalização fifo insensìvel à latência |
Country Status (8)
Country | Link |
---|---|
US (2) | US7454538B2 (pt) |
EP (1) | EP1880299A4 (pt) |
JP (2) | JP4681046B2 (pt) |
KR (1) | KR100965356B1 (pt) |
CN (1) | CN101213534B (pt) |
BR (1) | BRPI0608975A2 (pt) |
IL (1) | IL187298A0 (pt) |
WO (1) | WO2006124410A2 (pt) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7613909B2 (en) * | 2007-04-17 | 2009-11-03 | Xmos Limited | Resuming thread to service ready port transferring data externally at different clock rate than internal circuitry of a processor |
JP5532724B2 (ja) * | 2009-07-30 | 2014-06-25 | 株式会社リコー | インタフェース回路及びそれを備えた半導体装置 |
KR20110061189A (ko) * | 2009-12-01 | 2011-06-09 | 삼성전자주식회사 | 데이터 프로세싱 시스템에서의 비동기 통합 업사이징 회로 |
TWI466016B (zh) * | 2011-07-01 | 2014-12-21 | Realtek Semiconductor Corp | 先入先出裝置及其實現方法 |
CN104038306B (zh) * | 2013-03-05 | 2017-09-29 | 上海航天测控通信研究所 | 低延时实时传输多码率位流数据的方法及其异步fifo |
US9880961B2 (en) * | 2013-11-27 | 2018-01-30 | Arm Limited | Asynchronous bridge circuitry and a method of transferring data using asynchronous bridge circuitry |
US10360169B2 (en) | 2015-03-30 | 2019-07-23 | Sony Semiconductor Solutions Corporation | Asynchronous interface |
TWI639159B (zh) | 2015-05-28 | 2018-10-21 | 東芝記憶體股份有限公司 | Semiconductor device |
CN108280437B (zh) * | 2018-01-30 | 2021-06-15 | 四川新先达测控技术有限公司 | 脉冲信号处理方法、装置及用户终端 |
CN111008002B (zh) * | 2019-12-06 | 2022-04-08 | 苏州盛科通信股份有限公司 | 自动计算并更新fifo深度的装置和方法 |
CN113220607B (zh) * | 2021-05-26 | 2023-05-12 | 浙江赛思电子科技有限公司 | 一种基于fifo的数据处理方法 |
CN114443524B (zh) * | 2022-01-28 | 2024-08-09 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、系统、存储介质及设备 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3213345C2 (de) * | 1982-04-08 | 1984-11-22 | Siemens Ag, 1000 Berlin Und 8000 Muenchen | Datenübertragungseinrichtung zwischen zwei asynchron gesteuerten Datenverarbeitungssystemen |
US4525649A (en) * | 1982-07-12 | 1985-06-25 | Gte Products Corporation | Drive scheme for a plurality of flourescent lamps |
JPS62219390A (ja) * | 1986-03-20 | 1987-09-26 | Fujitsu Ltd | Fifoメモリ |
JPS63308447A (ja) * | 1987-06-10 | 1988-12-15 | Nec Corp | 送信fifoメモリ制御装置 |
US5098139A (en) * | 1988-12-20 | 1992-03-24 | Larsson Leif T | High security lock and latch for sliding doors |
US5513224A (en) | 1993-09-16 | 1996-04-30 | Codex, Corp. | Fill level indicator for self-timed fifo |
US5604866A (en) * | 1993-09-30 | 1997-02-18 | Silicon Graphics, Inc. | Flow control system having a counter in transmitter for decrementing and incrementing based upon transmitting and received message size respectively for indicating free space in receiver |
US5506969A (en) * | 1993-11-29 | 1996-04-09 | Sun Microsystems, Inc. | Method and apparatus for bus bandwidth management |
JP3093583B2 (ja) * | 1994-11-04 | 2000-10-03 | 沖電気工業株式会社 | メモリ制御回路 |
JPH0997164A (ja) * | 1995-10-02 | 1997-04-08 | Oki Electric Ind Co Ltd | 非同期バーストデータ受信回路 |
US6101329A (en) | 1997-02-18 | 2000-08-08 | Lsi Logic Corporation | System for comparing counter blocks and flag registers to determine whether FIFO buffer can send or receive data |
US6098139A (en) | 1998-05-27 | 2000-08-01 | 3Com Corporation | Frequency independent asynchronous clock crossing FIFO |
US6115760A (en) | 1998-08-24 | 2000-09-05 | 3Com Corporation | Intelligent scaleable FIFO buffer circuit for interfacing between digital domains |
US6389489B1 (en) * | 1999-03-17 | 2002-05-14 | Motorola, Inc. | Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size |
US6529570B1 (en) * | 1999-09-30 | 2003-03-04 | Silicon Graphics, Inc. | Data synchronizer for a multiple rate clock source and method thereof |
US6389469B1 (en) * | 2000-03-27 | 2002-05-14 | Targetize Innovative Solutions Ltd. | System and method for customized content delivery |
JP3815948B2 (ja) * | 2000-04-20 | 2006-08-30 | シャープ株式会社 | Fifoメモリ制御回路 |
JP3525867B2 (ja) * | 2000-07-07 | 2004-05-10 | 日本電気株式会社 | 通信装置および通信端末 |
DE60022186T2 (de) * | 2000-08-17 | 2006-06-08 | Texas Instruments Inc., Dallas | Unterhaltung einer entfernten Warteschlange unter Benutzung von zwei Zählern in der Verschiebesteuerung mit Hubs und Ports |
US7729302B2 (en) | 2001-05-15 | 2010-06-01 | The United States Of America As Represented By The Secretary Of The Navy | Adaptive control of multiplexed input buffer channels |
CN1153217C (zh) * | 2001-06-07 | 2004-06-09 | 扬智科技股份有限公司 | 非同步fifo控制器 |
-
2005
- 2005-05-11 US US11/128,135 patent/US7454538B2/en active Active
-
2006
- 2006-05-08 KR KR1020077028401A patent/KR100965356B1/ko active IP Right Grant
- 2006-05-08 JP JP2008511268A patent/JP4681046B2/ja not_active Expired - Fee Related
- 2006-05-08 EP EP06752441A patent/EP1880299A4/en not_active Ceased
- 2006-05-08 BR BRPI0608975-5A patent/BRPI0608975A2/pt not_active IP Right Cessation
- 2006-05-08 WO PCT/US2006/017899 patent/WO2006124410A2/en active Application Filing
- 2006-05-08 CN CN2006800243721A patent/CN101213534B/zh not_active Expired - Fee Related
-
2007
- 2007-11-11 IL IL187298A patent/IL187298A0/en unknown
-
2008
- 2008-07-25 US US12/179,970 patent/US7725625B2/en active Active
-
2010
- 2010-12-09 JP JP2010274455A patent/JP4976537B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7454538B2 (en) | 2008-11-18 |
US20060259669A1 (en) | 2006-11-16 |
US20080281996A1 (en) | 2008-11-13 |
US7725625B2 (en) | 2010-05-25 |
CN101213534B (zh) | 2012-02-15 |
EP1880299A2 (en) | 2008-01-23 |
KR100965356B1 (ko) | 2010-06-23 |
JP4681046B2 (ja) | 2011-05-11 |
KR20080007506A (ko) | 2008-01-21 |
JP2008541623A (ja) | 2008-11-20 |
WO2006124410A2 (en) | 2006-11-23 |
JP2011101390A (ja) | 2011-05-19 |
WO2006124410A3 (en) | 2007-09-20 |
JP4976537B2 (ja) | 2012-07-18 |
CN101213534A (zh) | 2008-07-02 |
IL187298A0 (en) | 2009-02-11 |
EP1880299A4 (en) | 2009-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BRPI0608975A2 (pt) | protocolo de sinalização fifo insensìvel à latência | |
US6055285A (en) | Synchronization circuit for transferring pointer between two asynchronous circuits | |
TWI298888B (en) | Pseudo-synchronization of the transportation of data across asynchronous clock domains | |
KR100289443B1 (ko) | 소스 동기화 준안정성 프리버스 | |
JPH09222988A (ja) | コンピュータシステム及び第1の回路と第2の回路との間でデータを転送するインタフェース回路 | |
US10038450B1 (en) | Circuits for and methods of transmitting data in an integrated circuit | |
US5539739A (en) | Asynchronous interface between parallel processor nodes | |
US7352836B1 (en) | System and method of cross-clock domain rate matching | |
US7180332B2 (en) | Clock synchronization circuit | |
JP2002523857A (ja) | 非同期型論理を用いたfifo | |
US7107393B1 (en) | Systems and method for transferring data asynchronously between clock domains | |
JP2011035495A (ja) | インタフェース回路及びそれを備えた半導体装置 | |
WO2023142444A1 (zh) | 确定性现场总线网络数据转发二分频锁存缓冲电路及应用 | |
US8023343B2 (en) | Systems and methods for issuing address and data signals to a memory array | |
CN112712829B (zh) | 一种跨时钟域的寄存器读写电路及方法 | |
JP2004062630A (ja) | Fifoメモリ及び半導体装置 | |
US6724683B2 (en) | Transferring data between different clock domains | |
US6067629A (en) | Apparatus and method for pseudo-synchronous communication between clocks of different frequencies | |
US9069906B2 (en) | Method for sharing a resource and circuit making use of same | |
JP3475857B2 (ja) | ソースシンクロナス転送方式 | |
JP3562416B2 (ja) | Lsi間データ転送システム及びそれに用いるソースシンクロナスデータ転送方式 | |
Liljeberg et al. | Asynchronous interface for locally clocked modules in ULSI systems | |
EP1188108B1 (en) | Two clock domain pulse to pulse synchronizer | |
JP2009503640A (ja) | 非同期データバッファ | |
KR900007547Y1 (ko) | 시리얼 피포를 이용한 독립동기 방식 구성회로 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B08F | Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette] |
Free format text: REFERENTE A 9A ANUIDADE. |
|
B08K | Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette] |
Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2308 DE 31/03/2015. |