CN106302260B - 4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统 - Google Patents
4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统 Download PDFInfo
- Publication number
- CN106302260B CN106302260B CN201610605130.7A CN201610605130A CN106302260B CN 106302260 B CN106302260 B CN 106302260B CN 201610605130 A CN201610605130 A CN 201610605130A CN 106302260 B CN106302260 B CN 106302260B
- Authority
- CN
- China
- Prior art keywords
- data
- write
- read
- ports
- read ports
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/103—Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/06—Clock generators producing several clock signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9036—Common buffer combined with individual queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Static Random-Access Memory (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供的一种4个读端口4个写端口全共享报文的数据缓存处理方法及处理系统,所述方法包括:将2个2个读端口1个写端口存储器并行拼装为一个Bank存储单元;直接基于4个所述Bank存储单元形成4个读端口4个写端口存储器的硬件框架;一个时钟周期下,当数据通过4个写端口写入到4个读端口4个写端口存储器时,若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则将数据分别写入不同Bank中,同时,对写入的数据进行复制,分别写入至每个Bank的2个2个读端口1个写端口存储器中;若数据的大小大于所述2个读端口1个写端口存储器的位宽,则等待第二个时钟周期,当第二个时钟周期到来时,将数据分别写入不同Bank中,同时,将每个写入数据的高低位分别写入至每个Bank存储单元的2个2个读端口1个写端口存储器中。本发明具有更低的功耗,更快的处理速度,以及节省更多的资源或面积,实现简单。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统。
背景技术
在设计以太网交换芯片时,通常需要使用大容量的多端口存储器,例如2 读1写(同时支持2个读端口和1个写端口)存储器、1读2写存储器、2读2写存储器或者更多端口的存储器。
通常情况下,供应商一般只提供1个读或者写存储器、1读1写存储器和2 个读或者写存储器,如此,设计者仅能基于上述基本存储器单元构建多个端口的存储器。
报文缓存是一类特殊的多端口存储器,其写入是可控的,亦即,顺序写入,但是读出却是随机的。用户的其中一种需求中,单向交换容量为2.4Tbps的以太网交换芯片,为了做到线速写入和读出,每个最小报文(64字节)花费的时间只有 280ps,需要核心频率高达3.571GHz,该种需求目前在现有的半导体工艺上无法实现。为了实现上述目标,通常的做法是,把整个芯片分割成多个独立的报文转发和处理单元并行进行处理,报文转发和处理单元的英文名称为Slice,例如分割成4个Slice并行处理,每个Slice需要处理的数据带宽就降低,对核心频率的要求也会降低到原核心频率的1/4。相应的,实现该方案过程中,对于报文缓存需要同时提供8个端口供4个Slice访问,其中4个是读端口,4个是写端口。
一般的,在SRAM的端口类型为1个读或者写,2个读或者写,以及1写或者2读的基础上,通过定制设计,例如:修改存储单元的办法,以及算法设计来增加SRAM的端口数量。
定制设计的周期一般比较长,需要做spice仿真,还要提供存储器编译器,以生成不同大小和类型的SRAM,对于供应商来说,一般需要6~9个月的时间,才能提供一个新型的SRAM的类型,而且这样的定制设计是与具体的工艺(例如 GlobalFoundries 14nm,28nm还是TSMC的28nm,16nm)强相关的,工艺一旦改变,定制设计的SRAM库需要重新设计。
算法设计是基于厂家提供的现成的SRAM类型,通过算法来实现多端口存储器,最大的好处是避免定制设计,缩短时间,同时设计与厂家库无关,可以很容易的在不同的厂家库之间移植。
如图1所示,一种通过算法设计的方式,设计一个支持4个slice访问的 4个读端口4个写端口的存储架构,该实施方式中,采用1R1W的SRAM2D 设计大容量的2R2W的SRAM,逻辑上总共需要4块65536深度2304宽度大小的SRAM2D,由于单个物理SRAM2D的容量无法满足上述需求,需要把1块65536深度2304宽度的逻辑SRAM切割成多块物理SRAM,例如:可以切割成32块16384深度288宽度的物理块,这样总共需要32x4=128块物理块;以上述2R2W SRAM为基本单元,搭建18M字节大小的4个读端口4个写端口SRAM。
结合图2所示,逻辑上总共需要4块65536深度2304宽度大小的2R2W 的SRAM,即:需要SRAM2D(16384深度288宽度)的物理块的个数为512 块;根据现有数据可知:14nm工艺条件下,一块16384深度288宽度大小 SRAM2D物理块的大小是0.4165平方厘米,功耗是0.108Watts(核心电压=0.9V,结温=125摄氏度,工艺条件是最快);上述采用厂家库提供的基本单元SRAM复制多份拷贝,构建更多端口SRAM的方法,虽然设计原理上显而易见,但是面积开销非常大,以上述方案为例,单单18M字节4个读端口 4个写端口SRAM的面积就占用了213.248平方厘米,总的功耗为 55.296Watts,这里还没有考虑到插入Decap和DFT以及布局布线的开销,通过此种算法设计方式设计出的4个读端口4个写端口SRAM,其占用面积以及总功耗均十分庞大;
如图3所示,现有技术中另外一种算法设计方式,以2R2W的SRAM为基本单元,通过空间上的分割实现4个读端口4个写端口SRAM的报文缓存,每个X?Y?是一个2R2W的SRAM逻辑块,大小是4.5M字节,总共有4 块这样的SRAM逻辑块,构成4个读端口4个写端口SRAM,大小是18M 字节(4.5Mx4=18M);
其中,S0、S1、S2、S3代表4个slice,每个slice举例来说包含有6个 100GE端口,从slice0或者slice1输入去往slice0或者slice1的报文存入X0Y0,从slice0或者slice1输入去往slice2或者slice3的报文存入X1Y0,从slice2 或者slice3输入去往slice0或者slice1的报文存入X0Y1,从slice2或者slice3 输入去往slice2或者slice3的报文存入X1Y1;对于组播报文,从Slice0或者 Slice1来的组播报文同时存入X0Y0和X1Y0中;进一步的,读取报文的时候,slice0或者slice1将从X0Y0或者X0Y1中读取报文,slice2或者slice3将从X1Y0或者X1Y1中读取报文。
结合图4所示,现有技术中算法设计的每一个X1Y1的架构图,一个X?Y?逻辑上需要4块16384深度2304宽度的SRAM,每一个逻辑上16384深度和2304 宽度的SRAM可以切割成8块16384深度和288宽度的物理SRAM2D;14nm 集成电路工艺下,这样一个18M字节的报文缓存总共需要4x4x8=128块16384 深度和288宽度的物理SRAM2D,总的面积为51.312平方厘米,总的功耗是 13.824Watts(核心电压=0.9V,结温=125摄氏度,工艺条件是最快)
上述第二种算法设计的面积和功耗开销只有第一种算法设计的1/4,然而,该算法设计无法实现4个2R2W的SRAM逻辑块在所有的4个slice之间共享,每个Slice输入端口能够占用的最大报文缓存只有9M字节,这样的报文缓存不是真正意义上的共享缓存。
发明内容
为解决上述技术问题,本发明的目的在于提供一种4个读端口4个写端口全共享报文的数据缓存处理方法及处理系统。
为实现上述发明目的之一,本发明一实施方式提供的4个读端口4个写端口全共享报文的数据缓存处理方法,所述方法还包括:将2个2个读端口1个写端口存储器并行拼装为一个Bank存储单元;
直接基于4个所述Bank存储单元形成4个读端口4个写端口存储器的硬件框架;
一个时钟周期下,当数据通过4个写端口写入到4个读端口4个写端口存储器时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则将数据分别写入不同Bank中,同时,对写入的数据进行复制,分别写入至每个Bank 的2个2个读端口1个写端口存储器中;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则等待第二个时钟周期,当第二个时钟周期到来时,将数据分别写入不同Bank中,同时,将每个写入数据的高低位分别写入至每个Bank存储单元的2个2个读端口1个写端口存储器中。
作为本发明一实施方式的进一步改进,所述方法还包括:
一个时钟周期下,当数据从4个读端口4个写端口存储器读出时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则选择4 个读端口4个写端口的存储器中匹配的读端口直接读出数据;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则等待第二个时钟周期,当第二个时钟周期到来时,选择4个读端口4个写端口存储器中匹配的读端口直接读出数据。
作为本发明一实施方式的进一步改进,所述方法还包括:
当数据写入所述4个读端口4个写端口存储器时,根据每个Bank的剩余空闲资源选择数据的写入位置。
作为本发明一实施方式的进一步改进,所述方法具体包括:
为每个Bank对应建立一空闲缓存资源池,所述空闲缓存资源池用于存储当前对应Bank的剩余的空闲指针,当数据发出写入所述4个读端口4个写端口存储器请求时,比较各个空闲缓存资源池的深度,
若存在一个具有最大深度的空闲缓存资源池,则直接将数据写入到该最大深度的空闲缓存资源池对应的Bank中;
若存在2个以上具有相同的最大深度的空闲缓存资源池,则将该数据随机写入到其中一个具有最大深度的空闲缓存资源池对应的Bank中。
作为本发明一实施方式的进一步改进,所述方法还包括:
根据2个读端口1个写端口存储器的深度和宽度选择2m+1块具有相同深度及宽度的SRAM2P存储器构建2个读端口1个写端口存储器的硬件框架,m为正整数;
每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;
当数据写入2个读端口1个写端口存储器和/或从所述2个读端口1个写端口存储器读出时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
为了实现上述发明目的之一,本发明一实施方式提供一种4个读端口4个写端口全共享报文的数据缓存处理系统,所述系统包括:数据构建模块,数据处理模块;
所述数据构建模块具体用于:将2个2个读端口1个写端口存储器并行拼装为一个Bank存储单元;
直接基于4个所述Bank存储单元形成4个读端口4个写端口存储器的硬件框架;
所述数据处理模块具体用于:当确定一个时钟周期下,数据通过4个写端口写入到4个读端口4个写端口存储器时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则将数据分别写入不同Bank中,同时,对写入的数据进行复制,分别写入至每个Bank 的2个2个读端口1个写端口存储器中;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则等待第二个时钟周期,当第二个时钟周期到来时,将数据分别写入不同Bank中,同时,将每个写入数据的高低位分别写入至每个Bank存储单元的2个2个读端口1个写端口存储器中。
作为本发明一实施方式的进一步改进,所述数据处理模块还用于:
当确定一个时钟周期下,数据从4个读端口4个写端口存储器读出时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则选择4 个读端口4个写端口的存储器中匹配的读端口直接读出数据;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则等待第二个时钟周期,当第二个时钟周期到来时,选择4个读端口4个写端口存储器中匹配的读端口直接读出数据。
作为本发明一实施方式的进一步改进,所述数据处理模块还用于:
当确认数据写入所述4个读端口4个写端口存储器时,根据每个Bank的剩余空闲资源选择数据的写入位置。
作为本发明一实施方式的进一步改进,所述数据处理模块还用于:
为每个Bank对应建立一空闲缓存资源池,所述空闲缓存资源池用于存储当前对应Bank的剩余的空闲指针,当数据发出写入所述4个读端口4个写端口存储器请求时,比较各个空闲缓存资源池的深度,
若存在一个具有最大深度的空闲缓存资源池,则直接将数据写入到该最大深度的空闲缓存资源池对应的Bank中;
若存在2个以上具有相同的最大深度的空闲缓存资源池,则将该数据随机写入到其中一个具有最大深度的空闲缓存资源池对应的Bank中。
作为本发明一实施方式的进一步改进,所述数据构建模块还用于:根据2 个读端口1个写端口存储器的深度和宽度选择2m+1块具有相同深度及宽度的 SRAM2P存储器构建2个读端口1个写端口存储器的硬件框架,m为正整数;
每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;
当数据写入2个读端口1个写端口存储器和/或从所述2个读端口1个写端口存储器读出时,所述数据处理模块还用于:根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
与现有技术相比,本发明的4个读端口4个写端口全共享报文的数据缓存处理方法及处理系统,基于现有的SRAM类型,通过算法的方式搭建更多端口的SRAM,仅仅用最小的代价便可以最大限度的支持多端口SRAM;其实现过程中,避免采用复杂的控制逻辑和额外的多端口SRAM或者寄存器阵列资源,利用报文缓存的特殊性,通过空间分割和时间分割,仅需要简单的异或运算就可实现4个读端口4个写端口的报文缓存,同时,本发明的4个读端口4个写端口存储器,其所有的存储资源对于4个Slice或者说对于任意一个输入/输出端口而言都是可见的,所有的存储资源对于任意端口之间是完全共享的,本发明具有更低的功耗,更快的处理速度,以及节省更多的资源或面积,实现简单,节约人力及物质成本。
附图说明
图1是现有技术中,基于1R1W存储器采用算法设计实现的2R2W存储器的报文缓存逻辑单元示意图;
图2是现有技术中,基于2R2W存储器算法定制设计实现的4个读端口 4个写端口存储器的报文缓存逻辑单元示意图;
图3是现有技术中,基于2R2W存储器采用另一种算法设计实现的4个读端口4个写端口存储器的报文缓存架构示意图;
图4是图3中其中一个X?Y?的报文缓存逻辑单元示意图;
图5是本发明一实施方式中4个读端口4个写端口全共享报文的数据缓存处理方法的流程示意图;
图6是本发明第一实施方式中,通过定制设计形成的2个读端口1个写端口存储器的数字电路结构示意图;
图7是本发明第二实施方式的,通过定制设计形成的2个读端口1个写端口存储器读写分时操作示意图;
图8是本发明第三实施方式中,采用算法设计形成的2个读端口1个写端口存储器的报文缓存逻辑单元示意图;
图9a是本发明第四实施方式中,采用算法设计形成的2个读端口1个写端口存储器的报文缓存逻辑单元示意图;
图9b是对应图9 a存储器块编号映射表的结构示意图;
图10是本发明第五实施方式中,提供的2个读端口1个写端口存储器的数据处理方法的流程示意图;
图11是本发明第五实施方式中,提供的2个读端口1个写端口存储器的报文缓存逻辑单元示意图;
图12是本发明是一具体实施方式中,4个Bank的报文缓存架构示意图;
图13是本发明是一具体实施方式中,4个读端口4个写端口存储器的报文缓存架构示意图;
图14是本发明一实施方式中提供的4个读端口4个写端口全共享报文的数据缓存处理系统的模块示意图。
具体实施方式
以下将结合附图所示的各实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
如图5所示,本发明一实施方式提供的4个读端口4个写端口全共享报文的数据缓存处理方法,所述方法包括:
将2个2个读端口1个写端口存储器并行拼装为一个Bank存储单元;
直接基于4个所述Bank存储单元形成4个读端口4个写端口存储器的硬件框架;
一个时钟周期下,当数据通过4个写端口写入到4个读端口4个写端口存储器时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则将数据分别写入不同Bank中,同时,对写入的数据进行复制,分别写入至每个Bank 的2个2个读端口1个写端口存储器中;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则等待第二个时钟周期,当第二个时钟周期到来时,将数据分别写入不同Bank中,同时,将每个写入数据的高低位分别写入至每个Bank存储单元的2个2个读端口1个写端口存储器中。
一个时钟周期下,当数据从4个读端口4个写端口存储器读出时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则选择4个读端口4个写端口的存储器中匹配的读端口直接读出数据;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则等待第二个时钟周期,当第二个时钟周期到来时,选择4个读端口4个写端口存储器中匹配的读端口直接读出数据。
所述4个读端口4个写端口存储器,即同时支持4读4写的存储器。
本发明优选实施方式中,建立所述2个读端口1个写端口存储器有五种方法。
如图6所示,第一种实施方式中,在6T SRAM的基础,把一根字线分割成左右两个,这样可以做成2个读端口同时操作或者1个写端口,这样从左边MOS管读出的数据和右边MOS管读出的数据可以同时进行,需要注意的是,右边MOS管读出的数据需要反相之后才可以用,同时为了不影响数据读取的速度,读出的感应放大器需要用伪差分放大器。这样,6TSRAM面积不变,唯一的代价是增加一倍的字线,从而保证总体的存储密度基本不变。
如图7所示,第二种实施方式中,通过定制设计形成的2个读端口1个写端口存储器读写操作流程示意图;
通过定制设计可以增加SRAM的端口,把一个字线切割成2个字线,将读端口增加到2个;还可以通过分时操作的技术,即读操作在时钟的上升沿进行,而写操作在时钟的下降沿完成,这样也可以把一个基本的1读或者1 写的SRAM扩展成1读和1写的SRAM类型,即1个读和1个写操作可以同时进行,存储密度基本不变。
如图8所示,第三种实施方式中本发明一实施方式中采用算法设计形成的2个读端口1个写端口存储器读写操作流程示意图;
本实施方式中,以SRAM2P为基础构建2个读端口1个写端口的SRAM 为例,所述SRAM2P是一种能够支持1读和1读/写的SRAM类型,即可以对SRAM2P同时进行2个读操作,或者1个读和1个写操作。
本实施方式中,通过复制一份SRAM以SRAM2P为基础构建2个读端口1个写端口的SRAM;该示例中,右边的SRAM2P_1是左边SRAM2P_0 的拷贝,具体操作的时候,把两块SRAM2P作为1读和1写存储器来使用;其中,写入数据时,同时往左右两个SRAM2P写入数据,读出数据时,A固定从SRAM2P_0读取,数据B固定从SRAM2P_1读取,这样就可以实现1 个写操作和2个读操作并发进行。
如图9a、9b所示,第四种实施方式中,为另一实施方式中采用算法设计形成的2个读端口1个写端口存储器读写操作流程示意图;
该实施方式中,把逻辑上一整块的16384深度的SRAM分割成逻辑上4 块4096深度的SRAM2P,编号依次为为0、1、2、3,再额外增加一块4096 深度的SRAM,编号为4,作为解决读写冲突用,对于读数据A和读数据B,永远保证这2个读操作可以并发进行,当2个读操作的地址是处于不同的 SRAM2P中时,因为任何一个SRAM2P都可以配置成1R1W类型,所以读写不会有冲突;当2个读操作的地址处于同一块SRAM2P中时,例如:均处于SRAM2P_0中,由于同一个SRAM2P最多只能提供2个端口同时操作,此时,其端口被2个读操作占用,如果恰好有一个写操作要写入SRAM2P_0,那么这时就把这个数据写入存储器第4块SRAM2P_4中。
该种实施方式中,需要有一个存储器块映射表记录哪一个存储器块存放有效数据,如图9b所示,存储器块映射表的深度和一个存储器块的深度相同,即都是4096个深度,每一个条目中在初始化后依次存放每个存储器块的编号,从0到4,图9a示例中,由于SRAM2P_0在写入数据的时候发生读写冲突,数据实际上是写入到SRAM2P_4中,此时,读操作同时会读取存储器映射表中对应的内容,原始内容为{0,1,2,3,4},修改之后变成{4, 1,2,3,0},第一个块编号和第4个块编号对调,表示数据实际写入到 SRAM2P_4中,同时SRAM2P_0变成了备份条目。
当读取数据的时候,需要首先读对应地址的存储器块编号映射表,查看有效数据存放在哪一个存储器块中,例如当要读取地址5123的数据,那么首先读取存储块编号映射表地址1027(5123-4096=1027)存放的内容,根据第二列的数字编号去读取对应存储块的地址1027的内容。
对于写数据操作,需要存储器块编号映射表提供1读和1写端口,对于 2个读数据操作,需要存储器块编号映射表提供2个读端口,这样总共需要存储器块编号映射表提供3个读端口和1个写端口,而且这4个访问操作必须是同时进行。
如图10所示,第五种实施方式,即本发明的优选实施方式中,2个读端口1个写端口存储器的构建方法包括:
根据所述2个读端口1个写端口存储器的深度和宽度选择2m+1块具有相同深度及宽度的SRAM2P存储器构建2个读端口1个写端口存储器的硬件框架,m为正整数;
多个所述SRAM2P存储器按照排列顺序依次为SRAM2P(0)、SRAM2P (1)……、SRAM2P(2m),每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;
该发明的优选实施方式中,每块SRAM2P存储器的深度与宽度的乘积=(2 个读端口1个写端口存储器的深度与宽度乘积)/2m。
以下为了描述方便,对m取值为2、2个读端口1个写端口存储器为16384 深度、128宽度的SRAM存储器进行详细描述。
则在该具体示例中,多个所述SRAM2P存储器按照排列顺序依次为 SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P(3)、SRAM2P (4),其中,SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P (3)为主存储器,SRAM2P(4)为辅助存储器,每个SRAM2P存储器的深度和宽度分别为4096和128,相应的,每个SRAM2P存储器均具有4096个指针地址;如果对每个SRAM2P存储器的指针地址均独立标识,则每个 SRAM2P存储器的指针地址均为0~4095,若将全部的主存储器的地址依次排列,则全部的指针地址范围为:0~16383。该示例中,SRAM2P(4)用于解决端口冲突,且在该实施方式中,无需增加存储器块编号映射表即可以满足需求。
进一步的,在上述硬件框架基础上,所述方法还包括:
当数据写入2个读端口1个写端口存储器和/或从所述2个读端口1个写端口存储器读出时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
本发明优选实施方式中,其数据写入过程如下:
获取当前数据的写入地址为W(x,y),x表示写入数据所处于的SRAM2P 存储器的排列位置,0≤x<2m,y表示写入数据所处于的SRAM2P存储器中的具体的指针地址,0≤y≤M;
获取与写入地址具有相同指针地址的其余主存储器中的数据,将其同时与当前写入数据做异或运算,并将异或运算结果写入到辅助存储器的相同指针地址中。
结合图11所示,本发明一具体示例中,本发明一具体示例中,将数据 128比特全“1”写入到SRAM2P(0)中的指针地址“5”,即当前数据的写入地址为W(0,5),在写入数据过程中,除了直接将数据128比特全“1”写入到指定位置SRAM2P(0)中的指针地址“5”外,同时,需要读取其余主存储器在相同指针地址的数据,假设从SRAM2P(1)中的指针地址“5”读出的数据为 128比特全“1”,从SRAM2P(2)中的指针地址“5”读出的数据为128比特全“0”,从SRAM2P(3)中的指针地址“5”读出的数据为128比特全“1”,则将数据128比特全“1”、128比特全“0”、128比特全“1”、128比特全“1”做异或运算,并将其异或运算的结果“1”同时写入到SRAM2P(4)中的指针地址“5”。如此,以保证2个读端口1个写端口存储器的2个读端口和1个写端口同时操作。
进一步的,本发明优选实施方式中,其数据读出过程如下:
若当前两个读出数据的读出地址处于相同的SRAM2P存储器中,则
分别获取两个读出数据的读出地址为R1(x1,y1),R2(x2,y2),x1、y1均表示读出数据所处于的SRAM2P存储器的排列位置,0≤x1<2m,0≤x2<2m, y1、y2均表示读出数据所处于的SRAM2P存储器中的具体的指针地址,0≤y1≤M, 0≤y2≤M;
任选其中一个读出地址R1(x1,y1)中存储的读出数据,从当前的指定读出地址中直接读出当前存储的数据;
获取与另一个读出地址具有相同指针地址的其余主存储器、以及辅助存储器中存储的数据,并对其做异或运算,将异或运算结果作为另一个读出地址的存储数据进行输出。
接续图11所示,本发明一具体示例中,读出的数据为2个,其指针地址分别为SRAM2P(0)中的指针地址“2”,以及SRAM2P(0)中的指针地址“5”,即当前数据的读出地址为R(0,2)和R(0,5);
在从2个读端口1个写端口存储器读出数据过程中,由于每一个SRAM2P 只能保证1个读端口和1个写端口同时操作,读端口直接从SRAM2P(0) 中的指针地址“2”中读取数据,但是另一读端口的请求无法满足。相应的,本发明采用异或运算的方式解决两个读端口同时读出数据的问题。
对于R(0,5)中的数据,分别读取其他三个主存储器以及辅助存储器的指针地址“5”的数据并对其做异或运算,接续上例,从SRAM2P(1)中的指针地址“5”读出的数据为“1”,从SRAM2P(2)中的指针地址“5”读出的数据为“0”,从SRAM2P(3)中的指针地址“5”读出的数据为128比特全“1”,从 SRAM2P(4)中的指针地址“5”读出的数据为128比特全“1”,将数据128比特全“1”、128比特全“1”、128比特全“0”、128比特全“1”做异或运算,得到128比特“1”,并将其异或运算的结果128比特全“1”作为SRAM2P(0)中的指针地址“5”的存储数据进行输出,通过上述过程得到的数据,其结果与 SRAM2P(0)中的指针地址“5”中存储的数据完全一致,如此,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
本发明一实施方式中,若当前两个读出数据的读出地址处于不同的 SRAM2P存储器中,则直接获取不同SRAM2P存储器中对应指针地址的数据分别独立进行输出。
接续图11所示,本发明一具体示例中,读出的数据为2个,其指针地址分别为SRAM2P(0)中的指针地址“5”,以及SRAM2P(1)中的指针地址“10”,即当前数据的读出地址为R(0,5)和R(1,10);
在从2个读端口1个写端口存储器读出数据过程中,由于每一个SRAM2P 均能保证1个读端口和1个写端口同时操作,故,读出数据过程中,直接从 SRAM2P(0)中的指针地址“5”读取数据,以及直接从SRAM2P(1)中的指针地址“10”读出数据,如此,以保证2个读端口1个写端口存储器的2个读端口和1个写端口同时操作,在此不做详细赘述。
需要说明的是,如果逻辑上把每一个SRAM2P进一步切分,比如切分成 4m个具有相同深度的SRAM2P,那么只需要增加额外1/4m的存储器面积就可以构建上述2个读端口1个写端口类型的SRAM;相应的,物理上SRAM 的块数也增加了近2倍,在实际的布局布线中会占用不少的面积开销;当然,本发明并不以上述具体实施方式为限,其它采用异或运算以扩展存储器端口的方案也包括在本发明的保护范围内,在此不做详细赘述。
结合图12所示,对于本发明的4个读端口4个写端口存储器以2个16384 深度和1152宽度的2个读端口1个写端口类型的SRAM并行拼装成一个 Bank为例做具体介绍,一个Bank的容量大小是4.5M字节,总共有4个bank 组成一个18M字节的4个读端口4个写端口存储器。
该示例中,数据写入4个读端口4个写端口存储器过程中,需要同时支持4个slice的同时写入,假设,每个slice的数据总线位宽是1152bits,同时每个slice支持6个100GE端口线速转发;在数据通道上最差的情况,对于小于等于144字节长度的报文数据,需要核心时钟频率跑到892.9MHz,对于大于144字节长度的报文,需要核心时钟频率跑到909.1MHz。
一个时钟周期下,若写入数据的位宽小于等于144字节,同时,需要满足4个Slice同时写入,才能满足带宽需求;如此,采用空间分割性,通过4 个Slice的写入数据分别写入到4个Bank中,同时,将写于一个Bank中的数据进行复制,并分别写入到一个Bank的左右2个2个读端口1个写端口存储器中,如此,以满足数据的读出请求,以下将会详细描述。
一个时钟周期下,若写入数据的位宽大于144字节,同时,需要满足4 个Slice同时写入,才能满足带宽需求;即:通过每个Slice的数据均需要占用整个Bank;如此,对于每个Slice而言,只需要在2个时钟周期下,采用乒乓操作即可以满足需求,例如:一个时钟周期下,将其中的两个数据分别写入到2个Bank中,第二个周期到来时,将另外两个数据分别写入到2个 Bank中;其中,每个Bank中的两个2个读端口1个写端口存储器,分别对应存储任一个大于144字节的数据的高位和底位,在此不做详细赘述。如此,写入数据不会发生冲突。
其读取过程与写入过程相类似;一个时钟周期下,若读出数据的位宽小于等于144字节,最坏情况下,读出数据存储于同一个Bank中,由于本发明的每个Bank均由2个2个读端口1个写端口存储器拼接形成,而每个2 个读端口1个写端口存储器均可以同时支持两个读出请求,同时,数据写入时,对数据进行拷贝分别存储至同一个Bank的左右2个读端口1个写端口存储器中,故,在该种情况下,也可以满足数据的读出请求。
一个时钟周期下,若读出数据的位宽大于144字节,最坏情况下,读出数据存储于同一个Bank中,与写入过程相类似,仅需要在两个时钟周期下,采用乒乓操作,即一个时钟周期下,从一个Bank的2个2个读端口1个写端口存储器读出两个数据,在第二个时钟周期下,从该相同Bank的2个2 个读端口1个写端口存储器中读出剩余的两个数据,如此,同样可以满足读出请求,在此不做详细赘述。
本发明一优选实施方式中,所述方法还包括:当数据写入所述4个读端口4个写端口存储器时,根据每个Bank的剩余空闲资源选择数据的写入位置。具体的,为每个Bank对应建立一空闲缓存资源池,所述空闲缓存资源池用于存储当前对应Bank的剩余的空闲指针,当数据发出写入所述4个读端口4个写端口存储器请求时,比较各个空闲缓存资源池的深度,
若存在一个具有最大深度的空闲缓存资源池,则直接将数据写入到该最大深度的空闲缓存资源池对应的Bank中;
若存在2个以上具有相同的最大深度的空闲缓存资源池,则将该数据随机写入到其中一个具有最大深度的空闲缓存资源池对应的Bank中。
当然,在本发明的其他实施方式中,也可以设定一定的规则,当具有2 个以上具有相同的最大深度的空闲缓存资源池时,按照各个Bank的排列顺序,按序写入到对应的Bank中,在此不做详细赘述。
结合图13所示,本发明一具体示例中,X0Y0的具体结构与图12所示相同,
其中,S0、S1、S2、S3代表4个slice,每个slice举例来说包含有6个 100GE端口,从slice0、slice1、slice2以及slice3输入分别去往slice0、slice1、 slice2以及slice3的报文均存入X0Y0,进一步的,读取报文的时候,slice0、 slice1、slice2以及slice3均直接从X0Y0中直接读取相应的数据。如此,不同目的slice的端口之间实现缓存共享。而报文写入及读出的具体过程可参照图12的具体说明。
本发明的4个读端口4个写端口存储器,在14nm集成电路工艺下,其逻辑上总共个需要40个4096深度1152宽度的SRAM2P,总共占用面积 22.115平方厘米,总的功耗为13.503Watts(核心电压=0.9V,结温=125摄氏度,工艺条件是最快),同时,不需要复杂的控制逻辑,只需要简单的异或运算就可实现多个读端口的操作;另外,也不需要额外的存储器块映射表和控制逻辑。更进一步的,所有的存储资源对于4个Slice或者说对于任意一个输入/输出端口而言都是可见的,所有的存储资源对于任意端口之间是完全共享的。
结合图14所示,本发明一实施方式提供的4个读端口4个写端口全共享报文的数据缓存处理系统,
所述系统包括:数据构建模块100,数据处理模块200;
所述数据构建模块100具体用于:将2个2个读端口1个写端口存储器并行拼装为一个Bank存储单元;
直接基于4个所述Bank存储单元形成4个读端口4个写端口存储器的硬件框架;
所述数据处理模块200具体用于:当确定一个时钟周期下,数据通过4 个写端口写入到4个读端口4个写端口存储器时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则将数据分别写入不同Bank中,同时,对写入的数据进行复制,分别写入至每个Bank的2个2个读端口1个写端口存储器中;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则等待第二个时钟周期,当第二个时钟周期到来时,将数据分别写入不同Bank中,同时,将每个写入数据的高低位分别写入至每个Bank存储单元的2个2个读端口1个写端口存储器中。
所述数据处理模块200还用于:当确定一个时钟周期下,当数据从4个读端口4个写端口存储器读出时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则选择4 个读端口4个写端口的存储器中匹配的读端口直接读出数据;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则等待第二个时钟周期,当第二个时钟周期到来时,选择4个读端口4个写端口存储器中匹配的读端口直接读出数据。
本发明优选实施方式中,数据构建模块100采用5种方式建立所述2个读端口1个写端口存储器。
如图6所示,第一种实施方式中,在6T SRAM的基础,数据构建模块100 把一根字线分割成左右两个,这样可以做成2个读端口同时操作或者1个写端口,这样从左边MOS管读出的数据和右边MOS管读出的数据可以同时进行,需要注意的是,右边MOS管读出的数据需要反相之后才可以用,同时为了不影响数据读取的速度,读出的感应放大器需要用伪差分放大器。这样, 6T SRAM面积不变,唯一的代价是增加一倍的字线,从而保证总体的存储密度基本不变。
如图7所示,第二种实施方式中,数据构建模块100通过定制设计可以增加SRAM的端口,把一个字线切割成2个字线,将读端口增加到2个;还可以通过分时操作的技术,即读操作在时钟的上升沿进行,而写操作在时钟的下降沿完成,这样也可以把一个基本的1读或者1写的SRAM扩展成1读和1写的SRAM类型,即1个读和1个写操作可以同时进行,存储密度基本不变。
如图8所示,第三种实施方式中,以SRAM2P为基础构建2个读端口1 个写端口的SRAM为例,所述SRAM2P是一种能够支持1读和1读/写的 SRAM类型,即可以对SRAM2P同时进行2个读操作,或者1个读和1个写操作。
本实施方式中,数据构建模块100通过复制一份SRAM以SRAM2P为基础构建2个读端口1个写端口的SRAM;该示例中,右边的SRAM2P_1 是左边SRAM2P_0的拷贝,具体操作的时候,把两块SRAM2P作为1读和1 写存储器来使用;其中,写入数据时,同时往左右两个SRAM2P写入数据,读出数据时,A固定从SRAM2P_0读取,数据B固定从SRAM2P_1读取,这样就可以实现1个写操作和2个读操作并发进行。
如图9a、9b所示,第四种实施方式中,数据构建模块100把逻辑上一整块的16384深度的SRAM分割成逻辑上4块4096深度的SRAM2P,编号依次为为0、1、2、3,再额外增加一块4096深度的SRAM,编号为4,作为解决读写冲突用,对于读数据A和读数据B,永远保证这2个读操作可以并发进行,当2个读操作的地址是处于不同的SRAM2P中时,因为任何一个SRAM2P都可以配置成1R1W类型,所以读写不会有冲突;当2个读操作的地址处于同一块SRAM2P中时,例如:均处于SRAM2P_0中,由于同一个 SRAM2P最多只能提供2个端口同时操作,此时,其端口被2个读操作占用,如果恰好有一个写操作要写入SRAM2P_0,那么这时就把这个数据写入存储器第4块SRAM2P_4中。
该种实施方式中,需要有一个存储器块映射表记录哪一个存储器块存放有效数据,如图9b所示,存储器块映射表的深度和一个存储器块的深度相同,即都是4096个深度,每一个条目中在初始化后依次存放每个存储器块的编号,从0到4,图9a示例中,由于SRAM2P_0在写入数据的时候发生读写冲突,数据实际上是写入到SRAM2P_4中,此时,读操作同时会读取存储器映射表中对应的内容,原始内容为{0,1,2,3,4},修改之后变成{4, 1,2,3,0},第一个块编号和第4个块编号对调,表示数据实际写入到 SRAM2P_4中,同时SRAM2P_0变成了备份条目。
当读取数据的时候,需要首先读对应地址的存储器块编号映射表,查看有效数据存放在哪一个存储器块中,例如当要读取地址5123的数据,那么首先读取存储块编号映射表地址1027(5123-4096=1027)存放的内容,根据第二列的数字编号去读取对应存储块的地址1027的内容。
对于写数据操作,需要存储器块编号映射表提供1读和1写端口,对于 2个读数据操作,需要存储器块编号映射表提供2个读端口,这样总共需要存储器块编号映射表提供3个读端口和1个写端口,而且这4个访问操作必须是同时进行。
如图10所示,第五种实施方式,即本发明的优选实施方式中,数据构建模块100根据所述2个读端口1个写端口存储器的深度和宽度选择2m+1块具有相同深度及宽度的SRAM2P存储器构建2个读端口1个写端口存储器的硬件框架,m为正整数;
多个所述SRAM2P存储器按照排列顺序依次为SRAM2P(0)、SRAM2P (1)……、SRAM2P(2m),每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;
每块SRAM2P存储器的深度与宽度的乘积=(2个读端口1个写端口存储器的深度与宽度乘积)/2m。
以下为了描述方便,对m取值为2、2个读端口1个写端口存储器为16384 深度、128宽度的SRAM存储器进行详细描述。
则在该具体示例中,多个所述SRAM2P存储器按照排列顺序依次为 SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P(3)、SRAM2P (4),其中,SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P (3)为主存储器,SRAM2P(4)为辅助存储器,每个SRAM2P存储器的深度和宽度分别为4096和128,相应的,每个SRAM2P存储器均具有4096个指针地址;如果对每个SRAM2P存储器的指针地址均独立标识,则每个 SRAM2P存储器的指针地址均为0~4095,若将全部的主存储器的地址依次排列,则全部的指针地址范围为:0~16383。该示例中,SRAM2P(4)用于解决端口冲突,且在该实施方式中,无需增加存储器块编号映射表即可以满足需求。
进一步的,在上述硬件框架基础上,当数据写入2个读端口1个写端口存储器和/或从所述2个读端口1个写端口存储器读出时,数据处理模块200 具体用于:根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
本发明优选实施方式中,其数据写入过程如下:
获取当前数据的写入地址为W(x,y),x表示写入数据所处于的SRAM2P 存储器的排列位置,0≤x<2m,y表示写入数据所处于的SRAM2P存储器中的具体的指针地址,0≤y≤M;
获取与写入地址具有相同指针地址的其余主存储器中的数据,将其同时与当前写入数据做异或运算,并将异或运算结果写入到辅助存储器的相同指针地址中。
进一步的,本发明优选实施方式中,数据处理模块200读出数据过程如下:
若当前两个读出数据的读出地址处于相同的SRAM2P存储器中,则
数据处理模块200具体用于:分别获取两个读出数据的读出地址为R1(x1, y1),R2(x2,y2),x1、y1均表示读出数据所处于的SRAM2P存储器的排列位置, 0≤x1<2m,0≤x2<2m,y1、y2均表示读出数据所处于的SRAM2P存储器中的具体的指针地址,0≤y1≤M,0≤y2≤M;
数据处理模块200具体用于:任选其中一个读出地址R1(x1,y1)中存储的读出数据,从当前的指定读出地址中直接读出当前存储的数据;
数据处理模块200具体用于:获取与另一个读出地址具有相同指针地址的其余主存储器、以及辅助存储器中存储的数据,并对其做异或运算,将异或运算结果作为另一个读出地址的存储数据进行输出。
本发明一实施方式中,若当前两个读出数据的读出地址处于不同的 SRAM2P存储器中,数据处理模块200则直接获取不同SRAM2P存储器中对应指针地址的数据分别独立进行输出。
需要说明的是,如果逻辑上把每一个SRAM2P进一步切分,比如切分成 4m个具有相同深度的SRAM2P,那么只需要增加额外1/4m的存储器面积就可以构建上述2个读端口1个写端口类型的SRAM;相应的,物理上SRAM 的块数也增加了近2倍,在实际的布局布线中会占用不少的面积开销;当然,本发明并不以上述具体实施方式为限,其它采用异或运算以扩展存储器端口的方案也包括在本发明的保护范围内,在此不做详细赘述。
本发明一优选实施方式中,所述数据处理模块200还用于:当数据写入所述4个读端口4个写端口存储器时,根据每个Bank的剩余空闲资源选择数据的写入位置。具体的,所述数据处理模块200还用于:为每个Bank对应建立一空闲缓存资源池,所述空闲缓存资源池用于存储当前对应Bank的剩余的空闲指针,当数据发出写入所述4个读端口4个写端口存储器请求时,比较各个空闲缓存资源池的深度,
若存在一个具有最大深度的空闲缓存资源池,则直接将数据写入到该最大深度的空闲缓存资源池对应的Bank中;
若存在2个以上具有相同的最大深度的空闲缓存资源池,则将该数据随机写入到其中一个具有最大深度的空闲缓存资源池对应的Bank中。
当然,在本发明的其他实施方式中,也可以设定一定的规则,当具有2个以上具有相同的最大深度的空闲缓存资源池时,按照各个Bank的排列顺序,按序写入到对应的Bank中,在此不做详细赘述。
结合图13所示,该具体示例中,X0Y0以及X1Y1的具体结构均与图12 所示相同,数据写入及读出过程中,需根据其对应的转发端口进行存储,例如:S0、S1的数据仅能写入到X0Y0中,而S2、S3的数据仅能写入到X1Y1 中,其写入过程不在具体赘述。
本发明的4个读端口4个写端口存储器,在14nm集成电路工艺下,其逻辑上总共个需要40个4096深度1152宽度的SRAM2P,总共占用面积 22.115平方厘米,总的功耗为13.503Watts(核心电压=0.9V,结温=125摄氏度,工艺条件是最快),同时,不需要复杂的控制逻辑,只需要简单的异或运算就可实现多个读端口的操作;另外,也不需要额外的存储器块映射表和控制逻辑。更进一步的,所有的存储资源对于4个Slice或者说对于任意一个输入/输出端口而言都是可见的,所有的存储资源对于任意端口之间是完全共享的。
综上所述,本发明的4个读端口4个写端口全共享报文的数据缓存处理方法及处理系统,基于现有的SRAM类型,通过算法的方式搭建更多端口的 SRAM,仅仅用最小的代价便可以最大限度的支持多端口SRAM;其实现过程中,避免采用复杂的控制逻辑和额外的多端口SRAM或者寄存器阵列资源,利用报文缓存的特殊性,通过空间分割和时间分割,仅需要简单的异或运算就可实现4个读端口4个写端口的报文缓存,同时,本发明的4个读端口4个写端口存储器,其所有的存储资源对于4个Slice或者说对于任意一个输入/输出端口而言都是可见的,所有的存储资源对于任意端口之间是完全共享的,本发明具有更低的功耗,更快的处理速度,以及节省更多的资源或面积,实现简单,节约人力及物质成本。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
Claims (8)
1.一种4个读端口4个写端口全共享报文的数据缓存处理方法,其特征在于,所述方法包括:
将2个2个读端口1个写端口存储器并行拼装为一个Bank存储单元;
直接基于4个所述Bank存储单元形成4个读端口4个写端口存储器的硬件框架;
一个时钟周期下,当数据通过4个写端口写入到4个读端口4个写端口存储器时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则在当前时钟周期内,将数据分别写入不同Bank中,同时,对写入的数据进行复制,分别写入至每个Bank的2个2个读端口1个写端口存储器中;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则在当前时钟周期以及其相邻的下一个时钟周期内,将数据分别写入不同Bank中,同时,将每个写入数据的高低位分别写入至每个Bank存储单元的2个2个读端口1个写端口存储器中;
一个时钟周期下,当数据从4个读端口4个写端口存储器读出时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则在当前时钟周期内,选择4个读端口4个写端口的存储器中匹配的读端口直接读出数据;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则在当前时钟周期以及其相邻的下一个时钟周期内,选择4个读端口4个写端口存储器中匹配的读端口直接读出数据。
2.根据权利要求1所述的4个读端口4个写端口全共享报文的数据缓存处理方法,其特征在于,所述方法还包括:
当数据写入所述4个读端口4个写端口存储器时,根据每个Bank的剩余空闲资源选择数据的写入位置。
3.根据权利要求2所述的4个读端口4个写端口全共享报文的数据缓存处理方法,其特征在于,所述方法具体包括:
为每个Bank对应建立一空闲缓存资源池,所述空闲缓存资源池用于存储当前对应Bank的剩余的空闲指针,当数据发出写入所述4个读端口4个写端口存储器请求时,比较各个空闲缓存资源池的深度,
若存在一个具有最大深度的空闲缓存资源池,则直接将数据写入到该最大深度的空闲缓存资源池对应的Bank中;
若存在2个以上具有相同的最大深度的空闲缓存资源池,则将该数据随机写入到其中一个具有最大深度的空闲缓存资源池对应的Bank中。
4.根据权利要求1至3任一项所述的4个读端口4个写端口全共享报文的数据缓存处理方法,其特征在于,所述方法还包括:
根据2个读端口1个写端口存储器的深度和宽度选择2m+1块具有相同深度及宽度的SRAM2P存储器构建2个读端口1个写端口存储器的硬件框架,m为正整数;
每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;
当数据写入2个读端口1个写端口存储器和/或从所述2个读端口1个写端口存储器读出时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
5.一种4个读端口4个写端口全共享报文的数据缓存处理系统,其特征在于,所述系统包括:数据构建模块,数据处理模块;
所述数据构建模块具体用于:将2个2个读端口1个写端口存储器并行拼装为一个Bank存储单元;
直接基于4个所述Bank存储单元形成4个读端口4个写端口存储器的硬件框架;
所述数据处理模块具体用于:当确定一个时钟周期下,数据通过4个写端口写入到4个读端口4个写端口存储器时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则在当前时钟周期内,将数据分别写入不同Bank中,同时,对写入的数据进行复制,分别写入至每个Bank的2个2个读端口1个写端口存储器中;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则在当前时钟周期以及其相邻的下一个时钟周期内,将数据分别写入不同Bank中,同时,将每个写入数据的高低位分别写入至每个Bank存储单元的2个2个读端口1个写端口存储器中;
所述数据处理模块还用于:
当确定一个时钟周期下,数据从4个读端口4个写端口存储器读出时,
若数据的大小小于等于所述2个读端口1个写端口存储器的位宽,则在当前时钟周期内,选择4个读端口4个写端口的存储器中匹配的读端口直接读出数据;
若数据的大小大于所述2个读端口1个写端口存储器的位宽,则在当前时钟周期以及其相邻的下一个时钟周期内,选择4个读端口4个写端口存储器中匹配的读端口直接读出数据。
6.根据权利要求5所述的4个读端口4个写端口全共享报文的数据缓存处理系统,其特征在于,
所述数据处理模块还用于:
当确认数据写入所述4个读端口4个写端口存储器时,根据每个Bank的剩余空闲资源选择数据的写入位置。
7.根据权利要求6所述的4个读端口4个写端口全共享报文的数据缓存处理系统,其特征在于,
所述数据处理模块还用于:
为每个Bank对应建立一空闲缓存资源池,所述空闲缓存资源池用于存储当前对应Bank的剩余的空闲指针,当数据发出写入所述4个读端口4个写端口存储器请求时,比较各个空闲缓存资源池的深度,
若存在一个具有最大深度的空闲缓存资源池,则直接将数据写入到该最大深度的空闲缓存资源池对应的Bank中;
若存在2个以上具有相同的最大深度的空闲缓存资源池,则将该数据随机写入到其中一个具有最大深度的空闲缓存资源池对应的Bank中。
8.根据权利要求5至7任一项所述的4个读端口4个写端口全共享报文的数据缓存处理系统,其特征在于,
所述数据构建模块还用于:根据2个读端口1个写端口存储器的深度和宽度选择2m+1块具有相同深度及宽度的SRAM2P存储器构建2个读端口1个写端口存储器的硬件框架,m为正整数;
每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;
当数据写入2个读端口1个写端口存储器和/或从所述2个读端口1个写端口存储器读出时,所述数据处理模块还用于:根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610605130.7A CN106302260B (zh) | 2016-07-28 | 2016-07-28 | 4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统 |
PCT/CN2017/073642 WO2018018874A1 (zh) | 2016-07-28 | 2017-02-15 | 4r4w全共享报文的数据缓存处理方法及数据处理系统 |
US16/319,447 US20190332313A1 (en) | 2016-07-28 | 2017-02-15 | Data buffer processing method and data buffer processing system for 4r4w fully-shared packet |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610605130.7A CN106302260B (zh) | 2016-07-28 | 2016-07-28 | 4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106302260A CN106302260A (zh) | 2017-01-04 |
CN106302260B true CN106302260B (zh) | 2019-08-02 |
Family
ID=57662840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610605130.7A Active CN106302260B (zh) | 2016-07-28 | 2016-07-28 | 4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190332313A1 (zh) |
CN (1) | CN106302260B (zh) |
WO (1) | WO2018018874A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106297861B (zh) * | 2016-07-28 | 2019-02-22 | 盛科网络(苏州)有限公司 | 可扩展的多端口存储器的数据处理方法及数据处理系统 |
CN106302260B (zh) * | 2016-07-28 | 2019-08-02 | 盛科网络(苏州)有限公司 | 4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统 |
CN109344093B (zh) * | 2018-09-13 | 2022-03-04 | 苏州盛科通信股份有限公司 | 缓存结构、读写数据的方法和装置 |
CN109617838B (zh) * | 2019-02-22 | 2021-02-26 | 盛科网络(苏州)有限公司 | 多通道报文汇聚共享内存管理方法及系统 |
DE102019128331B4 (de) * | 2019-08-29 | 2024-10-02 | Taiwan Semiconductor Manufacturing Co., Ltd. | Gemeinsam genutzter decodiererschaltkreis und verfahren |
KR20210076630A (ko) * | 2019-12-16 | 2021-06-24 | 삼성전자주식회사 | 메모리 장치의 데이터 기입 방법, 데이터 독출 방법 및 이를 포함하는 구동 방법 |
CN112071344B (zh) * | 2020-09-02 | 2023-02-03 | 安徽大学 | 一种用于提高内存内计算线性度和一致性的电路 |
CN112787955B (zh) * | 2020-12-31 | 2022-08-26 | 苏州盛科通信股份有限公司 | Mac层数据报文的处理方法、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104409098A (zh) * | 2014-12-05 | 2015-03-11 | 盛科网络(苏州)有限公司 | 容量翻倍的芯片内部表项及其实现方法 |
CN104484128A (zh) * | 2014-11-27 | 2015-04-01 | 盛科网络(苏州)有限公司 | 基于一读一写存储器的多读多写存储器及其实现方法 |
CN104834501A (zh) * | 2015-04-20 | 2015-08-12 | 江苏汉斯特信息技术有限公司 | 一种基于l结构处理器的寄存器和寄存器操作方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7283556B2 (en) * | 2001-07-31 | 2007-10-16 | Nishan Systems, Inc. | Method and system for managing time division multiplexing (TDM) timeslots in a network switch |
US6606275B2 (en) * | 2001-08-23 | 2003-08-12 | Jeng-Jye Shau | High performance semiconductor memory devices |
US8861300B2 (en) * | 2009-06-30 | 2014-10-14 | Infinera Corporation | Non-blocking multi-port memory formed from smaller multi-port memories |
US8589851B2 (en) * | 2009-12-15 | 2013-11-19 | Memoir Systems, Inc. | Intelligent memory system compiler |
US8959291B2 (en) * | 2010-06-04 | 2015-02-17 | Lsi Corporation | Two-port memory capable of simultaneous read and write |
CN103077123A (zh) * | 2013-01-15 | 2013-05-01 | 华为技术有限公司 | 一种数据写入和读取方法及装置 |
CN104572573A (zh) * | 2014-12-26 | 2015-04-29 | 深圳市国微电子有限公司 | 数据存储方法、存储模块和可编程逻辑器件 |
CN106297861B (zh) * | 2016-07-28 | 2019-02-22 | 盛科网络(苏州)有限公司 | 可扩展的多端口存储器的数据处理方法及数据处理系统 |
CN106302260B (zh) * | 2016-07-28 | 2019-08-02 | 盛科网络(苏州)有限公司 | 4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统 |
-
2016
- 2016-07-28 CN CN201610605130.7A patent/CN106302260B/zh active Active
-
2017
- 2017-02-15 US US16/319,447 patent/US20190332313A1/en not_active Abandoned
- 2017-02-15 WO PCT/CN2017/073642 patent/WO2018018874A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484128A (zh) * | 2014-11-27 | 2015-04-01 | 盛科网络(苏州)有限公司 | 基于一读一写存储器的多读多写存储器及其实现方法 |
CN104409098A (zh) * | 2014-12-05 | 2015-03-11 | 盛科网络(苏州)有限公司 | 容量翻倍的芯片内部表项及其实现方法 |
CN104834501A (zh) * | 2015-04-20 | 2015-08-12 | 江苏汉斯特信息技术有限公司 | 一种基于l结构处理器的寄存器和寄存器操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106302260A (zh) | 2017-01-04 |
US20190332313A1 (en) | 2019-10-31 |
WO2018018874A1 (zh) | 2018-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106302260B (zh) | 4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统 | |
CN106297861B (zh) | 可扩展的多端口存储器的数据处理方法及数据处理系统 | |
CN106250321B (zh) | 2r1w存储器的数据处理方法及数据处理系统 | |
US4598400A (en) | Method and apparatus for routing message packets | |
CN102331974B (zh) | 用于处理器主存储器的持久存储器 | |
US8923089B2 (en) | Single-port read multiple-port write storage device using single-port memory cells | |
US4814973A (en) | Parallel processor | |
US9390212B2 (en) | Methods and apparatus for synthesizing multi-port memory circuits | |
TW202040369A (zh) | 矩陣正規/轉置讀取及包含矩陣正規/轉置讀取的可重配置資料處理器 | |
CN101751980A (zh) | 基于存储器知识产权核的嵌入式可编程存储器 | |
CN101441616B (zh) | 基于寄存器文件的快速数据交换结构及其管理方法 | |
WO2013097223A1 (zh) | 多粒度并行存储系统与存储器 | |
CN102610269B (zh) | 一种多读单写片内存储器 | |
EP3038109B1 (en) | Pseudo dual port memory using a dual port cell and a single port cell with associated valid data bits and related methods | |
CN106133838B (zh) | 一种可扩展可配置的fpga存储结构和fpga器件 | |
WO2013097228A1 (zh) | 多粒度并行存储系统 | |
US7248491B1 (en) | Circuit for and method of implementing a content addressable memory in a programmable logic device | |
US7242633B1 (en) | Memory device and method of transferring data in memory device | |
CN109314658A (zh) | 网络交换设备及时隙交换的方法 | |
US9158731B2 (en) | Multiprocessor arrangement having shared memory, and a method of communication between processors in a multiprocessor arrangement | |
US7356454B2 (en) | Method and apparatus for emulation of logic circuits | |
CN101937703A (zh) | 用于具有新型位单元实施的寄存器堆的装置 | |
US20140293682A1 (en) | Memory bitcell clusters employing localized generation of complementary bitlines to reduce memory area, and related systems and methods | |
GANESH et al. | Composing A Design And Implementation of Multi Ported Memories On FPGA for Power Efficiency | |
RAMESWARI et al. | Implementation of Bram Multiported Memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Xinghan Street Industrial Park of Suzhou city in Jiangsu province 215021 B No. 5 Building 4 floor 13/16 unit Patentee after: Suzhou Shengke Communication Co.,Ltd. Address before: Xinghan Street Industrial Park of Suzhou city in Jiangsu province 215021 B No. 5 Building 4 floor 13/16 unit Patentee before: CENTEC NETWORKS (SU ZHOU) Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |