一种基于双端口寄存器阵列的四端口存储器的制造方法

文档序号:6639027阅读:243来源:国知局
一种基于双端口寄存器阵列的四端口存储器的制造方法
【专利摘要】本发明公开了一种基于双端口寄存器阵列的四端口存储器,目的是解决目前使用寄存器组或四端口寄存器阵列即四端口RA实现地址缓冲区时占用芯片面积大的问题。本发明技术方案是在双端口RA上增加空闲地址计数器、空闲地址写控制模块、空闲地址读控制模块、存储器读请求生成模块、存储器写请求生成模块、第一与门、第二与门、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器、空闲地址选择模块、存储器写控制模块、存储器读控制模块、存储器输出数据选择模块。本发明采用双端口RA实现了四端口存储器,采用本发明作为多VC动态共享缓冲区中的地址缓冲区时可以节省存储器占用面积,从而减少芯片面积,避免布线拥塞。
【专利说明】
—种基于双端口寄存器阵列的四端口存储器

【技术领域】
[0001]本发明涉及超级计算机互连网络交换机中的地址缓冲区,尤其是基于双端口寄存器阵列构建的四端口存储器。

【背景技术】
[0002]超级计算机互连网络交换机普遍采用输入缓冲结构,而且随着交换机端口数目的增加,交换机采用多级交换结构,每一个输入端口和每一级交换的输入端口都需要缓冲区缓存报文,导致交换机中缓冲区的数目急剧增加。为了减小缓冲区占用的芯片面积,降低实现缓冲区的存储器带来的功耗开销,交换机中采用动态分配共享缓冲区管理方法,提高缓冲区利用率,减小缓冲区深度。
[0003]动态分配共享缓冲区中需要维护多个数据队列,可以根据虚信道(VirtualChannel, VC)或者输出端口设置数据队列的数目,因此,动态分配共享缓冲区的管理方法分为根据输出端口排队的缓冲区管理方法与根据VC排队的缓冲区管理方法,两种方法在实现上没有本质区别。在下面的叙述中,假设缓冲区中的数据是按照VC号排队的,即同一个VC的数据保存在同一个虚拟数据队列中,并且将这种缓冲区称作多VC动态共享缓冲区。为了提高链路利用率,互连网络中的物理链路被划分为多个虚信道。在交换机的输入缓冲区中,设置与VC数目相同的虚拟数据队列,相同VC的数据被组织为虚拟链表,存取方式为先进先出(First In First Out,FIFO) 0在有些交换机中,为了消除头部阻塞问题,设置与交换机输出端口数目相同的虚拟队列,输出到同一个输出端口的数据被保存在一个队列中,组织为链表方式,存取方式也为FIFO。
[0004]缓冲区中保存的数据为固定长度的报文切片,称为flit。报文在端节点被切分为flit,然后在网络中传输。不同长度的报文包含的flit数目不同。缓冲区的存储单元宽度与flit宽度相同,每个存储单元保存一个flit。缓冲区的深度由上一级发送端与缓冲区之间的链路传输延迟和链路带宽共同决定。
[0005]记VC数目为N(N为正整数),典型多VC动态共享缓冲区如图1所述,具有I个数据输入端口、N个读请求输入端口(即VC1到VCn读请求输入端口)、N个数据输出端口(即VC1到VCn数据输出端口),由VC号识别模块、N个读写地址管理模块(即VC1到VCn读写地址管理模块)、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写地址选择模块、第二读请求选择模块、第三写请求与写数据选择模块、第三读请求选择模块、数据缓冲区、地址缓冲区、第三读写地址管理模块组成。
[0006]数据输入端口与VC号识别模块、数据缓冲区相连,将N个VC的数据串行输入到VC号识别模块和数据缓冲区。VCi (I ^ i ^ N)读请求输入端口与VCi读写地址管理模块相连,将VCi读请求发送到VCi读写地址管理模块。
[0007]VCi数据输出端口与数据缓冲区相连,将从数据缓冲区读出的VCi的数据发送到交换机其它处理逻辑。
[0008]VC号识别模块与数据输入端口、VC1到VCn读写地址管理模块相连,从数据输入端口输入的数据中提取该数据的VC号i,生成VCi写请求,发送到VCi读写地址管理模块。
[0009]VCi读写地址管理模块与VC号识别模块、VCi读请求输入端口、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写地址选择模块、第二读请求选择模块、第三写请求与写数据选择模块、第三读请求选择模块和地址缓冲区相连,从VC号识别模块接收VCi写请求,生成读取空闲地址的VCi第三读请求,发送到第三读请求选择模块;VCi读写地址管理模块接收从第三读写地址管理模块读出的当前空闲地址,将该地址保存为VCi写地址,生成VCi第一写请求,将VCi第一写请求与写地址发送到第一写请求与写地址选择模块;如果VCi已经有数据保存在数据缓冲区中,VCi读写地址管理模块生成对地址缓冲区的第二写请求,并将VCi前一个数据的地址作为写地址,发送到第二写请求与写地址选择模块,然后,将前一个数据地址更新为读出的当前空闲地址。VCi读写地址管理模块从VCi读请求输入端口接收对VCi的读请求作为第一读请求,将VCi第一个数据所在的地址作为第一读地址,将第一读请求与第一读地址发送到第一读请求与读地址选择模块;如果VCi保存在数据缓冲区中的数据数目大于1,生成第二读请求,发送到第二读请求选择模块;生成VCi第三写请求,将VCi的第一读地址作为写数据,发送给第三写请求与写数据选择模块。VCi读写地址管理模块接收从地址缓冲区读出的下一个数据地址,将VCi第一个数据所在的地址更新为该地址。
[0010]第一写请求与写地址选择模块与VC1到VCn读写地址管理模块和数据缓冲区相连,串行接收VCi读写地址管理模块发出的VCi第一写请求与写地址,选择有效的写请求及其写地址分别生成第一写请求和第一写地址,发送给数据缓冲区。
[0011 ] 第一读请求与读地址选择模块与VC1到VCn读写地址管理模块、数据缓冲区和地址缓冲区相连,串行接收VCi读写地址管理模块发出的VCi第一读请求与读地址,选择有效的读请求及其读地址分别生成第一读请求和第一读地址,将二者发送给数据缓冲区,仅将第一读地址发送给地址缓冲区。
[0012]数据缓冲区一般是具有独立的读写端口的双端口静态随机访问存储器SRAM (Static Random Access Memory),与数据输入端口、第一写请求与写地址选择模块、第一读请求与读地址选择模块、VC1到VCn数据输出端口相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从数据输入端口接收数据并将其写入到第一写地址指向的存储器空间;数据缓冲区接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据到VC1到VCn数据输出端口。
[0013]第二写请求与写地址选择模块与VC1到VCn读写地址管理模块、地址缓冲区相连,串行接收VCi读写地址管理模块发送的第二写请求与写地址,选择有效的写请求和写地址,生成第二写请求和第二写地址,发送到地址缓冲区。
[0014]第二读请求选择模块与VC1到VCn读写地址管理模块、地址缓冲区相连,串行接收VCi读写地址管理模块发送的第二读请求,选择有效的读请求作为第二读请求发送到地址缓冲区。第三写请求与写数据选择模块与VC1到VCn读写地址管理模块、第三读写地址管理模块、地址缓冲区相连,串行接收VCi读写地址管理模块发送的第三写请求与写数据,选择有效的写请求和写数据,生成第三写请求和写入的空闲地址,发送到第三读写地址管理模块和地址缓冲区。
[0015]第三读请求选择模块与VC1到VCn读写地址管理模块、第三读写地址管理模块、地址缓冲区相连,串行接收VCi读写地址管理模块发送的第三读请求,选择有效的读请求作为第三读请求发送到第三读写地址管理模块和地址缓冲区。
[0016]第三读写地址管理模块与第三写请求与写数据选择模块、第三读请求选择模块、地址缓冲区、VC1到VCn读写地址管理模块相连,接收第三写请求与写数据选择模块发送的第三写请求,将维护的空闲地址队列尾指针作为第三写地址,发送到地址缓冲区。然后,将空闲地址队列的尾指针更新为写入的空闲地址;第三读写地址管理模块接收第三读请求选择模块发送的第三读请求,将空闲地址队列的头指针作为当前空闲地址发送到VC1到vcNa写地址管理模块,以及地址缓冲区;同时,将空闲地址队列的头指针作为第三读地址,发送到地址缓冲区,读出下一个空闲地址,用该空闲地址更新空闲地址队列的头指针。
[0017]地址缓冲区一般是具有独立的两读两写端口的寄存器组或者四端口 RA (RegisterArray,寄存器阵列),与第一读请求与读地址选择模块、第二写请求与写地址选择模块、第二读请求选择模块、VC1到VCn读写地址管理模块、第二写请求与写数据选择模块、第二读请求选择模块、第三写请求与写数据选择模块、第三读请求选择模块、第三读写地址管理模块、VC1到VCn读写地址管理模块相连,接收第二写请求与写地址选择模块发送的第二写请求和第二写地址,将第三写请求与写数据选择模块发送的当前空闲地址写入到第二写地址指向的地址缓冲区空间;接收第二读请求选择模块发送的第二读请求,接收第一读请求与读地址选择模块发送的第一读地址,从第一读地址指向的地址缓冲区空间读出下一个数据地址;接收第三写请求与写数据选择模块发送的第三写请求和写入的空闲地址,接收第三读写地址管理模块发送的第三写地址,将写入的空闲地址写入到第三写地址指向的地址缓冲区空间;接收第三读请求选择模块发送的第三读请求,接收第三读写地址管理模块发送的第三读地址,从第三读地址指向的地址缓冲区空间读出下一个空闲地址。
[0018]从逻辑上看,上述多VC动态共享缓冲区的地址缓冲区需要提供四个访问端口(这四个访问端口并不是物理端口,而是逻辑端口),包括两个写端口和两个读端口,分别记作第一写端口、第二写端口、第一读端口和第二读端口。结合图1,对应到物理实现上,第一写端口的输入信号包括:第二写请求、第二写地址、当前空闲地址,当第二写请求有效时,将当前空闲地址写入第二写地址指向的地址缓冲区空间。第一读端口的输入信号包括:第二读请求,第一读地址,输出信号包括:下一个数据地址,如果第二读请求有效,从第一读地址指向的地址缓冲区空间读出下一个数据地址。第二写端口的输入信号包括:第三写请求、第三写地址、写入的空闲地址,如果第三写请求有效,将写入的空闲地址写到第三写地址指向的地址缓冲区空间。第二读端口的输入信号包括:第三读请求,第三读地址,输出信号包括:下一个空闲地址,如果第三读请求有效,从第三读地址指向的地址缓冲区空间读出下一个空闲地址。
[0019]地址缓冲区的四个访问端口可能同时被访问,因此,地址缓冲区需要采用四端口存储器来实现,如果用寄存器组实现四端口存储器,可以方便地支持四个访问端口,但是寄存器组将会占据比较大的芯片面积,导致布线拥塞。如果用四端口 RA实现四端口存储器,能够简化芯片实现中的后端布线,但是相同容量的四端口 RA占用的面积是双端口 RA的两倍多,占用面积较大。但如果用双端口 RA实现地址缓冲区,同时接收两个读请求和两个写请求,将会出现读端口的访问冲突和写端口的访问冲突。因此,无法直接采用双端口 RA实现多VC动态共享缓冲区中的地址缓冲区。


【发明内容】

[0020]本发明要解决的技术问题是现有技术中使用寄存器组或四端口 RA实现地址缓冲区四端口存储器占用芯片面积大,双端口 RA同时接收两个读请求和两个写请求访问出现访问冲突,无法直接采用双端口 RA实现多VC动态共享缓冲区中的地址缓冲区。为了减少多VC动态共享缓冲区的面积占用,本发明提出一种基于双端口 RA实现的四端口存储器,用于实现多VC动态共享缓冲区的地址缓冲区。
[0021]为解决上述具体技术问题,本发明的技术方案为:
[0022]本发明基于双端口 RA实现的四端口存储器与【背景技术】中多VC动态共享缓冲区中采用厂家提供的四端口存储器作为地址缓冲区的区别是,【背景技术】的四端口存储器采用寄存器组或四端口 RA直接实现,无需设计额外逻辑;本发明采用双端口 RA,同时增加下述控制逻辑实现四端口访问的功能:空闲地址计数器、空闲地址写控制模块、空闲地址读控制模块、存储器读请求生成模块、存储器写请求生成模块、第一与门、第二与门、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器、空闲地址选择模块、存储器写控制模块、存储器读控制模块、存储器输出数据选择模块。第一与门、第二与门均为二输入与门。与【背景技术】的地址缓冲区相同,采用本发明实现的地址缓冲区一样提供4个访问端口:第一写端口、第二写端口、第一读端口和第二读端口。第一写端口的输入信号包括:第二写请求、第二写地址、当前空闲地址,当第二写请求有效时,将当前空闲地址写入第二写地址指向的地址缓冲区空间。第一读端口的输入信号包括:第二读请求,第一读地址,输出信号包括:下一个数据地址,如果第二读请求有效,从第一读地址指向的地址缓冲区空间读出下一个数据地址。第二写端口的输入信号包括:第三写请求、第三写地址、写入的空闲地址,如果第三写请求有效,将写入的空闲地址写到第三写地址指向的地址缓冲区空间。第二读端口的输入信号包括:第三读请求,第三读地址,输出信号包括:下一个空闲地址,如果第三读请求有效,从第三读地址指向的地址缓冲区空间读出下一个空闲地址。
[0023]空闲地址计数器与第三写请求信号线、第三读请求信号线、空闲地址读控制模块、空闲地址写控制模块相连;接收第三写请求和第三读请求,如果第三写请求有效,第三读请求无效,空闲地址计数器将空闲地址计数值加一;如果第三写请求无效,第三读请求有效,空闲地址计数器将空闲地址计数值减一;否则,空闲地址计数值保持不变;将空闲地址计数值发送给空闲地址读控制模块和空闲地址写控制模块。
[0024]空闲地址读控制模块与第三写请求信号线、空闲地址计数器、存储器读请求生成模块、第二与门相连;接收第三写请求和空闲地址计数值,如果第三写请求有效或者空闲地址计数值为1,生成第五读使能发送到存储器读请求生成模块和第二与门;否则,不生成第五读使能。
[0025]空闲地址写控制模块与第三读请求信号线、空闲地址计数器、存储器写请求生成模块、第一与门相连;接收第三读请求和空闲地址计数值,如果空闲地址计数值为O或者第三读请求有效,生成第五写使能发送到存储器写请求生成模块和第一与门;否则,不生成第五与使能。
[0026]第一与门与第三写请求信号线、空闲地址写控制模块、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器相连;从空闲地址写控制模块接收第五写使能,与第三写请求做逻辑与操作,即第五写使能和第三写请求同时有效时,生成第五写请求,将第五写请求发送给空闲地址交换寄存器读写控制模块和空闲地址交换寄存器。
[0027]第二与门与第三读请求、空闲地址读控制模块、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器、空闲地址选择模块相连;从空闲地址读控制模块接收第五读使能,将第五读使能与第三读请求做逻辑与操作,即第五读使能和第三读请求同时有效时,生成第五读请求,将第五读请求发送给空闲地址交换寄存器读写控制模块、空闲地址交换寄存器和空闲地址选择模块。
[0028]空闲地址交换寄存器读写控制模块与第一与门、第二与门、空闲地址交换寄存器相连;从第一与门接收第五写请求,从第二与门接收第五读请求,如果第五写请求有效,将第五写地址加一;如果第五读请求有效,将第五读地址加一;将生成的第五写地址和第五读地址发送到空闲地址交换寄存器。
[0029]空闲地址交换寄存器由两个寄存器组成,与写入的空闲地址信号线、第一与门、第二与门、空闲地址交换寄存器读写控制模块、空闲地址选择模块相连;从第一与门接收第五写请求,从空闲地址交换寄存器读写控制模块接收第五写地址,如果第五写请求有效,将从写入的空闲地址信号线获取的写入的空闲地址保存到第五写地址指向的空闲地址交换寄存器中;从第二与门接收第五读请求,从空闲地址交换寄存器读写控制模块接收第五读地址,如果第五读请求有效,从第五读地址指向的空闲地址交换寄存器读出空闲地址作为第一空闲地址,将第一空闲地址发送到空闲地址选择模块。
[0030]存储器读请求生成模块与第三读请求信号线、空闲地址读控制模块、存储器读控制模块、存储器输出数据选择模块、空闲地址选择模块相连,从空闲地址读控制模块接收第五读使能,如果第三读请求有效,第五读使能无效,生成第四读请求,将第四读请求发送到存储器读控制模块、存储器输出数据选择模块和空闲地址选择模块;否则,不生成第四读请求。
[0031]存储器写请求生成模块与第三写请求信号线、空闲地址写控制模块、存储器写控制模块相连,从空闲地址写控制模块接收第五写使能,如果第三写请求有效,第五写使能无效,生成第四写请求,将第四写请求发送到存储器写控制模块;否则,不生成第四写请求。
[0032]存储器写控制模块与第二写请求信号线、第二写地址信号线、当前空闲地址信号线、第三写地址信号线、写入的空闲地址信号线、存储器写请求生成模块、双端口 RA相连,从存储器写请求生成模块接收第四写请求;如果第二写请求有效,第四写请求无效,生成存储器写请求,将第二写地址赋给存储器写地址,将当前空闲地址赋给存储器写数据,将存储器写请求、存储器写地址、存储器写数据发送到双端口 RA ;如果第二写请求无效,第四写请求有效,生成存储器写请求,将第三写地址赋给存储器写地址,将写入的空闲地址赋给存储器写数据,将存储器写请求、存储器写地址、存储器写数据发送到双端口 RA ;否则,不生成存储器写请求。
[0033]存储器读控制模块与第二读请求信号线、第一读地址信号线、第三读地址信号线、存储器读请求生成模块、双端口 RA相连,从存储器读请求生成模块接收第四读请求,如果第二读请求有效,第四读请求无效,生成存储器读请求,将第一读地址赋给存储器读地址,将存储器读请求、存储器读地址发送到双端口 RA ;如果第二读请求无效,第四读请求有效,生成存储器读请求,将第三读地址赋给存储器读地址,将存储器读请求、存储器读地址发送到双端口 RA ;否则,不生成存储器读请求。
[0034]双端口 RA具有一个读端口和一个写端口,与存储器写控制模块、存储器读控制模块、存储器输出数据选择模块相连;双端口 RA从存储器写控制模块接收存储器写请求、存储器写地址、存储器写数据,如果存储器写请求有效,将存储器写数据写入到存储器写地址指向的双端口 RA存储空间;从存储器读控制模块接收存储器读请求、存储器读地址,如果存储器读请求有效,从存储器读地址指向的双端口 RA存储空间读出数据作为存储器输出数据,发送到存储器输出数据选择模块。
[0035]存储器输出数据选择模块与第二读请求信号线、存储器读请求生成模块、双端口RA、空闲地址选择模块、下一个数据地址信号线相连;从存储器读请求生成模块接收第四读请求,从双端口 RA接收存储器输出数据,如果第二读请求有效,第四读请求无效,将存储器输出数据赋给下一个数据地址;如果第二读请求无效,第四读请求有效,将存储器输出数据赋给第二空闲地址,将第二空闲地址发送到空闲地址选择模块。
[0036]空闲地址选择模块与存储器读请求生成模块、存储器输出数据选择模块、空闲地址交换寄存器、第二与门、下一个空闲地址信号线相连;从存储器读请求生成模块接收第四读请求,从存储器输出数据选择模块接收第二空闲地址,从第二与门接收第五读请求,从空闲地址交换寄存器接收第一空闲地址;如果第四读请求有效,第五读请求无效,将第二空闲地址赋给下一个空闲地址;如果第四读请求无效,第五读请求有效,将第一空闲地址赋给下一个空闲地址。
[0037]采用本发明可以达到以下技术效果:
[0038]本发明的外部连接关系和连接信号与图1中地址缓冲区的外部连接关系和连接信号完全一样,仅通过在双端口 RA的外围增加空闲地址计数器、空闲地址写控制模块、空闲地址读控制模块、存储器读请求生成模块、存储器写请求生成模块、第一与门、第二与门、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器、空闲地址选择模块、存储器写控制模块、存储器读控制模块、存储器输出数据选择模块这13个功能模块(这些功能模块均为简单的组合逻辑,占用面积很小),就使得双端口 RA具有四端口存储器的端口访问特性,消除了双端口 RA只能提供两个访问端口带来的访问冲突。与直接采用四端口 RA或直接采用寄存器组实现地址缓冲区四端口存储器相比,采用本发明实现的地址缓冲区可以节省存储器芯片占用面积,从而减少芯片面积,避免布线拥塞。

【专利附图】

【附图说明】
[0039]图1是【背景技术】所述的多VC动态共享缓冲区总体结构图。
[0040]图2是基于双端口 RA实现的地址缓冲区四端口存储器结构图。

【具体实施方式】
:
[0041]图2是基于双端口 RA实现的地址缓冲区四端口存储器结构图。本发明是在双端口 RA的基础上增加下述控制逻辑实现四端口访问的功能:空闲地址计数器、空闲地址写控制模块、空闲地址读控制模块、存储器读请求生成模块、存储器写请求生成模块、第一与门、第二与门、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器、空闲地址选择模块、存储器写控制模块、存储器读控制模块、双端口 RA、存储器输出数据选择模块。与【背景技术】的地址缓冲区相同,采用本发明实现的地址缓冲区一样提供4个访问端口:第一写端口、第二写端口、第一读端口和第二读端口。第一写端口的输入信号包括:第二写请求、第二写地址、当前空闲地址,当第二写请求有效时,将当前空闲地址写入第二写地址指向的地址缓冲区空间。第一读端口的输入信号包括:第二读请求,第一读地址,输出信号包括:下一个数据地址,如果第二读请求有效,从第一读地址指向的地址缓冲区空间读出下一个数据地址。第二写端口的输入信号包括:第三写请求、第三写地址、写入的空闲地址,如果第三写请求有效,将写入的空闲地址写到第三写地址指向的地址缓冲区空间。第二读端口的输入信号包括:第三读请求,第三读地址,输出信号包括:下一个空闲地址,如果第三读请求有效,从第三读地址指向的地址缓冲区空间读出下一个空闲地址。四个访问端口的信号是与【背景技术】完全一样。
[0042]空闲地址计数器与第三写请求信号线、第三读请求信号线、空闲地址读控制模块、空闲地址写控制模块相连;接收第三写请求和第三读请求,如果第三写请求有效,第三读请求无效,空闲地址计数器将空闲地址计数值加一;如果第三写请求无效,第三读请求有效,空闲地址计数器将空闲地址计数值减一;否则,空闲地址计数值保持不变;将空闲地址计数值发送给空闲地址读控制模块和空闲地址写控制模块。
[0043]空闲地址读控制模块与第三写请求信号线、空闲地址计数器、存储器读请求生成模块、第二与门相连;接收第三写请求和空闲地址计数值,如果第三写请求有效或者空闲地址计数值为1,生成第五读使能发送到存储器读请求生成模块和第二与门;否则,不生成第五读使能。
[0044]空闲地址写控制模块与第三读请求信号线、空闲地址计数器、存储器写请求生成模块、第一与门相连;接收第三读请求和空闲地址计数值,如果空闲地址计数值为O或者第三读请求有效,生成第五写使能发送到存储器写请求生成模块和第一与门;否则,不生成第五与使能。
[0045]第一与门与第三写请求信号线、空闲地址写控制模块、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器相连;从空闲地址写控制模块接收第五写使能,与第三写请求做逻辑与操作,即第五写使能和第三写请求同时有效时,生成第五写请求,将第五写请求发送给空闲地址交换寄存器读写控制模块和空闲地址交换寄存器。
[0046]第二与门与第三读请求、空闲地址读控制模块、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器、空闲地址选择模块相连;从空闲地址读控制模块接收第五读使能,将第五读使能与第三读请求做逻辑与操作,即第五读使能和第三读请求同时有效时,生成第五读请求,将第五读请求发送给空闲地址交换寄存器读写控制模块、空闲地址交换寄存器和空闲地址选择模块。
[0047]空闲地址交换寄存器读写控制模块与第一与门、第二与门、空闲地址交换寄存器相连;从第一与门接收第五写请求,从第二与门接收第五读请求,如果第五写请求有效,将第五写地址加一;如果第五读请求有效,将第五读地址加一;将生成的第五写地址和第五读地址发送到空闲地址交换寄存器。
[0048]空闲地址交换寄存器由两个寄存器组成,与写入的空闲地址信号线、第一与门、第二与门、空闲地址交换寄存器读写控制模块、空闲地址选择模块相连;从第一与门接收第五写请求,从空闲地址交换寄存器读写控制模块接收第五写地址,如果第五写请求有效,将从写入的空闲地址信号线获取的写入的空闲地址保存到第五写地址指向的空闲地址交换寄存器中;从第二与门接收第五读请求,从空闲地址交换寄存器读写控制模块接收第五读地址,如果第五读请求有效,从第五读地址指向的空闲地址交换寄存器读出空闲地址作为第一空闲地址,将第一空闲地址发送到空闲地址选择模块。
[0049]存储器读请求生成模块与第三读请求信号线、空闲地址读控制模块、存储器读控制模块、存储器输出数据选择模块、空闲地址选择模块相连,从空闲地址读控制模块接收第五读使能,如果第三读请求有效,第五读使能无效,生成第四读请求,将第四读请求发送到存储器读控制模块、存储器输出数据选择模块和空闲地址选择模块;否则,不生成第四读请求。
[0050]存储器写请求生成模块与第三写请求信号线、空闲地址写控制模块、存储器写控制模块相连,从空闲地址写控制模块接收第五写使能,如果第三写请求有效,第五写使能无效,生成第四写请求,将第四写请求发送到存储器写控制模块;否则,不生成第四写请求。
[0051]存储器写控制模块与第二写请求信号线、第二写地址信号线、当前空闲地址信号线、第三写地址信号线、写入的空闲地址信号线、存储器写请求生成模块、双端口 RA相连,从存储器写请求生成模块接收第四写请求;如果第二写请求有效,第四写请求无效,生成存储器写请求,将第二写地址赋给存储器写地址,将当前空闲地址赋给存储器写数据,将存储器写请求、存储器写地址、存储器写数据发送到双端口 RA ;如果第二写请求无效,第四写请求有效,生成存储器写请求,将第三写地址赋给存储器写地址,将写入的空闲地址赋给存储器写数据,将存储器写请求、存储器写地址、存储器写数据发送到双端口 RA ;否则,不生成存储器写请求。
[0052]存储器读控制模块与第二读请求信号线、第一读地址信号线、第三读地址信号线、存储器读请求生成模块、双端口 RA相连,从存储器读请求生成模块接收第四读请求,如果第二读请求有效,第四读请求无效,生成存储器读请求,将第一读地址赋给存储器读地址,将存储器读请求、存储器读地址发送到双端口 RA ;如果第二读请求无效,第四读请求有效,生成存储器读请求,将第三读地址赋给存储器读地址,将存储器读请求、存储器读地址发送到双端口 RA ;否则,不生成存储器读请求。
[0053]双端口 RA具有一个读端口和一个写端口,与存储器写控制模块、存储器读控制模块、存储器输出数据选择模块相连;双端口 RA从存储器写控制模块接收存储器写请求、存储器写地址、存储器写数据,如果存储器写请求有效,将存储器写数据写入到存储器写地址指向的双端口 RA存储空间;从存储器读控制模块接收存储器读请求、存储器读地址,如果存储器读请求有效,从存储器读地址指向的双端口 RA存储空间读出数据作为存储器输出数据,发送到存储器输出数据选择模块。
[0054]存储器输出数据选择模块与第二读请求信号线、存储器读请求生成模块、双端口RA、空闲地址选择模块、下一个数据地址信号线相连;从存储器读请求生成模块接收第四读请求,从双端口 RA接收存储器输出数据,如果第二读请求有效,第四读请求无效,将存储器输出数据赋给下一个数据地址;如果第二读请求无效,第四读请求有效,将存储器输出数据赋给第二空闲地址,将第二空闲地址发送到空闲地址选择模块。
[0055]空闲地址选择模块与存储器读请求生成模块、存储器输出数据选择模块、空闲地址交换寄存器、第二与门、下一个空闲地址信号线相连;从存储器读请求生成模块接收第四读请求,从存储器输出数据选择模块接收第二空闲地址,从第二与门接收第五读请求,从空闲地址交换寄存器接收第一空闲地址;如果第四读请求有效,第五读请求无效,将第二空闲地址赋给下一个空闲地址;如果第四读请求无效,第五读请求有效,将第一空闲地址赋给下一个空闲地址。
【权利要求】
1.一种基于双端口寄存器阵列的四端口存储器,采用基于双端口寄存器阵列的四端口存储器实现的地址缓冲区提供4个访问端口:第一写端口、第二写端口、第一读端口和第二读端口 ;第一写端口的输入信号包括:第二写请求、第二写地址、当前空闲地址,当第二写请求有效时,将当前空闲地址写入第二写地址指向的地址缓冲区空间;第一读端口的输入信号包括:第二读请求,第一读地址,输出信号包括:下一个数据地址,如果第二读请求有效,从第一读地址指向的地址缓冲区空间读出下一个数据地址;第二写端口的输入信号包括:第三写请求、第三写地址、写入的空闲地址,如果第三写请求有效,将写入的空闲地址写到第三写地址指向的地址缓冲区空间;第二读端口的输入信号包括:第三读请求,第三读地址,输出信号包括:下一个空闲地址,如果第三读请求有效,从第三读地址指向的地址缓冲区空间读出下一个空闲地址;其特征在于基于双端口寄存器阵列的四端口存储器是在双端口寄存器阵列即双端口 RA上增加空闲地址计数器、空闲地址写控制模块、空闲地址读控制模块、存储器读请求生成模块、存储器写请求生成模块、第一与门、第二与门、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器、空闲地址选择模块、存储器写控制模块、存储器读控制模块、存储器输出数据选择模块形成: 空闲地址计数器与第三写请求信号线、第三读请求信号线、空闲地址读控制模块、空闲地址写控制模块相连;接收第三写请求和第三读请求,如果第三写请求有效,第三读请求无效,空闲地址计数器将空闲地址计数值加一;如果第三写请求无效,第三读请求有效,空闲地址计数器将空闲地址计数值减一;否则,空闲地址计数值保持不变;将空闲地址计数值发送给空闲地址读控制模块和空闲地址写控制模块; 空闲地址读控制模块与第三写请求信号线、空闲地址计数器、存储器读请求生成模块、第二与门相连;接收第三写请求和空闲地址计数值,如果第三写请求有效或者空闲地址计数值为1,生成第五读使能发送到存储器读请求生成模块和第二与门;否则,不生成第五读使能; 空闲地址写控制模块与第三读请求信号线、空闲地址计数器、存储器写请求生成模块、第一与门相连;接收第三读请求和空闲地址计数值,如果空闲地址计数值为O或者第三读请求有效,生成第五写使能发送到存储器写请求生成模块和第一与门;否则,不生成第五写使能; 第一与门与第三写请求信号线、空闲地址写控制模块、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器相连;从空闲地址写控制模块接收第五写使能,与第三写请求做逻辑与操作,即第五写使能和第三写请求同时有效时,生成第五写请求,将第五写请求发送给空闲地址交换寄存器读写控制模块和空闲地址交换寄存器; 第二与门与第三读请求、空闲地址读控制模块、空闲地址交换寄存器读写控制模块、空闲地址交换寄存器、空闲地址选择模块相连;从空闲地址读控制模块接收第五读使能,将第五读使能与第三读请求做逻辑与操作,即第五读使能和第三读请求同时有效时,生成第五读请求,将第五读请求发送给空闲地址交换寄存器读写控制模块、空闲地址交换寄存器和空闲地址选择模块; 空闲地址交换寄存器读写控制模块与第一与门、第二与门、空闲地址交换寄存器相连;从第一与门接收第五写请求,从第二与门接收第五读请求,如果第五写请求有效,将第五写地址加一;如果第五读请求有效,将第五读地址加一;将生成的第五写地址和第五读地址发送到空闲地址交换寄存器; 空闲地址交换寄存器由两个寄存器组成,与写入的空闲地址信号线、第一与门、第二与门、空闲地址交换寄存器读写控制模块、空闲地址选择模块相连;从第一与门接收第五写请求,从空闲地址交换寄存器读写控制模块接收第五写地址,如果第五写请求有效,将从写入的空闲地址信号线获取的写入的空闲地址保存到第五写地址指向的空闲地址交换寄存器中;从第二与门接收第五读请求,从空闲地址交换寄存器读写控制模块接收第五读地址,如果第五读请求有效,从第五读地址指向的空闲地址交换寄存器读出空闲地址作为第一空闲地址,将第一空闲地址发送到空闲地址选择模块; 存储器读请求生成模块与第三读请求信号线、空闲地址读控制模块、存储器读控制模块、存储器输出数据选择模块、空闲地址选择模块相连,从空闲地址读控制模块接收第五读使能,如果第三读请求有效,第五读使能无效,生成第四读请求,将第四读请求发送到存储器读控制模块、存储器输出数据选择模块和空闲地址选择模块;否则,不生成第四读请求;存储器写请求生成模块与第三写请求信号线、空闲地址写控制模块、存储器写控制模块相连,从空闲地址写控制模块接收第五写使能,如果第三写请求有效,第五写使能无效,生成第四写请求,将第四写请求发送到存储器写控制模块;否则,不生成第四写请求; 存储器写控制模块与第二写请求信号线、第二写地址信号线、当前空闲地址信号线、第三写地址信号线、写入的空闲地址信号线、存储器写请求生成模块、双端口 RA相连,从存储器写请求生成模块接收第四写请求;如果第二写请求有效,第四写请求无效,生成存储器写请求,将第二写地址赋给存储器写地址,将当前空闲地址赋给存储器写数据,将存储器写请求、存储器写地址、存储器写数据发送到双端口 RA ;如果第二写请求无效,第四写请求有效,生成存储器写请求,将第三写地址赋给存储器写地址,将写入的空闲地址赋给存储器写数据,将存储器写请求、存储器写地址、存储器写数据发送到双端口 RA;否则,不生成存储器写请求; 存储器读控制模块与第二读请求信号线、第一读地址信号线、第三读地址信号线、存储器读请求生成模块、双端口 RA相连,从存储器读请求生成模块接收第四读请求,如果第二读请求有效,第四读请求无效,生成存储器读请求,将第一读地址赋给存储器读地址,将存储器读请求、存储器读地址发送到双端口 RA ;如果第二读请求无效,第四读请求有效,生成存储器读请求,将第三读地址赋给存储器读地址,将存储器读请求、存储器读地址发送到双端口 RA ;否则,不生成存储器读请求; 双端口 RA具有一个读端口和一个写端口,与存储器写控制模块、存储器读控制模块、存储器输出数据选择模块相连;双端口 RA从存储器写控制模块接收存储器写请求、存储器写地址、存储器写数据,如果存储器写请求有效,将存储器写数据写入到存储器写地址指向的双端口 RA存储空间;从存储器读控制模块接收存储器读请求、存储器读地址,如果存储器读请求有效,从存储器读地址指向的双端口 RA存储空间读出数据作为存储器输出数据,发送到存储器输出数据选择模块; 存储器输出数据选择模块与第二读请求信号线、存储器读请求生成模块、双端口 RA、空闲地址选择模块、下一个数据地址信号线相连;从存储器读请求生成模块接收第四读请求,从双端口 RA接收存储器输出数据,如果第二读请求有效,第四读请求无效,将存储器输出数据赋给下一个数据地址;如果第二读请求无效,第四读请求有效,将存储器输出数据赋给第二空闲地址,将第二空闲地址发送到空闲地址选择模块; 空闲地址选择模块与存储器读请求生成模块、存储器输出数据选择模块、空闲地址交换寄存器、第二与门、下一个空闲地址信号线相连;从存储器读请求生成模块接收第四读请求,从存储器输出数据选择模块接收第二空闲地址,从第二与门接收第五读请求,从空闲地址交换寄存器接收第一空闲地址;如果第四读请求有效,第五读请求无效,将第二空闲地址赋给下一个空闲地址;如果第四读请求无效,第五读请求有效,将第一空闲地址赋给下一个空闲地址。
2.如权利要求1所述的基于双端口寄存器阵列的四端口存储器,其特征在于所述第一与门、第二与门均为二输入与门。
【文档编号】G06F12/08GK104407992SQ201410782798
【公开日】2015年3月11日 申请日期:2014年12月17日 优先权日:2014年12月17日
【发明者】张鹤颖, 徐炜遐, 王克非, 肖立权, 庞征斌, 陆平静, 戴艺, 刘路, 张磊, 曹继军, 徐佳庆, 肖灿文, 沈胜宇, 王永庆, 高蕾 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1