CN1238788C - 可处理变长数据的先进先出寄存器队列装置及控制方法 - Google Patents
可处理变长数据的先进先出寄存器队列装置及控制方法 Download PDFInfo
- Publication number
- CN1238788C CN1238788C CN 200310107835 CN200310107835A CN1238788C CN 1238788 C CN1238788 C CN 1238788C CN 200310107835 CN200310107835 CN 200310107835 CN 200310107835 A CN200310107835 A CN 200310107835A CN 1238788 C CN1238788 C CN 1238788C
- Authority
- CN
- China
- Prior art keywords
- data
- pointer
- read
- queue
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Communication Control (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明为一种可处理变长数据的先进先出寄存器队列装置,包括一个寄存器组,该寄存器组有M个寄存器、一个写操作端口和N个读操作端口;一个地址指针生成部件,产生一个写指针和N个读指针,用来控制寄存器组的读写;一个标识生成部件,产生栈空标识、栈满标识,用于控制地址指针的生成,并产生旁路标识,用于控制旁路操作。本发明读写地址指针的计数单位不同,可一次写入固定字长的数据,同时可按照需要从寄存器队列中读出指定长度的数据;具有多个数据出口,可实现可变长度数据的并行输出;通过在读指针控制下的旁路操作可在一个周期内读出最大可变长度的数据。
Description
技术领域
本发明涉及一种先进先出寄存器队列装置及控制方法,尤其涉及一种可处理变长数据的先进先出寄存器队列装置及控制方法,属于计算机微处理器领域。
背景技术
在微处理器设计中,有时会需要处理变长数据,即需要处理的数据长度与操作发生的时间有关,具体长度由指令来决定。此时传统的取数方式将会面临困难,如果每周期按照最小的长度取数,则在取较长数据时花费的时间代价太大;如果每周期不按最小的长度取数,则难以保证取数的正确性并且会引起跨区问题,即数据正好在存储区不同的行,必须在不同周期才能取出。以JAVA语言处理芯片为例说明如下。
Java语言处理芯片将在信息家电中扮演重要角色。由于Java语言的跨平台和网络特性,绝大多数信息家电厂商正努力增强对Java的支持,例如Sun公司正致力于与消费电子设备制造商携手合作。通常Java语言的处理都是通过JAVA虚拟机(JVM)转化为不同处理器的机器码,该方案具有跨平台特性,但JVM都由软件实现,处理速度太慢。基于Java技术的新型信息家电产品未来的发展趋势将是直接将Java技术做在芯片上,作为信息家电设备的核心。据VDC预计支持Java的设备到2005年将达到6.1亿部左右。由于Java指令的可变长特性,在设计Java专用处理芯片或者协处理器时会遇到前文所述的变长数据问题,此时的变长数据即为Java的BYTE指令。
以JVM的一个子集——JAVA智能卡虚拟机(JCVM)规范JCVM2115为例,其指令集合中的187条指令都是以BYTE为单位进行组织的,除了4条长度可随程序变化的特殊指令外,其余指令长度均为1至5个BYTE,长度确定但不相等。在进行JCVM专用处理器或协处理器设计时,如果以BYTE为单位取指令,取指速度将会很慢,例如一个4个BYTE的指令需要4个周期取出;如果以字(4byte)为单位取指,又难以避免指令跨区问题,即使两个BYTE的指令,如果分布在不同的字中,也必须用两个周期才能取出指令。此时,可以通过数据缓冲部件来解决这个问题。
通常数据缓冲部件是用先进先出寄存器队列(FIFO)的结构来实现的。FIFO的设计方式有两类:一类是数据移动型,一类是指针移动型。数据传递型的FIFO,数据的入口固定,只需要一个队列头指针。写数时,数据从指定入口写入,同时数据整体移动,队列头指针ph加1;读数时,队列头指针ph指向的数据读出,队列头指针ph减一。图1为数据移动型FIFO,数据入口固定,由队列头指针ph控制FIFO的读操作。当进行数据写操作时,写入数据fifo_in从固定入口写入,同时所有数据向下一个存储单元移动,队列头指针ph加1;当进行数据读操作时,队列头指针ph指向的数据被读出,队列头指针ph减一,指向下一个将要被读出的数据单元;FIFO的空满标识通过队列头指针ph和界值的比较获得。
指针移动型队列,数据的写入和读出是由两个不同的指针来实现的,写数由队列尾指针控制,读数由队列头指针控制;写数时,队列尾指针pt加1,数据写入新的寄存器;读数时,队列头指针ph减一;寄存器队列构成一个环状的存储体,队列的溢出(空或满)标识通过比较两个指针来获得。图2为指针移动型FIFO,数据入口不固定,分别由队列头指针ph和队列尾指针pt来控制FIFO的读操作和写操作。当进行数据写操作时,写入数据fifo_in从队列尾指针pt指向的存储单元写入,队列尾指针pt加1,指向下一个写操作单元;当进行数据读操作时,队列头指针ph指向的存储单元的数据读出,队列头指针ph减一,指向下一个将要被读出的数据单元。存储单元被组织成一个环状结构,FIFO的空满标识通过队列头指针ph和队列尾指针pt的比较获得。
对于上述第一种方式,每次队列操作,所有的寄存器都要翻转,不利于降低功耗,而且不能处理变长数据。上述第二种方式消除了寄存器频繁翻转的问题,但也不能处理变长数据。
因此,现有技术中存在着对能自动识别和操作不同字长数据的FIFO的需要。
发明内容
本发明的主要目的是提出一种可处理变长数据的先进先出寄存器队列装置,读写地址指针采用不同的计数单位,并采用多个数据出口并行输出,写入固定字长的数据,同时按照需要读出写入数据中某一部分的数据,以实现可变长度数据的并行输出。
本发明的又一目的是提出一种可处理变长数据的先进先出寄存器队列装置的控制方法,通过对读写指针的控制,并结合旁路操作,实现在一个周期内准确读出可变长度的数据输出。
本发明提出的一种可处理变长数据的先进先出寄存器队列装置,包括:
一个寄存器组,包括M个2a位寄存器,a为自然数;一个写操作端口,写操作的数据宽度为2a位;N个读操作端口,每个读端口的数据操作宽度均为2b位,b为自然数且b<a;
一个地址指针生成部件,产生一个写指针和N个读指针,输出到寄存器组部件,用来控制寄存器组的读写;
一个标识生成部件,包括一个以2b位为单位记录有效寄存器个数的工作计数器(WORKREG),工作计数器产生栈空标识、栈满标识,其中,栈空标识、栈满标识输出到指针生成部件,用于控制地址指针的生成。
所述地址指针生成部件产生的写指针指向下一个即将写入的以2a位为单位的数据单元,计数值为0~M-1,当计数值为M时,写指针清0。
所述写指针为寄存器队列尾指针,写入一个数据写指针加1,指向下一个数据单元。
所述地址指针生成部件产生的N个读指针,并行输出数据,第一读指针指向下一个即将读出的变长数据的第一个以2b位为单位的数据单元,第二至第N个读指针分别指向随后的N-1个以2b位为单位的数据单元,读指针的计数值为0~(M×2a-b-1),当计数值为M×2a-b时,读指针清0。
所述读指针为寄存器队列头指针,读出一个数据后,读指针加读出数据的长度,指向下一个要读出的数据的起始地址。
所述的标识生成部件产生的还包括旁路标识,旁路标识输出到寄存器组部件,用于控制数据旁路操作。
所述旁路操作通过M个二选一的选通器实现,两路数据中一路是寄存器队列中各行的数据,另一路是来自存储器端口的数据,控制信号来自旁路信号和队列头指针高j-b位+1(一定有2i≤M≤2j,i,j是连续的自然数,队列头指针高j-b位的值表示该行数据在寄存器中的行数)。
一种可处理变长数据的先进先出寄存器队列的控制方法,包括:
开始首先判断是否溢出,如果溢出,则栈满标志置1,此时读操作有效,写操作无效,队列尾写指针pt不变,队列头读指针ph加LENGTH,WORKREG减LENGTH,WORKREG为内部计数器记录的有效寄存器个数,LENGTH为输入的当周期需要读出的数据个数,均以2b位为单位,然后结束;
如果不溢出,则继续判断WORKREG<LENGTH是否成立,即判断寄存器中有效数据是否大于要输出的数据个数,如果不成立,则直接读出数据,队列头指针ph加LENGTH,队列尾指针pt加1,WORKREG在加2a-b的同时减LENGTH,然后结束;
如果成立,则进一步判断WORKREG+2a-b<LENGTH是否成立,即判断寄存器中有效数据与输入的数据个数之和是否大于要输出的数据个数,均以2b位为单位,如果成立,则栈空信号置1,此时读操作无效,写操作有效,队列头读指针ph不动,队列尾写指针pt加1,WORKREG加2a-b,然后结束;
如果不成立,则旁路信号置1,执行旁路操作,读出数据,队列头指针ph加LENGTH,队列尾指针pt加1,WORKREG在加2a-b的同时减LENGTH,然后结束。
所述溢出是通过判断WORKREG+2a-b-LENGTH≤M·2a-b是否成立得到的,WORKREG为有效寄存器个数,LENGTH为需要读出的数据个数,均以2b位为单位,若成立则认为溢出,若不成立则认为并未溢出。
所述读操作通过N个K选一的选通器实现并行输出,其中K=M*2a-b,输出数据宽度为2b位,N个选通器的数据来源相同,每个选通器的K个数据来源是由经过旁路选择后的M个2a位数据以2b位为单位按照地址顺序排列而成;
选通器的控制信号分别为,第一个选通器的控制信号为队列头指针,第二到N-1个控制信号依次为队列头指针+1~队列头指针+(N-1)。
本发明的独到优势在于:读写地址指针的计数单位不同,可以一次写入固定字长的数据,同时可以按照需要读出寄存器队列中指定长度的数据;
具有多个数据出口,可以实现可变长度数据的并行输出;
通过在读指针控制下的旁路操作可以使得在FIFO中保存的有效数据的个数和输入数据中有效数据的个数之和大于指令需求的有效数据的个数时,队列操作仍可以在一个周期内读出可变长度的数据。
附图说明
图1为数据移动型FIFO的示意图;
图2为通常使用的指针移动型FIFO的示意图;
图3为本发明的FIFO的示意图;
图4为本发明的FIFO的输入输出框图;
图5为本发明的结构框图;
图6为图5所述改进型FIFO的地址指针生成部件502和标识部件503的主要控制步骤的流程图。
图7为根据图5所述结构实现的由16个byte的寄存器构成的FIFO的实施范例的结构框图。
图8为图7中的寄存器组部件的结构图;
图9为图7所述FIFO实施范例的地址指针生成部件502和标识部件503的主要控制步骤的流程图;
图10为旁路有效信号控制下的读数选择装置结构图;
图11为并行数据读端口结构图。
图中标号:501为FIFO的寄存器,502为地址指针生成部件,503为标识生成部件;601为FIFO控制步骤中的开始步骤,602、603、604为判别步骤,605为结束步骤;701为FIFO实施例中寄存器组部件,702为地址指针生成部件,703为标识生成部件;901为FIFO实施例中控制步骤中的开始部件,902、903、904为判别步骤,905为结束步骤;1001、1002、1003、1004为图10中的控制信号,1101、1102、1103、1104、1105为图11中的控制信号。
具体实施方式
以下参照附图详细描述本发明的具体实施方式。
图3为改进型FIFO的原理图,改进型FIFO是一种指针移动型FIFO,它与普通的指针移动型FIFO的重要区别在于:
读写指针的产生原理和读写操作的计数单位不同,写指针控制下的写操作写入数据的宽度为2a位,而每一个读指针控制下的读操作读出的数据宽度为2b位;
进行读操作时,数据从多个读口并行读出;
通过旁路设计,保证在一个周期内直接读出最多N个2b位的数据。
图4为改进型FIFO的外框图。FIFO输入固定长度的数据fifo_in以及指令要求读出有效数据的个数Length,输出最大可变长度的数据fifo_out,以及栈空标识empty和栈满标识overflow。
图5为改进型FIFO的结构框图。FIFO包括寄存器组501,地址指针生成部件502,和标识生成部件503三个部分。
寄存器组501包括M个2a位寄存器,a为自然数;一个写操作端口,写操作的数据宽度为2a位;N个读操作端口,读端口的数据操作宽度为2b位,b为自然数且b<a;
地址指针生成部件502产生一个写指针和N个读指针,输出到寄存器组部件,用来控制寄存器组的读写;
标识生成部件503包括一个以2b位为单位记录有效寄存器个数的工作计数器(WORKREG),工作计数器产生栈空标识、栈满标识,其中,栈空标识、栈满标识输出到指针生成部件,用于控制地址指针的生成;
标识生成部件503还产生旁路信号,输出到寄存器组部件,用于控制旁路操作。旁路分两种类型,一种是初始情况,此时FIFO中还没有数,必须旁路,在队列头指针的控制下直接从存储器端口读数,但同时写入FIFO;另一种是在非初始状态下,此时用存储端口的数据替换头指针所在行的下一行数据,便能得到足够的有效数据。旁路操作时数据同时写入FIFO,这样在下次读出数据时,通过队列头指针和计数器WORKREG的计数值的运算可以保证读数地址的正确性。
旁路操作是通过M个二选一的选通器来实现的,两路数据中一路是寄存器队列中储存的各行(以2a位为单位)的数据,另一路是来自存储器端口的数据,控制信号来自旁路有效信号和队列头指针高j-b位+1(一定有2i≤M≤2j,i,j是连续的自然数),队列头指针高j-b位的值表示队列头指针所在的行地址,当旁路信号有效时,需要将当前读指针所在行的下一行数据执行旁路,即将队列头指针高j-b位的值+1行的数据旁路为来自存储器端口的32位数据;当旁路信号无效时,选通器输出寄存器队列中储存的数据。
需要说明的是,在非初始状态下旁路信号有效的条件是:如果WORKREG计数器中有效数据的个数+当前写入的数据的个数-当前读出的数据个数<0,(因为读写同时进行)即寄存器中已经没有可能提供足够的有效数据,但加上来自存储端口的数据就可以满足要求时,采用旁路输出;如果加上来自存储端口的数据也无法满足要求时,只能发出栈空信号,等待有效数据的写入。
M个二选一选通器的输出同时连接到N个K选一的选通器的输入端,K=M*2a-b,这N个K选一的选通器即为N个读口,这些选通器的控制信号来自读地址指针,依次为队列头指针,队列头指针+1,……,队列头指针+(N-1)。
图6为上述改进型FIFO的地址指针生成部件502和标识部件503的主要控制步骤的流程图。
步骤601,过程开始;
步骤602,判断WORKREG+2a-b-LENGTH≤M·2a-b是否成立,即判断是否溢出。如果成立,表明溢出则overflow置1,此时读操作有效,写操作无效,队列尾指针pt(写指针)不变,队列头指针ph(读指针)加LENGTH,WORKREG减LENGTH,然后转步骤605;如果不成立,表明未溢出则直接转步骤603;
步骤603,判断WORKREG<LENGTH是否成立。如果不成立,则队列头指针ph加LENGTH,队列尾指针pt加1,WORKREG在加2a-b的同时减LENGTH,然后转步骤605;如果成立,则直接转步骤604;
步骤604,进一步判断WORKREG+2a-b<LENGTH是否成立。如果成立,则empty置1,此时读操作无效,写操作有效,队列头指针ph不动,队列尾指针pt加1,WORKREG加2a-b,然后转步骤605;如果不成立,则en_bypass置1,旁路操作有效,队列头指针ph加LENGTH,队列尾指针pt加1,WORKREG在加2a-b的同时减LENGTH,然后转步骤605。
图7为根据图5所述结构实现的由16个byte的寄存器构成的FIFO的实施范例的结构框图。此时M=4,a=5,b=3,N=5。该结构包含寄存器组部件701,地址指针生成部件702和标识生成部件703。输入数据fifo_in<31:0>,输出数据fifo_out<39:0>。
图8为图7中寄存器组部件701的结构图。寄存器组701包含一个写口,每次以25位为单位写入数据;寄存器组701包含5个读口,每次并行输出5个以23位为单位的数据,但只有处在高位的LENGTH(LENGTH=1~5)个23位的数据有效,剩下的5减LENGTH个23位的数据冗余,后续电路可以根据LENGTH信号避开对冗余数据的处理或者把与冗余数据对应的流水级寄存器清0。每次读完40位的数据后,队列头指针不是指向下一个40位数据的起始处,而是减去读出的有效数据的个数(即LENGTH),指向下一个将要读出的数据的起始存储单元。写操作在写指针的控制下进行,写指针的宽度为2位,用于指向4个以25位为单位的存储单元(或称“行”),写操作以25位为单位进行;读操作在读指针的控制下进行,读指针的宽度为4位,用于指向16个以23位为单位的存储单元,读操作以23位为单位进行。队列头指针ph<3:0>为变长数据的起始地址,在进行读操作时,队列头指针及之后的4个连续地址指针指向的数据并行读出。
图9为图7中的地址指针部件702和标识生成部件703的主要控制步骤流程图。其中WORKREG为FIFO中包含的以23位为单位计数的有效数据个数的计数器,LENGTH为指令译码得到的需要读出的以23位为单位计数的数据个数。
在步骤901,过程开始;
在步骤902,判断WORKREG+4-LENGTH≤16是否成立。如果成立,则overflow置1,此时读操作有效,写操作无效,队列尾指针pt(写指针)不变,队列头指针ph(读指针)加LENGTH,WORKREG减LENGTH,然后转步骤905;如果不成立,则直接转步骤903;
在步骤903,判断WORKREG<LENGTH是否成立。如果不成立,则队列头指针ph加LENGTH,队列尾指针pt加1,WORKREG在加4的同时减LENGTH,然后转步骤905;如果成立,则直接转步骤904;
在步骤904,进一步判断WORKREG+4<LENGTH是否成立。如果成立,则empty置1,此时读操作无效,写操作有效,队列头指针ph不动,队列尾指针pt加1,WORKREG加4,然后转步骤905;如果不成立,则en_bypass置1,旁路操作有效,队列头指针ph加LENGTH,队列尾指针pt加1,WORKREG在加4的同时减LENGTH,然后转步骤905。
旁路操作是通过4个二选一的选通器实现的,两路数据中一路是寄存器队列中各行的数据,另一路是来自存储器端口的数据,控制信号来自旁路信号和队列头指针高2位的值(队列头指针高2位的值表示该行数据在寄存器中的行数),旁路信号有效时,需要将当前读指针所在行的下一行数据执行旁路,所以当旁路信号时将头指针高2位+1行的数据旁路为来自存储器端口的32位数据;当旁路信号无效时,选通器输出寄存器中的数据。
图10为旁路有效信号控制下的读数选择装置结构图。图中MUX21_32为选通部件,输入两个数据,输出数据根据控制信号为输入数据中间的一个,控制信号为0时输出左路寄存器中的数据,控制信号为1时输出右路来自存储器端口的数据。图中右路输入数据为部件701的输入数据fifo_in<31:0>,左路输入数据reg0<31:0>、reg1<31:0>、reg2<31:0>、reg3<31:0>分别为队列尾指针pt<1:0>取值00,01,10和11时所指向的存储单元保存的数据。其中的控制信号1001~1004的产生机制如下:
当旁路有效信号en_bypass为1,并且队列头指针ph的高两位ph<3:2>为11时,或者第一次对FIFO进行读操作时,信号1001置1,否则为0;
当旁路有效信号en_bypass为1,并且队列头指针ph的高两位ph<3:2>为00时,信号1002置1,否则为0;
当旁路有效信号en_bypass为1,并且队列头指针ph的高两位ph<3:2>为01时,信号1003置1,否则为0;
当旁路有效信号en_bypass为1,并且队列头指针ph的高两位ph<3:2>为10时,信号1004置1,否则为0。
图11为并行数据读端口结构图。4个二选一选通器的输出同时连接到5个16选1的选通器的输入端,这5个16选1的选通器即为5个读口,每个16选1选通器输出8位数据,所以共输出40位数据。图中MUX164_8为具有4位控制信号的16选1的选通器,数据宽度为8位。5个读出端口的数据来源相同,依次为:
regbp0<7:0>,regbp0<15:8>,regbp0<23:16>,regbp0<31:24>,
regbp1<7:0>,regbp1<15:8>,regbp1<23:16>,regbp1<31:24>,
regbp2<7:0>,regbp2<15:8>,regbp2<23:16>,regbp2<31:24>,
regbp3<7:0>,regbp3<15:8>,regbp3<23:16>,regbp3<31:24>。
图中的控制信号1101~1105分别为第一读地址指针ph<3:0>,第一读地址指针加1值ph<3:0>+1,第一读地址指针加二值ph<3:0>+2,第一读地址指针加三值ph<3:0>+3,第一读地址指针加四值ph<3:0>+4。读出的数据自高向低依次排列,构成输出数据fifo_out<39:0>。其中高LENGTH(LENGTH=1~5)个以23位为单位的数据为当周期读出的有效数据。通过上述装置和控制方法可以一拍读出长度为1~5个23位的数据,大大提高了可变长度数据的取数效率。
最后所应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
Claims (9)
1、一种可处理变长数据的先进先出寄存器队列装置,其特征在于,包括:
一个寄存器组,包括M个2a位寄存器,a为自然数;一个写操作端口,写操作的数据宽度为2a位;N个读操作端口,每个读端口的数据操作宽度均为2b位,b为自然数且b<a;
一个地址指针生成部件,产生一个写指针和N个读指针,输出到寄存器组部件,用来控制寄存器组的读写;
一个标识生成部件,包括一个以2b位为单位记录有效寄存器个数的工作计数器,工作计数器产生栈空标识、栈满标识,其中,栈空标识、栈满标识输出到指针生成部件,用于控制地址指针的生成;
所述的标识生成部件产生的还包括旁路标识,旁路标识输出到寄存器组部件,用于控制数据旁路操作。
2、根据权利要求1所述的可处理变长数据的先进先出寄存器队列装置,其特征在于,所述地址指针生成部件产生的写指针指向下一个即将写入的以2a位为单位的数据单元,计数值为0~M-1,当计数值为M时,写指针清0。
3、根据权利要求1或2所述的可处理变长数据的先进先出寄存器队列装置,其特征在于,所述写指针为寄存器队列尾指针,完成一次写操作后,队列尾指针增1,指向下一个数据单元。
4、根据权利要求1所述的可处理变长数据的先进先出寄存器队列装置,其特征在于,所述地址指针生成部件产生N个读指针,用于控制N个以2b位为单位的读端口,并行输出数据,第一读指针指向下一个即将读出的变长数据的第一个以2b位为单位的数据单元,第二至第N个读指针分别指向随后的N-1个以2b位为单位的数据单元,读指针的计数值为0~(M×2a-b-1),当计数值为M×2a-b时,读指针清0。
5、根据权利要求1或4所述的可处理变长数据的先进先出寄存器队列装置,其特征在于,所述第一读指针为寄存器队列头指针,完成一次读操作后,队列头指针加读出以2b位为单位的有效数据的个数,指向下一个要读出的数据的起始地址。
6、根据权利要求1所述的可处理变长数据的先进先出寄存器队列装置,其特征在于,所述旁路操作通过M个二选一的选通器实现,两路数据中一路是寄存器队列中各行的数据,另一路是来自存储器端口的数据,控制信号来自旁路信号和队列头指针高j-b位+1,M满足2l≤M≤2j,i,j是连续的自然数,队列头指针高j-b位的值表示该行数据在寄存器组中所在的行地址。
7、一种可处理变长数据的先进先出寄存器队列的控制方法,其特征在于,
首先判断是否溢出,如果溢出,则栈满标志置1,此时读操作有效,写操作无效,队列尾指针pt不变,队列头读指针ph加LENGTH,WORKREG减LENGTH,WORKREG为内部计数器记录的有效寄存器个数,LENGTH为输入的当周期需要读出的数据个数,均以2b位为单位,然后结束;
如果不溢出,则继续判断WORKREG<LENGTH是否成立:
(1)如果不成立,则直接读出数据,队列头指针ph加LENGTH,队列尾指针pt加1,WORKREG在加2a-b的同时减LENGTH,然后结束;
(2)如果成立,则进一步判断WORKREG+2a-b<LENGTH是否成立:
①如果成立,则栈空信号置1,此时读操作无效,写操作有效,队列头读指针ph不动,队列尾写指针pt加1,WORKREG加2a-b,然后结束;
②如果不成立,则旁路信号置1,执行旁路操作,读出数据,队列头指针ph加LENGTH,队列尾指针pt加1,WORKREG在加2a-b的同时减LENGTH,然后结束。
8、根据权利要求7所述的可处理变长数据的先进先出寄存器队列的控制方法,其特征在于,所述溢出是通过判断WORKREG+2a-b-LENGTH≤M·2a-b是否成立得到:若成立则认为溢出,若不成立则认为并未溢出。
9、根据权利要求7所述的可处理变长数据的先进先出寄存器队列的控制方法,其特征在于,所述读操作通过N个K选一的选通器实现并行输出,其中K=M*2a-b,输出数据宽度为2b位,N个选通器的数据来源相同,每个选通器的K个数据来源是由经过旁路选择后的M个2a位数据以2b位为单位按照地址顺序排列而成;
选通器的控制信号分别为,第一个选通器的控制信号为队列头指针,第二到N-1个控制信号依次为队列头指针+1~队列头指针+(N-1)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200310107835 CN1238788C (zh) | 2003-10-08 | 2003-10-08 | 可处理变长数据的先进先出寄存器队列装置及控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200310107835 CN1238788C (zh) | 2003-10-08 | 2003-10-08 | 可处理变长数据的先进先出寄存器队列装置及控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1529234A CN1529234A (zh) | 2004-09-15 |
CN1238788C true CN1238788C (zh) | 2006-01-25 |
Family
ID=34304497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200310107835 Expired - Fee Related CN1238788C (zh) | 2003-10-08 | 2003-10-08 | 可处理变长数据的先进先出寄存器队列装置及控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1238788C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508631B (zh) * | 2011-09-26 | 2014-07-30 | 福建星网锐捷网络有限公司 | 用于写入任意字节数据的fifo的写入数据处理装置 |
CN103166873B (zh) * | 2011-12-12 | 2018-02-27 | 中兴通讯股份有限公司 | 核间通信的方法及核处理器 |
CN114185513B (zh) * | 2022-02-17 | 2022-05-20 | 沐曦集成电路(上海)有限公司 | 数据缓存装置和芯片 |
-
2003
- 2003-10-08 CN CN 200310107835 patent/CN1238788C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1529234A (zh) | 2004-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2546755A2 (en) | Flash controller hardware architecture for flash devices | |
CN107391392A (zh) | 一种基于闪存存储设备并行特征的垃圾回收优化方法 | |
EP3938917B1 (en) | Moving data in a memory and command for memory control | |
EP3816867A1 (en) | Data reading/writing method and system in 3d image processing, storage medium, and terminal | |
CN114647635A (zh) | 数据处理系统 | |
US20200301825A1 (en) | Technologies for column-based data layouts for clustered data systems | |
US11823771B2 (en) | Streaming access memory device, system and method | |
CN106843803A (zh) | 一种基于归并树的全排序加速器及应用 | |
CN1795442A (zh) | 用于在主存储器和存储装置之间传送数据的方法和设备 | |
CN1238788C (zh) | 可处理变长数据的先进先出寄存器队列装置及控制方法 | |
CN1503948A (zh) | 流水线化的ata设备初始化 | |
CN1149472C (zh) | 更名装置及处理器 | |
CN1459112A (zh) | 存储装置 | |
CN1109301C (zh) | 显示存储器控制设备 | |
CN1234065C (zh) | 微控制器ip核的处理方法 | |
CN1095584C (zh) | 存储器存取之接口电路及存储器存取的方法 | |
CN1719421A (zh) | 基于mcs-51架构的16m字节数据存储器寻址空间扩充方法 | |
CN1109188A (zh) | 并行算术—逻辑处理装置 | |
CN113448624A (zh) | 数据存取方法及装置、系统、ai加速器 | |
WO2000025205A1 (en) | Controlling access to a primary memory | |
CN112486904A (zh) | 可重构处理单元阵列的寄存器堆设计方法及装置 | |
CN105843589B (zh) | 一种应用于vliw类型处理器的存储器装置 | |
CN1731530A (zh) | 读改写并发处理系统及读改写并发处理方法 | |
CN1866232A (zh) | 安全数字存储卡数据的存储器直接存取方法及其接口电路 | |
CN1555169A (zh) | 基于流水线的多队列顺序化缓冲管理电路及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060125 Termination date: 20161008 |
|
CF01 | Termination of patent right due to non-payment of annual fee |