CN106528598A - 一种链的管理方法及物理设备 - Google Patents

一种链的管理方法及物理设备 Download PDF

Info

Publication number
CN106528598A
CN106528598A CN201610848594.0A CN201610848594A CN106528598A CN 106528598 A CN106528598 A CN 106528598A CN 201610848594 A CN201610848594 A CN 201610848594A CN 106528598 A CN106528598 A CN 106528598A
Authority
CN
China
Prior art keywords
chain
memory
team
physical equipment
joining
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
Application number
CN201610848594.0A
Other languages
English (en)
Other versions
CN106528598B (zh
Inventor
吕晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610848594.0A priority Critical patent/CN106528598B/zh
Publication of CN106528598A publication Critical patent/CN106528598A/zh
Priority to US15/713,144 priority patent/US10175913B2/en
Priority to EP17192587.8A priority patent/EP3299965B1/en
Application granted granted Critical
Publication of CN106528598B publication Critical patent/CN106528598B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods 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
    • G06F5/08Methods 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 having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/064Linked list, i.e. structure using pointers, e.g. allowing non-contiguous address segments in one logical buffer or dynamic buffer space allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请提供了一种链的管理方法及物理设备,用以解决现有技术中传统的管理信息存储器性能要求高,造成成本和功耗较大的问题。该方法为:物理设备包括存储链的尾指针的第一存储器和存储链的头指针的第二存储器;所述物理设备具有在一个时钟周期内支持一个入队处理和一个出队处理,其中:当第一链在入队处理前不为空时,所述物理设备修改所述第一存储器中所述第一链的第一尾指针;当第二链在出队处理后不为空时,所述物理设备修改所述第二存储器中所述第二链的第二头指针。这样,在保证所述物理设备的输入输出性能的前提下,每个管理信息存储器均只需要具有1读1写的能力,该方法降低了管理信息存储器的性能要求,以及管理信息存储器的成本和功耗。

Description

一种链的管理方法及物理设备
技术领域
本申请涉及存储技术领域,尤其涉及一种链的管理方法及物理设备。
背景技术
线性表的链式存储结构的特点是用一组存储单元存储线性表的数据元素,而这组存储单元可以是连续的,也可以是不连续的。所述线性表又称为链表。为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,因此存储该数据元素ai的存储单元还需要存储指示ai直接后继数据元素ai+1的存储位置(又称为指针)。该存储单元中存储的数据元素ai和指针这两部分信息组成数据元素ai的结点,该存储单元中存储数据元素ai的域称为数据域,存储指针的域称为指针域。n个结点(ai(1≤i≤n)的结点)链结成一条链(a1,a2,…an),一个链表中的包含多条链。
链表是存储数据的结点的集合,这些结点通过指针链接起来,构成队列。链表保存在存储器后,还需要专用存储器保存所述链表中每条链的管理信息。其中,所述专用存储器又称为管理信息存储器,任意一条链的管理信息包含指示该链的队头(首个结点)的存储位置的头指针和指示该链的队尾(最后一个结点)的存储位置的尾指针,以及该链的长度(该链中包含的结点的个数)等信息。
存储器所属的物理设备可以对所述存储器中的链表的一条链中的结点进行处理,例如,入队操作,即所述物理设备将新结点加入到所述链的队尾;出队操作,即所述物理设备将所述链中的队头取出结点。
传统地,所述物理设备在一个时钟周期内的所述链入队操作中,对所述链的管理信息进行处理的步骤包括:
所述物理设备获取所述链的原长度;
在所述原长度为0时,所述物理设备同时修改所述链的头指针和尾指针;或者,在所述原长度不为0时,所述物理设备只修改所述链的尾指针;
所述物理设备修改所述链的长度,其中,修改后的新长度为所述原长度加1。
传统地,所述物理设备在一个时钟周期内的所述链出队操作中,对所述链的管理信息进行处理的步骤包括:
所述物理设备确定本次出队操作取出的结点总数;
所述物理设备获取所述链的原长度;
所述物理设备确定所述链的新长度,并将所述新长度更新到所述链的管理信息存储器中,其中,所述新长度为所述原长度减去所述取出的结点总数;
在所述新长度不为0时,所述物理设备修改所述链的头指针;或者,在所述新长度为0时,所述物理设备不进行任何操作。
为了保证所述物理设备的输入输出性能,所述物理设备在一个时钟周期内需要支持一个入队操作和一个出队操作。根据以上描述,所述物理设备在出队操作和入队操作都需要访问和修改链的管理信息,且在一个时钟周期内,管理信息存储器需要支持2读2写,因此所述管理信息存储器的访问开销较大。其中所述2读2写中包含入队操作中的1读(即读取链的原长度和原尾指针)1写(修改链长度和尾指针,且在原长度为0时还修改头指针)、出队操作中的1读(读取链的原长度和原头指针)1写(修改链长度和头指针)。
由于链表中往往需要包含巨大数量的链,故而管理信息存储器中链的管理信息也占用很大空间,例如,物理设备的存储器存储的一链表中存在1兆(M)条链,每条链均能占用256个结点,那么管理信息存储器至少需要1M深度,90比特(b)位宽的存储器,即所述管理信息存储器大约需要90兆比特(Mb)的存储容量。
根据以上论述可知,管理信息存储器具有每个时钟周期2读2写的能力,因此,该管理信息存储器需要有4个端口。由于存储器支持同时访问的端口数量不同,实现的代价业务不同,且存储器的端口数量越多,实现的代价就越大,例如具有4端口的存储器所占面积和功耗分别是具有2端口的存储器所占面积和功耗的4倍左右。综上所述,由于管理信息存储器要求不仅具有每个时钟周期2读2写的能力,且具有较大容量,造成管理信息存储器的成本和功耗较大。
发明内容
本申请提供一种链的管理方法及物理设备,用以解决现有技术中传统的管理信息存储器是具有每时钟周期2读2写的能力的大容量存储器,造成成本和功耗较大的问题。
本申请提供的具体技术方案如下:
一方面,本申请实施例提供了一种链的管理方法,该方法应用于具有第一存储器、第二存储器的物理设备,其中,所述物理设备中保存有链表,所述第一存储器中保存链表包含的多条链中每条链的尾指针,所述第二存储器中保存每条链的头指针。所述物理设备具有在一个时钟周期内实现对所述多条链中的第一链的入队处理和对所述多条链中的第二链的出队处理的能力,其中,该方法包括:在所述物理设备对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,所述物理设备修改所述第一存储器中所述第一链的第一尾指针,使修改后的所述第一尾指针指向在入队处理后的所述第一链中最后一个结点所在的存储位置;以及在所述物理设备对所述第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,所述物理设备修改所述第二存储器中所述第二链的第二头指针,使修改后的所述第二头指针指向在出队处理后的所述第二链中首个结点所在的存储位置。
通过上述方法,在一个时钟周期内所述物理设备对所述第一链进行入队处理,和/或,对所述第二链进行出队处理时,第一存储器和第二存储器访问率大幅度降低,均只存在1读1写,且上述两个存储器仅存储链的管理信息中的一部分管理信息。由于上述每个存储器的访问率为1读1写,显然,每个存储器为2个端口的存储器,相对于传统的4个端口的管理信息存储器,每个存储器可以明显降低所占面积和功耗。另外,由于每个存储器仅存储部分管理信息,所以每个存储器的存储压力和存储容量需求也降低了。因此,上述方法在保证所述物理设备的输入输出性能的前提下,降低了管理信息存储器(即上述两个存储器)的性能要求,从而降低了管理信息存储器的成本和功耗。
在一个可能的设计中,当所述第一链在入队前为空时,所述物理设备不仅修改所述第一存储器中所述第一链的第一尾指针,还需要修改所述第二存储器中所述第一链的第一头指针,使修改后的所述第一头指针指向在入队处理后的所述第一链中首个结点所在的存储位置。
通过所述方法,所述物理设备可以在对所述第一链进行入队处理的情况下,实现对所述第一链的头指针和尾指针的管理。
在一个可能的设计中,所述第一存储器还保存有每条链的第一状态标识;所述第二存储器还保存有每条链的第二状态标识;所述物理设备还具有存储每条链的第三状态标识的第三存储器,其中,任意一条链的第一状态标识和第二状态标识相同,所述链的第一状态标识和第三状态标识组合、所述链的第二状态标识和所述第三状态标识组合均可指示所述链是否为空;在上述三个存储器均存储每条链的相应的状态标识的场景下,所述物理设备在对所述第一链进行入队处理时,还可以通过以下步骤确定所述第一链在入队处理前是否为空:
首先,分别从所述第一存储器和所述第三存储器中读取所述第一链的第一状态标识和第三状态标识;然后根据所述第一链的所述第一状态标识和所述第三状态标识,确定所述第一链在入队处理前是否为空。
通过上述方法,在所述物理设备对所述第一链进行入队处理的情况下,所述物理设备可以直接根据所述第一链的第一状态标识与第三状态标识组合,确定所述第一链是否为空,提高了所述物理设备确定所述第一链的状态的效率。
在一个可能的设计中,在所述物理设备通过上述设计中的三个存储器存储每条链的相应的状态标识的场景下,所述物理设备在对所述第二链进行出队处理的情况下,当所述第二链在出队处理后为空时,所述物理设备根据所述第二存储器中所述第二链的第二状态标识,修改所述第三存储器中所述第二链的第三状态标识,使所述第二链的所述第二状态标识和修改后的所述第三状态标识组合指示出队处理后的所述第二链为空。
在所述物理设备对所述第二链进行出队处理的情况下,如果所述第二链在出队处理后为空,所述物理设备还需要修改所述第二链的第三状态标识,以使后续在所述物理设备对所述第二链进行入队处理时,所述物理设备可以根据所述第二链的第一状态标识与第三状态标识组合,确定所述第二链为空。因此,通过上述方法,可以提高所述物理设备后续确定所述第二链的状态的效率。
在一个可能的设计中,所述物理设备在所述物理设备对所述第一链进行入队处理的情况下,当所述物理设备确定所述第一链在入队处理前为空时,所述物理设备执行以下操作:
A、修改所述第一存储器中所述第一链的所述第一状态标识,使所述第一链的所述第三状态标识与修改后的所述第一状态标识组合指示入队处理后的所述第一链不为空;B、修改所述第一存储器中所述第一链的所述第一尾指针,使修改后的所述第一尾指针指向在入队处理后的所述第一链中最后一个结点所在的存储位置;C、修改所述第二存储器中所述第一链的第二状态标识,使修改后的所述第一链的第二状态标识与修改后的所述第一链的所述第一状态标识相同;D、修改所述第二存储器中所述第一链的第一头指针,使修改后的所述第一头指针指向在入队处理后的所述第一链中首个结点所在的存储位置。
通过所述方法,所述物理设备可以在对所述第一链进行入队处理的情况下,实现对所述第一链的头指针和尾指针以及各个状态标识的管理。
在一个可能的设计中,所述第一存储器还保存有每条链的长度;所述物理设备在入队处理和出队处理时,还需要对链的长度进行管理:
在所述物理设备对所述第一链进行入队处理的情况下,所述物理设备通过以下步骤实现对所述第一链的长度的管理:当所述第一链在入队处理前不为空时,所述物理设备从所述第一存储器中读取所述第一链的第一长度;并根据所述第一长度和入队的结点总数,得到新的第一长度,以及将所述第一长度更新到所述第一存储器中;当所述第一链在入队处理前不为空时,所述物理设备将入队的结点总数作为所述第一链的第一长度,并将所述第一链的所述第一长度更新到所述第一存储器中;
在所述物理设备对所述第二链进行出队处理的情况下,所述物理设备通过以下步骤实现对所述第一链的长度的管理:当所述第二链在出队处理后不为空时,所述物理设备从所述第一存储器中读取所述第二链的第二长度;并根据所述第二长度和出队的结点总数,得到新的第二长度,以及将所述第二长度更新到所述第一存储器中。
通过上述方法,所述物理设备可以分别在对所述第一链进行入队处理和在对所述第二链进行出队处理的情况下,实现对所述第一链和第二链的长度的管理。
另一方面,本发明实施例还提供了一种物理设备,物理设备具有实现上述方法实例中物理设备行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,所述物理设备的结构中包括第一存储器、第二存储器、处理器、总线以及数据存储器,所述数据存储器用于存储链表,所述第一存储器用于保存所述链表中每条链的尾指针,所述第二存储器用于保存每条链的头指针,所述处理器被配置为支持所述物理设备执行上述方法中相应的功能。所述数据存储器与所述处理器耦合,其保存所述处理器必要的程序指令和数据。
在本发明实施例提供的链的管理方法中,物理设备通过两个存储器存储链表中每条链的管理信息,包括存储链的尾指针的第一存储器和存储链的头指针的第二存储器;所述物理设备在一个时钟周期内实现一个入队处理和一个出队处理时,每个存储器的访问率为1读1写。因此,采用本申请实施例提供的方法,在保证所述物理设备的输入输出性能(在一个时钟周围内支持一个入队操作和一个出队操作)的前提下,每个存储器访问率大幅度降低,均只需要具有1读1写的能力,显然,每个存储器均为2个端口的存储器,相对于传统的4个端口的管理信息存储器,每个存储器可以明显降低所占面积和功耗。另外,由于每个存储器仅存储部分管理信息,所以每个存储器的存储压力和存储容量需求也降低了。因此,上述方法降低了管理信息存储器(即上述两个存储器)的性能要求,从而降低了管理信息存储器的成本和功耗。
附图说明
图1为本申请实施例提供的一种链的管理方法的流程图;
图2为本申请实施例提供的一种物理设备的结构图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本申请实施例提供一种链的管理方法及物理设备,用以解决现有技术中传统的管理信息存储器是具有每时钟周期2读2写的能力的大容量存储器,造成成本和功耗较大的问题。其中,本申请所述方法和装置基于同一发明构思,由于方法及物理设备解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
本申请实施例中,物理设备中具有两个用于存储链表中每条链的管理信息的存储器,包括存储链的尾指针的第一存储器和存储链的头指针的第二存储器;所述物理设备具有在一个时钟周期内支持一个入队处理和一个出队处理,其中:在所述物理设备对所述链表中的第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,所述物理设备修改所述第一存储器中所述第一链的第一尾指针;以及在所述物理设备对所述链表中的第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,所述物理设备修改所述第二存储器中所述第二链的第二头指针。通过以上论述可知,在保证所述物理设备的输入输出性能(在一个时钟周围内支持一个入队操作和一个出队操作)的前提下,第一存储器和第二存储器访问率大幅度降低,均只需要具有1读1写的能力,且上述两个存储器仅存储链的管理信息中的一部分管理信息。由于上述每个存储器的访问率为1读1写,显然,每个存储器为2个端口的存储器,相对于传统的4个端口的管理信息存储器,每个存储器可以明显降低所占面积和功耗。另外,由于每个存储器仅存储部分管理信息,所以每个存储器的存储压力和存储容量需求也降低了。因此,上述方法降低了管理信息存储器(即上述两个存储器)的性能要求,从而降低了管理信息存储器的成本和功耗。
以下,对本申请中的部分用户进行解释说明,以便于本领域技术人员理解。
本申请实施例涉及的物理设备,为可以通过链表存储数据的各类设备。为了保证所述物理设备的输入输出性能,所述物理设备在一个时钟周期内具有执行一个入队处理和一个出队处理的能力。其中,执行所述入队处理和/或所述出队处理的器件可以为所述物理设备中的处理器或者其他专用硬件,所述专用硬件例如:路由器或交换机中负责队列管理功能的专用芯片。
本申请涉及的第一存储器,为物理设备中的管理信息存储器,用于存储所述物理设备中的存储的链表中包含的每条链的尾指针。可选的,所述第一存储器还保存有每条链的第一状态标识,所述第一状态标识可以表示为E标识。另外,所述第一存储器还可以保存每条链的长度。
本申请涉及的第二存储器,为物理设备中的管理信息存储器,用于存储所述物理设备中的存储的链表中包含的每条链的头指针。可选的,所述第二存储器还保存有每条链的第二状态标识,所述第二状态标识与所述第一状态标识保持一致,也可以表示为E标识。另外,所述第二存储器也可以保存每条链的长度。在一个物理设备中,每条链的长度保存到所述第一存储器或所述第二存储器中任一个即可。
本申请设计的第三存储器,为物理设备中的管理信息存储器,当所述物理设备中的第一存储器和第二存储器分别保存每条链的第一状态标识和所述第二状态标识时,所述物理设备还需要所述第三存储器存储第三状态标识。所述第三状态标识可以表示为N标识。其中,任意一条链的第一状态标识和第三状态标识组合用于指示所述链是否为空,且所述链的第二状态标识和所述第三状态标识组合用于指示所述链是否为空,即所述链的E标识和N标识可以指示所述链是否为空。
本申请涉及的E标识和N标识,可以为相应的存储器中的设定数目的比特的字段。可选的,所述E标识和所述N标识均可以为1个比特的字段,那么,链的所述E标识和所述N标识的二者的取值与链的状态的对应关系可以如表1所示,或者如表2所示,本申请对此不作限定。
表1
E标识 0 0 1 1
N标识 0 1 0 1
链的状态 不为空 不为空
表2
E标识 0 0 1 1
N标识 0 1 0 1
链的状态 不为空 不为空
本申请实施例中的“多个”,是指两个或两个以上。
和/或,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
为了更加清晰的描述本申请实施例的技术方案,下面结合图1,对本申请实施例提供的一种链的管理方法的流程进行描述。其中,所述方法应用于通过链表存储数据的物理设备。所述物理设备还具有第一存储器和第二存储器的物理设备,其中,所述第一存储器用于保存链表中每条链的尾指针,所述第二存储器用于保存每条链的头指针。所述物理设备具有在一个时钟周期内实现对所述链表中第一链的入队处理和对第二链的出队处理的能力,但是在一个时钟周期内所述物理设备具体实现一个入队处理和/或一个出队处理。参阅图1所示,该方法的处理流程包括:
步骤101:在所述物理设备对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,所述物理设备修改所述第一存储器中所述第一链的第一尾指针,使修改后的所述第一尾指针指向在入队处理后的所述第一链中最后一个结点所在的存储位置。
可选的,当所述第一链在入队前为空时,所述物理设备不仅修改所述第一存储器中所述第一链的第一尾指针,还需要修改所述第二存储器中所述第一链的第一头指针,使修改后的所述第一头指针指向在入队处理后的所述第一链中首个结点所在的存储位置。
步骤102:在所述物理设备对所述第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,所述物理设备修改所述第二存储器中所述第二链的第二头指针,使修改后的所述第二头指针指向在出队处理后的所述第二链中首个结点所在的存储位置。
可选的,所述物理设备可以通过多种方式判断所述第二链在出队处理后是否为空。例如,可以通过所述第二链在出队处理后的长度是否为0判断;还可以通过检测所述第二链中当前结点(最后一个结点)中包含的指针指向的下一个结点是否为空。
可选的,当所述第二链在出队处理后为空时,所述物理设备可以采用传统的方式,即不进行任何操作。
本申请实施例并不限定所述物理设备执行步骤101和步骤102的先后顺序。
在本申请实施例提供的上述链的管理方法中,在一个时钟周期内所述物理设备对所述第一链进行入队处理,和/或,对所述第二链进行出队处理时,第一存储器和第二存储器访问率大幅度降低,均只存在1读1写,且上述两个存储器仅存储链的管理信息中的一部分管理信息。由于上述每个存储器的访问率为1读1写,显然,每个存储器为2个端口的存储器,相对于传统的4个端口的管理信息存储器,每个存储器可以明显降低所占面积和功耗。另外,由于每个存储器仅存储部分管理信息,所以每个存储器的存储压力和存储容量需求也降低了。因此,上述方法在保证所述物理设备的输入输出性能的前提下,降低了管理信息存储器(即上述两个存储器)的性能要求,从而降低了管理信息存储器的成本和功耗。
可选的,为了提高所述物理设备确定链的状态(是否为空)的效率,所述第一存储器还保存有每条链的第一状态标识;所述第二存储器还保存有每条链的第二状态标识;且所述物理设备还具有第三存储器,所述第三存储器用于保存每条链的第三状态标识,其中,任意一条链的第一状态标识和第二状态标识相同,所述链的第一状态标识和第三状态标识组合用于指示所述链是否为空,且所述链的第二状态标识和所述第三状态标识组合用于指示所述链是否为空。
通过上述方法,在所述物理设备对所述第一链进行入队处理的情况下,所述物理设备可以直接根据所述第一链的第一状态标识与第三状态标识组合,确定所述第一链是否为空,提高了所述物理设备确定所述第一链的状态的效率。
在上述三个存储器均存储每条链的相应的状态标识的情况下,在所述物理设备对所述第一链进行入队处理的情况下,所述方法还包括:所述物理设备确定所述第一链在入队处理前是否为空,具体包括:
所述物理设备分别从所述第一存储器和所述第三存储器中读取所述第一链的第一状态标识和第三状态标识;
所述物理设备根据所述第一链的所述第一状态标识和所述第三状态标识,确定所述第一链在入队处理前是否为空。例如,在链的E标识和N标识的二者的取值与链的状态的对应关系为表1时,所述物理设备读取的所述第一状态标识(E标识)的取值为1,读取的所述第三状态标识(N标识)的取值为0,通过表1所示的对应关系可知,所述物理设备确定所述第一链不为空。
同时,在所述物理设备对所述第二链进行出队处理的情况下,如果所述第二链在出队处理后为空,所述物理设备还需要修改所述第二链的第三状态标识,以使后续在所述物理设备对所述第二链进行入队处理时,所述物理设备可以根据所述第二链的第一状态标识与第三状态标识组合,确定所述第二链为空。因此,在所述物理设备对所述第二链进行出队处理的情况下,所述方法还包括:
当所述第二链在出队处理后为空时,所述物理设备根据所述第二存储器中所述第二链的第二状态标识,修改所述第三存储器中所述第二链的第三状态标识,使所述第二链的所述第二状态标识和修改后的所述第三状态标识组合指示出队处理后的所述第二链为空。
通过上述方法,提高了所述物理设备确定所述第二链的状态的效率。
可选的,在所述物理设备对所述第一链进行入队处理的情况下,所述方法还包括:
所述物理设备确定所述第一链在入队处理前为空,所述物理设备执行以下操作:
修改所述第一存储器中所述第一链的所述第一状态标识,使所述第一链的所述第三状态标识与修改后的所述第一状态标识组合指示入队处理后的所述第一链不为空;
修改所述第一存储器中所述第一链的所述第一尾指针,使修改后的所述第一尾指针指向在入队处理后的所述第一链中最后一个结点所在的存储位置;
修改所述第二存储器中所述第一链的第二状态标识,使修改后的所述第一链的第二状态标识与修改后的所述第一链的所述第一状态标识相同;
修改所述第二存储器中所述第一链的第一头指针,使修改后的所述第一头指针指向在入队处理后的所述第一链中首个结点所在的存储位置。
通过以上描述可知,当所述第一存储器和所述第二存储器以及所述第三存储器中均未保存每条链的长度时,所述第一存储器支持每个时钟周期1读(对第一链进行入队处理时读取第一链的第一尾指针和第一状态标识)1写(修改所述第一尾指针,第一链入队处理前为空时还修改所述第一状态标识)。
所述第二存储器的能力要求分析如下:
链表中每条链的每个结点存储固定大小的数据量,例如64字节(B),每次出队的数据量一般都明显大于64B。在某链存储的数据量超过1kB时,每次出队的数据量至少为1kB,即每次出队的结点总数至少为16个,只有在链仅有一个结点时,每次出队的结点的数目才为1。
在最恶劣的读场景中,每条链每次都只出队1个64B的结点后该链变为空,但是此时无需修改第二存储器中链的管理信息,但是所述第二存储器写的访问率为所述物理设备在执行入队处理时的1写。因此,在这个场景中,所述第二存储器的访问率需求为1读1写。
在最恶劣的读写场景中,有些链一次出队1个64B的结点以及有些链一次出队16个64B的结点后,这些链未变为空。例如连续15条链只出队1个结点,之后第16条链一次出队16结点后,这些链为变为空。此时,所述第二存储器的读次数为31拍之内16次,写次数为31拍之内32次(包含入队31次+出队1次)。因此,所述第二存储器写的访问率约为1-1/16次,而所述第二存储器的读的访问率为1+1/16。
通过上述论述可知,该链在每出队16个结点才会发生一次该链的出队处理后不为空。因此在上述情况下,所述第二存储器支持每个时钟周期1读1+1/16写(修改第一链的第二状态标识和第一头指针,加上一个周期修改1/16次所述第二头指针)。其中,在第二链出队处理时每16个时钟周期才发生读取和修改一次所述第二链的第二头指针。
所述第三存储器支持每个时钟周期1读(对所述第一链入队处理时读取一次所述第一链的第三状态标识)1写(在第二链出队处理后为空时,修改所述第二链的第三状态标识)。
总之,在上述三个存储器均存储每条链的相应的状态标识的情况下,相对于传统的访问率为2读2写的管理信息存储器,每个存储器的最大访问率均大幅度降低了。
由于传统的管理信息存储器的访问率为2读2写,因此传统的管理信息存储器需要4个端口,因此所述传统的管理信息存储器的面积和功耗较大。在本申请实施例中的第一存储器、第二存储器和第三存储器的访问率基本为1读1写,其中,所述第二存储器的访问率为1读1+1/16写,只要所述物理设备将时钟频率提高1/16,即可以使所述第二存储器的访问率降低为1读1写。因此,所述物理设备调整时钟频率后,所述第一存储器、所述第二存储器和所述第三存储器均支持每个时钟1读1写,均为2个端口的存储器。显然,本申请实施例提供的方法可以明显降低了管理信息存储器(即上述三个存储器)的性能要求,从而明显降低了管理信息存储器的成本和功耗。
在本申请实施例中,每条链的长度作为链的管理信息,其存储位置可以为以下任意一个:第一存储器中或第二存储器中。
在本实施例中,仅以所述第一存储器存储每条链的长度为例,在这种管理信息的存储方法中:
在所述物理设备对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,所述方法还包括:
所述物理设备从所述第一存储器中读取所述第一链的第一长度;并根据所述第一长度和入队的结点总数,得到新的第一长度,以及将所述第一长度更新到所述第一存储器中;
在所述物理设备对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,所述方法还包括:
所述物理设备将入队的结点总数作为所述第一链的第一长度,并将所述第一链的所述第一长度更新到所述第一存储器中;
在所述物理设备对所述第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,所述方法还包括:
所述物理设备从所述第一存储器中读取所述第二链的第二长度;并根据所述第二长度和出队的结点总数,得到新的第二长度,以及将所述第二长度更新到所述第一存储器中。
当所述第一存储器存储每条链的长度时,所述第一存储器的访问率为1+1/16读(对第一链进行入队处理时读取第一链的尾指针、长度和第一状态标识,加上一个周期读取1/16次第二链的长度)1写(修改所述第一尾指针,第一链入队处理前为空时还修改所述第一状态标识,加上一个周期修改1/16次所述第二链的长度)。因此,所述物理设备只需调整时钟频率,所述第一存储器的访问率即降为1读1写,因此,当所述第一存储器存储每条链的长度时,也可以降低所述第一存储器的性能要求,从而降低所述第一存储器的成本和功耗。
本发明实施例提供的链的管理方法,适用于具有两个存储器的物理设备,所述两个存储器包括存储链表中链的尾指针的第一存储器和存储链的头指针的第二存储器。所述物理设备具有在一个时钟周期内支持一个入队处理和一个出队处理,所述方法为:在所述物理设备对所述链表中的第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,所述物理设备修改所述第一存储器中所述第一链的第一尾指针;以及在所述物理设备对所述链表中的第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,所述物理设备修改所述第二存储器中所述第二链的第二头指针。通过以上论述可知,在保证所述物理设备的输入输出性能(在一个时钟周围内支持一个入队操作和一个出队操作)的前提下,第一存储器和第二存储器均只需要具有1读1写的能力,且上述两个存储器存储链的管理信息中的一部分管理信息。由于上述每个存储器的访问率为1读1写,显然,每个存储器为2个端口的存储器,相对于传统的4个端口的管理信息存储器,每个存储器可以明显降低所占面积和功耗。另外,由于每个存储器仅存储部分管理信息,所以每个存储器的存储压力和存储容量需求也降低了。因此,上述方法降低了管理信息存储器(即上述两个存储器)的性能要求,从而降低了管理信息存储器的成本和功耗。
基于以上实施例,本发明实施例还提供了一种物理设备,用于实现如图1所示的链的管理方法,参阅图2所示,所述物理设备中包括:收发器201、处理器202、数据存储器203、总线204,以及第一存储器205和第二存储器206,其中,
所述收发器201、所述处理器202、所述数据存储器203,以及所述第一存储器205和所述第二存储器206通过所述总线204相互连接;所述总线204可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extendedindustry standard architecture,简称EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述收发器201,用于与和所述物理设备200相连的其他设备进行通信交互。
所述数据存储器203,用于存储链表,所述链表中包含多条链。
所述第一存储器205,用于保存每条链的尾指针,所述第二存储器206,用于保存每条链的头指针。
所述物理设备200具有在一个时钟周期内实现对所述多条链中的第一链的入队处理和对所述多条链中的第二链的出队处理的能力,所述处理器202,用于实现如图1所示的链的管理方法,包括:
在所述物理设备200对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,修改所述第一存储器205中所述第一链的第一尾指针,使修改后的所述第一尾指针指向在入队处理后的所述第一链中最后一个结点所在的存储位置;以及
在所述物理设备200对所述第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,修改所述第二存储器206中所述第二链的第二头指针,使修改后的所述第二头指针指向在出队处理后的所述第二链中首个结点所在的存储位置。
可选的,所述第一存储器205,还用于保存每条链的第一状态标识;
所述第二存储器206,还用于保存每条链的第二状态标识;
所述物理设备200还包括:第三存储器207,用于保存每条链的第三状态标识,其中,任意一条链的第一状态标识和第二状态标识相同,所述链的第一状态标识和第三状态标识组合用于指示所述链是否为空,且所述链的第二状态标识和所述第三状态标识组合用于指示所述链是否为空;
所述处理器202,还用于在所述物理设备200对所述第一链进行入队处理的情况下,确定所述第一链在入队处理前是否为空,具体包括:
所述处理器202分别从所述第一存储器205和所述第三存储器207中读取所述第一链的第一状态标识和第三状态标识;
所述处理器202根据所述第一链的所述第一状态标识和所述第三状态标识,确定所述第一链在入队处理前是否为空。
可选的,所述处理器202,还用于:
在所述物理设备200对所述第二链进行出队处理的情况下,当所述第二链在出队处理后为空时,根据所述第二存储器206中所述第二链的第二状态标识,修改所述第三存储器207中所述第二链的第三状态标识,使所述第二链的所述第二状态标识和修改后的所述第三状态标识组合指示出队处理后的所述第二链为空。
可选的,所述处理器202,还用于:
在所述物理设备200对所述第一链进行入队处理的情况下,当确定所述第一链在入队处理前为空时,执行以下操作:
修改所述第一存储器205中所述第一链的所述第一状态标识,使所述第一链的所述第三状态标识与修改后的所述第一状态标识组合指示入队处理后的所述第一链不为空;
修改所述第一存储器205中所述第一链的所述第一尾指针,使修改后的所述第一尾指针指向在入队处理后的所述第一链中最后一个结点所在的存储位置;
修改所述第二存储器206中所述第一链的第二状态标识,使修改后的所述第一链的第二状态标识与修改后的所述第一链的所述第一状态标识相同;
修改所述第二存储器206中所述第一链的第一头指针,使修改后的所述第一头指针指向在入队处理后的所述第一链中首个结点所在的存储位置。
可选的,所述第一存储器205,还用于保存每条链的长度;
所述处理器202,还用于:在所述物理设备200对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,从所述第一存储器205中读取所述第一链的第一长度;并根据所述第一长度和入队的结点总数,得到新的第一长度,以及将所述第一长度更新到所述第一存储器205中;
所述处理器202,还用于:在所述物理设备200对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,将入队的结点总数作为所述第一链的第一长度,并将所述第一链的所述第一长度更新到所述第一存储器205中;
所述处理器202,还用于:在所述物理设备200对所述第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,从所述第一存储器205中读取所述第二链的第二长度;并根据所述第二长度和出队的结点总数,得到新的第二长度,以及将所述第二长度更新到所述第一存储器205中。
可选的,所述数据存储器203,还用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。所述数据存储器203可能包含随机存取存储器(random access memory,简称RAM),也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。所述处理器202执行所述数据存储器203所存放的应用程序,实现上述功能,从而实现如图1所示的链的管理方法。
采用本申请实施例提供的物理设备,所述物理设备具有在一个时钟周期内支持一个入队处理和一个出队处理,其中:在所述物理设备对存储的所述链表中的第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,所述物理设备修改所述第一存储器中所述第一链的第一尾指针;以及在所述物理设备对所述链表中的第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,所述物理设备修改所述第二存储器中所述第二链的第二头指针。通过以上论述可知,在保证所述物理设备的输入输出性能(在一个时钟周围内支持一个入队操作和一个出队操作)的前提下,第一存储器和第二存储器访问率大幅度降低,均只需要具有1读1写的能力,且上述两个存储器仅存储链的管理信息中的一部分管理信息。由于上述每个存储器的访问率为1读1写,显然,每个存储器为2个端口的存储器,相对于传统的4个端口的管理信息存储器,每个存储器可以明显降低所占面积和功耗。另外,由于每个存储器仅存储部分管理信息,所以每个存储器的存储压力和存储容量需求也降低了。因此,所述物理设备降低了管理信息存储器(即上述两个存储器)的性能要求,从而降低了管理信息存储器的成本和功耗。
本申请实施例提供了一种链的管理方法及物理设备,物理设备中具有两个用于存储链表中每条链的管理信息的存储器,包括存储链的尾指针的第一存储器和存储链的头指针的第二存储器;所述物理设备具有在一个时钟周期内支持一个入队处理和一个出队处理,以及管理所述第一存储器和所述第二存储器中链的管理信息。因此,在保证所述物理设备的输入输出性能(在一个时钟周围内支持一个入队操作和一个出队操作)的前提下,第一存储器和第二存储器访问率大幅度降低,均只需要具有1读1写的能力,且上述两个存储器仅存储链的管理信息中的一部分管理信息。由于上述每个存储器的访问率为1读1写,显然,每个存储器为2个端口的存储器,相对于传统的4个端口的管理信息存储器,每个存储器可以明显降低所占面积和功耗。另外,由于每个存储器仅存储部分管理信息,所以每个存储器的存储压力和存储容量需求也降低了。因此,上述方法降低了管理信息存储器(即上述两个存储器)的性能要求,从而降低了管理信息存储器的成本和功耗。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种链的管理方法,其特征在于,所述方法应用于具有第一存储器、第二存储器的物理设备,所述第一存储器用于保存链表包含的多条链中每条链的尾指针,所述第二存储器用于保存每条链的头指针,所述物理设备具有在一个时钟周期内实现对第一链的入队处理和对第二链的出队处理的能力,所述第一链和所述第二链均为所述多条链中的一条链,所述方法包括:
在所述物理设备对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,所述物理设备修改所述第一存储器中所述第一链的第一尾指针,使修改后的所述第一尾指针指向在入队处理后的所述第一链中最后一个结点所在的存储位置;
在所述物理设备对所述第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,所述物理设备修改所述第二存储器中所述第二链的第二头指针,使修改后的所述第二头指针指向在出队处理后的所述第二链中首个结点所在的存储位置。
2.如权利要求1所述的方法,其特征在于,所述第一存储器还保存有每条链的第一状态标识;所述第二存储器还保存有每条链的第二状态标识;所述物理设备还具有第三存储器,所述第三存储器用于保存每条链的第三状态标识,其中,任意一条链的第一状态标识和第二状态标识相同,所述链的第一状态标识和第三状态标识组合用于指示所述链是否为空,且所述链的第二状态标识和所述第三状态标识组合用于指示所述链是否为空;
在所述物理设备对所述第一链进行入队处理的情况下,所述方法还包括:所述物理设备确定所述第一链在入队处理前是否为空,具体包括:
所述物理设备分别从所述第一存储器和所述第三存储器中读取所述第一链的第一状态标识和第三状态标识;
所述物理设备根据所述第一链的所述第一状态标识和所述第三状态标识,确定所述第一链在入队处理前是否为空。
3.如权利要求2所述的方法,其特征在于,在所述物理设备对所述第二链进行出队处理的情况下,所述方法还包括:
当所述第二链在出队处理后为空时,所述物理设备根据所述第二存储器中所述第二链的第二状态标识,修改所述第三存储器中所述第二链的第三状态标识,使所述第二链的所述第二状态标识和修改后的所述第三状态标识组合指示出队处理后的所述第二链为空。
4.如权利要求2或3所述的方法,其特征在于,在所述物理设备对所述第一链进行入队处理的情况下,所述方法还包括:
所述物理设备确定所述第一链在入队处理前为空,所述物理设备执行以下操作:
修改所述第一存储器中所述第一链的所述第一状态标识,使所述第一链的所述第三状态标识与修改后的所述第一状态标识组合指示入队处理后的所述第一链不为空;
修改所述第一存储器中所述第一链的所述第一尾指针,使修改后的所述第一尾指针指向在入队处理后的所述第一链中最后一个结点所在的存储位置;
修改所述第二存储器中所述第一链的第二状态标识,使修改后的所述第一链的第二状态标识与修改后的所述第一链的所述第一状态标识相同;
修改所述第二存储器中所述第一链的第一头指针,使修改后的所述第一头指针指向在入队处理后的所述第一链中首个结点所在的存储位置。
5.如权利要求4所述的方法,其特征在于,所述第一存储器还保存有每条链的长度;
在所述物理设备对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,所述方法还包括:
所述物理设备从所述第一存储器中读取所述第一链的第一长度;并根据所述第一长度和入队的结点总数,得到新的第一长度,以及将所述第一长度更新到所述第一存储器中;
在所述物理设备对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,所述方法还包括:
所述物理设备将入队的结点总数作为所述第一链的第一长度,并将所述第一链的所述第一长度更新到所述第一存储器中;
在所述物理设备对所述第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,所述方法还包括:
所述物理设备从所述第一存储器中读取所述第二链的第二长度;并根据所述第二长度和出队的结点总数,得到新的第二长度,以及将所述第二长度更新到所述第一存储器中。
6.一种物理设备,其特征在于,所述物理设备中存储有链表,所述链表中包含多条链,所述物理设备具有在一个时钟周期内实现对第一链的入队处理和对第二链的出队处理的能力,所述第一链和所述第二链均为所述多条链中的一条链,所述物理设备包括:
第一存储器,用于保存每条链的尾指针,
第二存储器,用于保存每条链的头指针,
处理器,用于在所述物理设备对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,修改所述第一存储器中所述第一链的第一尾指针,使修改后的所述第一尾指针指向在入队处理后的所述第一链中最后一个结点所在的存储位置;以及
在所述物理设备对所述第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,修改所述第二存储器中所述第二链的第二头指针,使修改后的所述第二头指针指向在出队处理后的所述第二链中首个结点所在的存储位置。
7.如权利要求6所述的物理设备,其特征在于,
所述第一存储器,还用于保存每条链的第一状态标识;
所述第二存储器,还用于保存每条链的第二状态标识;
所述物理设备还包括:第三存储器,用于保存每条链的第三状态标识,其中,任意一条链的第一状态标识和第二状态标识相同,所述链的第一状态标识和第三状态标识组合用于指示所述链是否为空,且所述链的第二状态标识和所述第三状态标识组合用于指示所述链是否为空;
所述处理器,还用于在所述物理设备对所述第一链进行入队处理的情况下,确定所述第一链在入队处理前是否为空,具体包括:
所述处理器分别从所述第一存储器和所述第三存储器中读取所述第一链的第一状态标识和第三状态标识;
所述处理器根据所述第一链的所述第一状态标识和所述第三状态标识,确定所述第一链在入队处理前是否为空。
8.如权利要求7所述的物理设备,其特征在于,所述处理器,还用于:
在所述物理设备对所述第二链进行出队处理的情况下,当所述第二链在出队处理后为空时,根据所述第二存储器中所述第二链的第二状态标识,修改所述第三存储器中所述第二链的第三状态标识,使所述第二链的所述第二状态标识和修改后的所述第三状态标识组合指示出队处理后的所述第二链为空。
9.如权利要求7或8所述的物理设备,其特征在于,所述处理器,还用于:
在所述物理设备对所述第一链进行入队处理的情况下,当确定所述第一链在入队处理前为空时,执行以下操作:
修改所述第一存储器中所述第一链的所述第一状态标识,使所述第一链的所述第三状态标识与修改后的所述第一状态标识组合指示入队处理后的所述第一链不为空;
修改所述第一存储器中所述第一链的所述第一尾指针,使修改后的所述第一尾指针指向在入队处理后的所述第一链中最后一个结点所在的存储位置;
修改所述第二存储器中所述第一链的第二状态标识,使修改后的所述第一链的第二状态标识与修改后的所述第一链的所述第一状态标识相同;
修改所述第二存储器中所述第一链的第一头指针,使修改后的所述第一头指针指向在入队处理后的所述第一链中首个结点所在的存储位置。
10.如权利要求9所述的物理设备,其特征在于,
所述第一存储器,还用于保存每条链的长度;
所述处理器,还用于:在所述物理设备对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,从所述第一存储器中读取所述第一链的第一长度;并根据所述第一长度和入队的结点总数,得到新的第一长度,以及将所述第一长度更新到所述第一存储器中;
所述处理器,还用于:在所述物理设备对所述第一链进行入队处理的情况下,当所述第一链在入队处理前不为空时,将入队的结点总数作为所述第一链的第一长度,并将所述第一链的所述第一长度更新到所述第一存储器中;
所述处理器,还用于:在所述物理设备对所述第二链进行出队处理的情况下,当所述第二链在出队处理后不为空时,从所述第一存储器中读取所述第二链的第二长度;并根据所述第二长度和出队的结点总数,得到新的第二长度,以及将所述第二长度更新到所述第一存储器中。
CN201610848594.0A 2016-09-23 2016-09-23 一种链的管理方法及物理设备 Active CN106528598B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201610848594.0A CN106528598B (zh) 2016-09-23 2016-09-23 一种链的管理方法及物理设备
US15/713,144 US10175913B2 (en) 2016-09-23 2017-09-22 Link management method and physical device
EP17192587.8A EP3299965B1 (en) 2016-09-23 2017-09-22 Method and physical device for managing linked lists

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610848594.0A CN106528598B (zh) 2016-09-23 2016-09-23 一种链的管理方法及物理设备

Publications (2)

Publication Number Publication Date
CN106528598A true CN106528598A (zh) 2017-03-22
CN106528598B CN106528598B (zh) 2019-10-18

Family

ID=58344243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610848594.0A Active CN106528598B (zh) 2016-09-23 2016-09-23 一种链的管理方法及物理设备

Country Status (3)

Country Link
US (1) US10175913B2 (zh)
EP (1) EP3299965B1 (zh)
CN (1) CN106528598B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111443873A (zh) * 2020-03-27 2020-07-24 深圳天岳创新科技有限公司 一种Nand Flash存储器的管理方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996031820A1 (en) * 1995-04-07 1996-10-10 Cisco Systems, Inc. Method and apparatus for the management of queue pointers by multiple processors in a digital communications network
CN101252536A (zh) * 2008-03-31 2008-08-27 清华大学 路由器多队列数据包缓存管理与输出队列调度系统
CN103713962A (zh) * 2012-10-09 2014-04-09 中兴通讯股份有限公司 一种检测数据链表方法及电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838915A (en) 1995-06-21 1998-11-17 Cisco Technology, Inc. System for buffering data in the network having a linked list for each of said plurality of queues
CA2290265A1 (en) * 1999-11-24 2001-05-24 Alberto Leon-Garcia High-speed programmable packet scheduler and buffer manager
US20030145012A1 (en) * 2002-01-31 2003-07-31 Kurth Hugh R. Shared resource virtual queues
US7555579B2 (en) 2004-05-21 2009-06-30 Nortel Networks Limited Implementing FIFOs in shared memory using linked lists and interleaved linked lists

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996031820A1 (en) * 1995-04-07 1996-10-10 Cisco Systems, Inc. Method and apparatus for the management of queue pointers by multiple processors in a digital communications network
CN101252536A (zh) * 2008-03-31 2008-08-27 清华大学 路由器多队列数据包缓存管理与输出队列调度系统
CN103713962A (zh) * 2012-10-09 2014-04-09 中兴通讯股份有限公司 一种检测数据链表方法及电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111443873A (zh) * 2020-03-27 2020-07-24 深圳天岳创新科技有限公司 一种Nand Flash存储器的管理方法和装置

Also Published As

Publication number Publication date
EP3299965B1 (en) 2019-09-11
CN106528598B (zh) 2019-10-18
EP3299965A1 (en) 2018-03-28
US10175913B2 (en) 2019-01-08
US20180088866A1 (en) 2018-03-29

Similar Documents

Publication Publication Date Title
CN101645846B (zh) 一种路由交换设备及其数据缓存的方法
CN105095116A (zh) 缓存替换的方法、缓存控制器和处理器
US20080177909A1 (en) Content Terminated DMA
CN101866277B (zh) 数据排序方法和装置
CN108733324A (zh) 一种固态硬盘的数据读写方法、装置、设备及存储介质
CN107888512A (zh) 动态共享缓冲存储器及交换机
CN106254270A (zh) 一种队列管理方法及装置
CN107291392A (zh) 一种固态硬盘及其读写方法
CN102520902B (zh) 基于单片块ram的并行写入多fifo实现方法
US20200133855A1 (en) Accessing queue data
WO2020118713A1 (zh) 位宽匹配电路、数据写入装置、数据读出装置和电子设备
CN107451271A (zh) 一种哈希表处理方法、装置、设备及存储介质
CN106528598A (zh) 一种链的管理方法及物理设备
CN109710547B (zh) 一种工业物联网中的缓冲内存管理设计与实现方法
CN106375249B (zh) 交换芯片的控制方法及控制系统
CN108512783A (zh) 一种状态信息获取方法及设备
CN107896194A (zh) 一种路由查找方法、装置和存储介质
CN104750621A (zh) 缓存方法及控制系统
CN109597577A (zh) 一种处理nvme协议读写命令的方法、系统及相关装置
CN104461780B (zh) 一种释放数据块的方法及装置
CN107346289A (zh) 一种用循环队列缓冲数据的方法
CN110209352A (zh) 一种存储器的控制方法、存储器控制器、电子设备及存储介质
CN104298616A (zh) 数据块初始化方法、高速缓冲存储器和终端
CN111414148A (zh) 面向高性能处理器的混合型fifo数据存储方法及装置
CN105577986B (zh) 基于膨胀腐蚀的图像处理系统及图像处理方法

Legal Events

Date Code Title Description
C06 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