CN113821457A - 一种高性能读写链表缓存的装置及方法 - Google Patents
一种高性能读写链表缓存的装置及方法 Download PDFInfo
- Publication number
- CN113821457A CN113821457A CN202111183720.2A CN202111183720A CN113821457A CN 113821457 A CN113821457 A CN 113821457A CN 202111183720 A CN202111183720 A CN 202111183720A CN 113821457 A CN113821457 A CN 113821457A
- Authority
- CN
- China
- Prior art keywords
- linked list
- ram
- pop
- push
- read
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及数据处理技术领域,尤其涉及一种高性能读写链表缓存的装置,包括访问窗口控制模块、入队push的buffer缓存、出队pop的buffer缓存、链表RAM和读写冲突模块,所述访问窗口控制模块用于保证push不在pop访问链表RAM窗口内;入队push的buffer缓存和出队pop的buffer缓存用于使链表RAM的入队和出队处理不会因为上下游模块数据没有准备好而空闲;所述的读写冲突模块用于监控入队和出队冲突操作。本发明把入队push和出队pop独立开来,使得push和pop对链表的访问同时进行,提高了读写链表缓存的效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种高性能读写链表缓存的装置及方法。
背景技术
在通信网路芯片设计中,经常遇到对入口的以太网报文、协议数据、控制信息按照一定优先级缓存,等待后一级的QOS调度或下一级装置准备好后再输出。这就需要在设计中增加RAM或DDR模块进行数据缓存,考虑网络传输速率和DDR读写访问延时,在芯片设计中更多使用RAM来缓存或RAM+DDR混合方式。在选择RAM类型时,因为双口RAM比单口RAM大,从降低设计芯片资源和功耗角度,选择单口RAM更加合适。
但是单口RAM一次只能进行“读”或“写”访问,如果不能很好控制RAM的读写操作,会降低RAM的使用效率。一般RAM读写方式有如下两种方式:方式一,等待RAM读取完数据后,根据读取的数据做逻辑判断,再进行RAM的“写”操作,访问时序如图6。该访问方式时序是最好的,综合出来的网表时钟频率最高。缺点是单口RAM使用率不高,在“读”和“写”会有空闲状态,造成浪费。另一种如图7的RAM控制方式,在发起RAM读后,对刚读出的数据进行判断,在读出数据同一拍去控制RAM写,把数据写入RAM。这个RAM访问时连续的,但是这种方式组合逻辑级数太长,造成setup时序变差,综合出的网表时钟频率不高。
使用图6的RAM读写方式,在链表设计中,需要存储上游入队的数据缓存,即通过链表的空闲指针映射成数据RAM的绝对地址,把上游的数据或控制信息写入到数据RAM中。并更新队列的链表,方便在出队时,按照入队的顺序输出。链表更新方式:先读取链表上一次入队的队尾(que_tail)地址,再以队尾为地址把当前空闲指针写入到链表RAM中。此外链表还要维护出队操作,即当QOS模块可调度或下一级装置处于准备状态,出队需要把队头(que_head)的报文或控制数据读取,再更新队头:以当前对头指针为地址,读取RAM获得链表下一个指针,填充到该que的que_head。并把当前对头que_head指针作为数据,空闲链表尾作为地址,回收到空闲链表中,链表的操作流程见图8。整体链表入队push和出队pop的时序见图9。从时序图可以看出在RAM多次读写操作时,RAM访问并没有完全利用起来,造成链表访问有一般时间在等RAM读或写数据完成。
因此,图8的方案虽然提高了综合时序,但RAM读写利用率不高,造成整体性能提升不明显,也不是一个好的设计方案。
发明内容
本发明提供了一种高性能读写链表缓存的装置及方法,把入队push和出队pop独立开来,使得push和pop对链表的访问同时进行,提高了读写链表缓存的效率。
为了实现本发明的目的,一种高性能读写链表缓存的装置,包括访问窗口控制模块、入队push的buffer缓存、出队pop的buffer缓存、链表RAM和读写冲突模块,所述访问窗口控制模块用于保证push不在pop访问链表RAM窗口内;入队push的buffer缓存和出队pop的buffer缓存用于使链表RAM的入队和出队处理不会因为上下游模块数据没有准备好而空闲;所述的读写冲突模块用于监控入队和出队冲突操作。
作为本发明的优化方案,高性能读写链表缓存的装置,从更少的逻辑和功耗选择单口RAM,来搭建链表功能,实现多路队列que的数据先进先出需求。
为了实现本发明的目的,采用一种高性能读写链表缓存的装置读写链表缓存的方法,包括如下步骤:
1)先维护访问窗口控制模块,把pop访问链表RAM时间记录下来,push不在pop访问链表RAM内访问;
2)设置入队push的buffer缓存吸收入队突发过来的报文数据或控制数据,设置出队pop的buffer缓存用于吸收出队突发场景下,下一级模块的出队请求;
3)规划好入队push操作流程,使其push对链表RAM的读写在状态机前部分完成,对RAM的读写要求:一拍进行读、一拍处理读后数据,第三拍进行写流程;
4)规划好出队pop操作流程,使其pop对RAM的读写在状态机前部分完成,对RAM的读写要求:一拍进行读、一拍处理读后数据,第三拍进行写流程。
作为本发明的优化方案,push和pop对链表RAM的操作访问相差一拍或奇数拍。
作为本发明的优化方案,链表RAM包括空闲头指针、空闲尾指针、队列头指针和队列尾指针,空闲头指针和队列的尾部指针入队push操作使用;空闲尾指针作为指针回收使用,队列头指针作为pop出队操作。
本发明具有积极的效果:1)本发明通过选择单口RAM,降低芯片资源,减少面积。通过控制入队和出队访问RAM窗口,使得对单口RAM的访问,能够流水起来,提高访问RAM效率。
2)本发明把入队push和出队pop独立开来,使得push和pop对链表的访问能够同时进行,提高入队push和出队的性能。
3)本发明通过监控每次入队push和出队pop的队列号,防止两者在访问最后一个数据报文或控制数据冲突时,进行现场保护。
4)本发明在入队push增加一个小的buffer缓存,以防该链表来不及处理push入队造成的反压,使用此buffer吸收入队突发过来的报文或控制信息;在出队pop增加一个小的请求出队buffer,吸收下一级装置请求突发。从而使该链表的入队和出队处理不会因为上下游模块数据没有准备好而空闲,整体入队和出队更加流畅和高效。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1是本发明读写链表缓存方法的流程图;
图2是入队push和出队pop分开的数据流程图;
图3是链表RAM初始化完后的框图;
图4是多轮入队push和出队pop操作下,空闲头指针,空闲尾指针及链表数据的框图;
图5是入队push和出队pop分开的链表读写RAM时序图;
图6是现有技术RAM的访问时序一种示意图;
图7是现有技术RAM的访问时序另一种示意图;
图8为常见入队push和出队pop访问状态流程图;
图9是常见入队push和出队pop访问RAM时序图。
具体实施方式
下面结合附图对本发明的实现做进一步详细的描述:
本发明公开了一种高性能读写链表缓存的装置,包括访问窗口控制模块、入队push的buffer缓存、出队pop的buffer缓存、链表RAM和读写冲突模块,访问窗口控制模块用于保证push不在pop访问链表RAM窗口内;入队push的buffer缓存和出队pop的buffer缓存用于使链表RAM的入队和出队处理不会因为上下游模块数据没有准备好而空闲;读写冲突模块用于监控入队和出队冲突操作。
维护链表RAM,通过上电或CPU配置初始化这块链表,如图3所示,并记录这块空闲RAM的空闲头指针(idle_head_ptr)和空闲尾指针(idle_tail_ptr)。维护一套队列头buffer,缓存该队列或多个队列头的访问指针及其他控制信息,该buffer在pop出队时使用;维护一套队列尾的buffer,缓存该队列或多个队列尾的访问指针和其他控制信息,该buffer在push入队时使用。
如图1和图2所示,采用一种高性能读写链表缓存的装置读写链表缓存的方法,包括如下步骤:
1)先维护访问窗口控制模块,即维护一个push或pop访问窗口。假设pop在整个链表RAM操作中是时间相对长的,则优先处理pop操作,把pop的访问链表RAM时间记录下来,push窗口只要不在这些窗口内访问链表RAM就不会造成读写链表RAM和出队pop读写链表RAM冲突;
2)设置入队push的buffer缓存吸收入队突发过来的报文数据或控制数据,设置出队pop的buffer缓存用于吸收出队突发场景下,下一级模块的出队请求;其中,入队push的buffer和出队pop的buffer用于当链表RAM读写高峰时,来不及操作入队push报文数据或控制数据先存入入队push的buffer缓存;出队pop的buffer缓存用来吸收出队突发场景下,下一级模块的出队请求。
其中:入队push的buffer缓存可以防该链表来不及处理push入队造成的反压,使用此buffer吸收入队突发过来的报文或控制信息;在出队pop增加出队pop的buffer缓存,吸收下一级装置请求突发。从而使该链表的入队和出队处理不会因为上下游模块数据没有准备好而空闲,整体入队和出队更加流畅和高效。
3)规划好入队push操作流程,使其push对链表RAM的读写在状态机前部分完成,对RAM的读写要求:一拍进行读、一拍处理读后数据,第三拍进行写流程;当有入队push操作时,先从链表RAM申请一块空闲指针作为下一个空闲头指针,当前空闲头指针缓存报文或控制信息到数据RAM中,并以该队列上一次报文指针为地址,把当前空闲头指针更新到链表RAM中,并同步更新该空闲指针到该队列的尾部buffer信息中,以便下一次入队push使用,尾部buffer是缓存多个队列最后一次写入数据的地址(指针)。
4)规划好出队pop操作流程,使其pop对RAM的读写在状态机前部分完成,对RAM的读写要求:一拍进行读、一拍处理读后数据,第三拍进行写流程。这样入队push和出队pop就可以互相利用对方等待或处理链表RAM数据时间进行自己访问链表RAM操作。当下一级装置准备好或申请出队pop操作时,通过该队列的head buffer,获取该队列的head指针及其他控制信息,访问数据ram读出报文或控制信息送给下级装置。队列的head指针指代每个队列的头部指针,用于出队使用。并通过该head指针,从链表ram读取下一个指针,更新到headbuffer。图4是在多轮入队push和出队pop操作下,空闲头指针,空闲尾指针及链表数据的状态。
链表RAM就是实现多个队列数据的先进先出功能,需要监控每次push和pop的队列号(如支持1024个队列,队列号则为0~1023)本发明通过监控每次入队push和出队pop的队列号,防止两者在访问最后一个数据报文或控制数据冲突时,进行现场保护。
如图5所示,通过分开了push和pop操作,且push和pop的访问RAM操作,集中放到一起,提升了RAM读写效率也提高了整体流水性能。
链表RAM包括空闲头指针、空闲尾指针、队列头指针和队列尾指针,空闲头指针和队列的尾部指针入队push操作使用;空闲尾指针作为指针回收使用,队列头指针作为pop出队操作。空闲头指针最终要填写到每个队列的头部buffer、尾部buffer、链表ram中。
读写冲突模块增加入队和出队冲突监控装置,监控入队和出队冲突,即当入队和出队是基于同一个队列,且又是只有一个报文,需要同步维护好队列头指针和尾指针状态。
以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,并不能因此而理解为对本发明专利范围的限制。应当指出的是,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
Claims (5)
1.一种高性能读写链表缓存的装置,其特征在于:包括访问窗口控制模块、入队push的buffer缓存、出队pop的buffer缓存、链表RAM和读写冲突模块,所述访问窗口控制模块用于保证push不在pop访问链表RAM窗口内;入队push的buffer缓存和出队pop的buffer缓存用于使链表RAM的入队和出队处理不会因为上下游模块数据没有准备好而空闲;所述的读写冲突模块用于监控入队和出队冲突操作。
2.根据权利要求1所述的一种高性能读写链表缓存的装置,其特征在于:高性能读写链表缓存的装置考虑更少的逻辑资源和功耗选择单口RAM,并搭配控制逻辑实现链表功能。
3.采用权利要求1所述的一种高性能读写链表缓存的装置读写链表缓存的方法,其特征在于:包括如下步骤:
1)先维护访问窗口控制模块,把pop访问链表RAM时间记录下来,push不在pop访问链表RAM内访问;
2)设置入队push的buffer缓存吸收入队突发过来的报文数据或控制数据,设置出队pop的buffer缓存用于吸收出队突发场景下,下一级模块的出队请求;
3)规划好入队push操作流程,使其push对链表RAM的读写在状态机前部分完成,对RAM的读写要求:一拍进行读、一拍处理读后数据,第三拍进行写流程;
4)规划好出队pop操作流程,使其pop对RAM的读写在状态机前部分完成,对RAM的读写要求:一拍进行读、一拍处理读后数据,第三拍进行写流程。
4.根据权利要求3所述的一种高性能读写链表缓存的方法,其特征在于:push和pop对链表RAM的操作访问相差一拍或奇数拍。
5.根据权利要求4所述的一种高性能读写链表缓存的方法,其特征在于:链表RAM包括空闲头指针、空闲尾指针、队列头指针和队列尾指针,空闲头指针和队列的尾部指针入队push操作使用;空闲尾指针作为指针回收使用,队列头指针作为pop出队操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111183720.2A CN113821457B (zh) | 2021-10-11 | 2021-10-11 | 一种高性能读写链表缓存的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111183720.2A CN113821457B (zh) | 2021-10-11 | 2021-10-11 | 一种高性能读写链表缓存的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113821457A true CN113821457A (zh) | 2021-12-21 |
CN113821457B CN113821457B (zh) | 2023-06-30 |
Family
ID=78916374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111183720.2A Active CN113821457B (zh) | 2021-10-11 | 2021-10-11 | 一种高性能读写链表缓存的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113821457B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266746B1 (en) * | 1997-07-29 | 2001-07-24 | Yamaha Corporation | Control apparatus for random access memories |
CN1411211A (zh) * | 2002-04-17 | 2003-04-16 | 华为技术有限公司 | 以太网交换芯片输出队列管理调度方法和装置 |
CN101000589A (zh) * | 2006-12-22 | 2007-07-18 | 清华大学 | 一种自适应的外部存储设备io性能优化方法 |
CN102377682A (zh) * | 2011-12-12 | 2012-03-14 | 西安电子科技大学 | 基于定长单元存储变长分组的队列管理方法及设备 |
CN110058816A (zh) * | 2019-04-10 | 2019-07-26 | 中国人民解放军陆军工程大学 | 一种基于ddr的高速多用户队列管理器及方法 |
CN110806986A (zh) * | 2019-11-04 | 2020-02-18 | 盛科网络(苏州)有限公司 | 提高网络芯片报文存储效率的方法、设备及存储介质 |
-
2021
- 2021-10-11 CN CN202111183720.2A patent/CN113821457B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266746B1 (en) * | 1997-07-29 | 2001-07-24 | Yamaha Corporation | Control apparatus for random access memories |
CN1411211A (zh) * | 2002-04-17 | 2003-04-16 | 华为技术有限公司 | 以太网交换芯片输出队列管理调度方法和装置 |
CN101000589A (zh) * | 2006-12-22 | 2007-07-18 | 清华大学 | 一种自适应的外部存储设备io性能优化方法 |
CN102377682A (zh) * | 2011-12-12 | 2012-03-14 | 西安电子科技大学 | 基于定长单元存储变长分组的队列管理方法及设备 |
CN110058816A (zh) * | 2019-04-10 | 2019-07-26 | 中国人民解放军陆军工程大学 | 一种基于ddr的高速多用户队列管理器及方法 |
CN110806986A (zh) * | 2019-11-04 | 2020-02-18 | 盛科网络(苏州)有限公司 | 提高网络芯片报文存储效率的方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113821457B (zh) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112084136B (zh) | 队列缓存管理方法、系统、存储介质、计算机设备及应用 | |
US7546399B2 (en) | Store and forward device utilizing cache to store status information for active queues | |
CN110806986B (zh) | 提高网络芯片报文存储效率的方法、设备及存储介质 | |
US8225026B2 (en) | Data packet access control apparatus and method thereof | |
CN109446125B (zh) | Ddr读写仲裁器及方法 | |
US7657706B2 (en) | High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory | |
US20060031565A1 (en) | High speed packet-buffering system | |
US7296112B1 (en) | High bandwidth memory management using multi-bank DRAM devices | |
WO2014063599A1 (zh) | 一种用于以太网设备的数据缓存系统及方法 | |
EP3657744B1 (en) | Message processing | |
US9769092B2 (en) | Packet buffer comprising a data section and a data description section | |
US20030016689A1 (en) | Switch fabric with dual port memory emulation scheme | |
CN110058816B (zh) | 一种基于ddr的高速多用户队列管理器及方法 | |
WO2012019475A1 (zh) | 一种rldramsio访问控制方法和装置 | |
EP2526478B1 (en) | A packet buffer comprising a data section an a data description section | |
WO2011015055A1 (zh) | 一种存储管理的方法和系统 | |
CN113641603A (zh) | 一种基于axi协议的ddr仲裁与调度方法及系统 | |
WO2017133439A1 (zh) | 一种数据管理方法及装置、计算机存储介质 | |
CN111611180B (zh) | 一种支持多协议的动态共享缓冲区 | |
CN105335323B (zh) | 一种数据突发的缓存装置和方法 | |
US7130916B2 (en) | Linking frame data by inserting qualifiers in control blocks | |
CN114531488A (zh) | 一种面向以太网交换器的高效缓存管理系统 | |
CN113821457A (zh) | 一种高性能读写链表缓存的装置及方法 | |
CN115955441A (zh) | 一种基于tsn队列的管理调度方法、装置 | |
CN112822126B (zh) | 报文存储方法、报文出入队列方法及存储调度装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |