CN108984280B - 一种片外存储器的管理方法和装置、计算机可读存储介质 - Google Patents

一种片外存储器的管理方法和装置、计算机可读存储介质 Download PDF

Info

Publication number
CN108984280B
CN108984280B CN201710412636.0A CN201710412636A CN108984280B CN 108984280 B CN108984280 B CN 108984280B CN 201710412636 A CN201710412636 A CN 201710412636A CN 108984280 B CN108984280 B CN 108984280B
Authority
CN
China
Prior art keywords
scheduling
user program
read
storage
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710412636.0A
Other languages
English (en)
Other versions
CN108984280A (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.)
Sanechips Technology Co Ltd
Original Assignee
Sanechips Technology 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 Sanechips Technology Co Ltd filed Critical Sanechips Technology Co Ltd
Priority to CN201710412636.0A priority Critical patent/CN108984280B/zh
Publication of CN108984280A publication Critical patent/CN108984280A/zh
Application granted granted Critical
Publication of CN108984280B publication Critical patent/CN108984280B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details of memory controller using bus width
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/366Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a centralised polling arbiter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • 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/0608Saving storage space on 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • 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
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种片外存储器的管理方法和装置、计算机可读存储介质,包括:根据片外存储器的存储容量和存储带宽以及各个用户程序需要的存储容量和存储带宽,将片外存储器划分为若干个分别与各个用户程序对应的存储空间,并将若干个存储空间分别分配给各个用户程序;配置读写侧调度策略;接收来自用户程序的写入或读出命令,根据配置的读写侧调度策略和分配的存储空间,对用户程序的数据报文进行调度,将用户程序的数据报文写入对应的存储空间或从对应的存储空间读取数据报文。本发明有效保证了片外存储器的存储空间和存储带宽利用率,降低了片外存储器使用成本。

Description

一种片外存储器的管理方法和装置、计算机可读存储介质
技术领域
本发明涉及通信技术领域,尤其涉及一种片外存储器的管理方法和装置、计算机可读存储介质。
背景技术
随着互联网的快速发展,人们对网络不停地提出新的服务需求,有限的片内存储器资源不能满足日益增大的用户程序的需求。目前,网络服务提供商趋向于使用大容量片外存储器储存报文和数据,双倍速率(Double Data Rate SDRAM,DDR SDRAM)存储器作为主要的片外存储器,是一种高性能、低成本的存储解决方案,已被广泛应用于PC(PersonalComputer)、服务器和如今的片上系统(System On Chip,SOC)设计中。
现有的片外存储器件的使用中,通常有多少源就使用多少组存储器件。但是,片外存储器件的容量是固定的值,例如2吉比特(Gbit)或4Gbit等,而所存储的数据是不定的值,例如可能为1Gbit,也可能为200Mbit,对于片外存储器件来说,容量通常是绰绰有余的,但同时也造成了存储空间的浪费。
此外,片外存储器件所能提供的带宽通常都是一个特定值,例如256字节/秒(Bytes/s)等,而对于单一的数据源或用户来说,实际需要的带宽可能只用到片外存储器件的1/4带宽或1/2带宽,这样也造成了带宽的浪费。
缓存管理实际就是缓存空间的分配和释放问题,通过对缓存空间进行合理分配,提高缓存空间的利用率。一般采用将缓存空间进行有效分割,将分割后的片区空间分配给不同的源或者报文使用,以便使缓存空间的利用率达到最高。
由于现有的片内缓存存储容量和存储带宽都比较小,传统的缓存管理方法虽然缺乏对存储带宽利用率的考虑,仍然能够实现对片内缓存空间的合理分配,进而实现片内缓存存储空间的利用率最大化。但是,对于片外存储器来说,存储带宽利用率是一个非常重要的因素,使用传统的缓存管理方法,会造成存储带宽的浪费,增大设计成本。
发明内容
为了解决上述技术问题,本发明提供了一种片外存储器的管理方法和装置、计算机可读存储介质,能够充分利用片外存储器的带宽和存储资源。
为了达到本发明目的,本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种片外存储器的管理方法,包括:
根据片外存储器的存储容量和存储带宽以及各个用户程序需要的存储容量和存储带宽,将片外存储器划分为若干个分别与各个用户程序对应的存储空间,并将若干个存储空间分别分配给各个用户程序;
配置读写侧调度策略;
接收来自用户程序的写入或读出命令,根据配置的读写侧调度策略和分配的存储空间,对用户程序的数据报文进行调度,将用户程序的数据报文写入对应的存储空间或从对应的存储空间读取数据报文。
进一步地,所述读写侧调度策略包括读出轮询策略、读出调度单元策略、写入轮询策略和写入调度单元策略。
进一步地,所述读出轮询策略为带优先级的轮询调度、动态加权循环轮询调度、差额循环调度、加权循环调度或加权差额循环调度;
所述写入轮询策略为带优先级的轮询调度、动态加权循环轮询调度、差额循环调度、加权循环调度或加权差额循环调度;
在所述配置读写侧调度策略的步骤之前,所述方法还包括:
配置所述各个用户程序的优先级和/或权重。
进一步地,所述读出调度单元策略为突发脉冲调度或块调度;所述写入调度单元策略为突发脉冲调度或块调度。
进一步地,相邻的两个所述存储空间之间设有缓冲区。
本发明实施例还提供了一种片外存储器的管理装置,包括分配模块、配置模块和调度模块,其中:
所述分配模块,用于根据片外存储器的存储容量和存储带宽以及各个用户程序需要的存储容量和存储带宽,将片外存储器划分为若干个分别与各个用户程序对应的存储空间,并将若干个存储空间分别分配给各个用户程序;
所述配置模块,用于配置读写侧调度策略;
所述调度模块,用于接收来自用户程序的写入或读出命令,根据配置的读写侧调度策略和分配的存储空间,对用户程序的数据报文进行调度,将用户程序的数据报文写入对应的存储空间或从对应的存储空间读取数据报文。
进一步地,所述读写侧调度策略包括读出轮询策略、读出调度单元策略、写入轮询策略和写入调度单元策略。
进一步地,所述读出轮询策略为带优先级的轮询调度、动态加权循环轮询调度、差额循环调度、加权循环调度或加权差额循环调度;
所述写入轮询策略为带优先级的轮询调度、动态加权循环轮询调度、差额循环调度、加权循环调度或加权差额循环调度;
所述配置模块还用于:配置所述各个用户程序的优先级和/或权重。
进一步地,所述读出调度单元策略为突发脉冲调度或块调度;所述写入调度单元策略为突发脉冲调度或块调度。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现以下步骤:
根据片外存储器的存储容量和存储带宽以及各个用户程序需要的存储容量和存储带宽,将片外存储器划分为若干个分别与各个用户程序对应的存储空间,并将若干个存储空间分别分配给各个用户程序;
配置读写侧调度策略;
接收来自用户程序的写入或读出命令,根据配置的读写侧调度策略和分配的存储空间,对用户程序的数据报文进行调度,将用户程序的数据报文写入对应的存储空间或从对应的存储空间读取数据报文。
本发明的技术方案,具有如下有益效果:
本发明提供的片外存储器的管理方法和装置、计算机可读存储介质,针对片外带宽和存储空间都被浪费的技术问题,使用共享管理策略对片外存储空间及带宽进行动态管理和控制,从而充分使用片外存储器的剩余存储空间,并通过共享调度的管理,对特定带宽需求的报文进行调整,调度各用户使用带宽的时隙,保证特定带宽需求用户带宽占用率的同时,填充空闲带宽时隙,有效保证片外缓存的带宽利用率,使片外存储空间和带宽得到充分利用,实现动态调节,节约片外缓存成本。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明第一实施例的片外存储器的管理方法的流程示意图;
图2为本发明第一实施例的片外存储器的管理装置的结构示意图;
图3为本发明优选实施例的片外存储器的管理方法的数据流示意图;
图4为本发明优选实施例的片外存储器的管理方法的甲乙用户程序的数据流发送示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
如图1所示,根据本发明的一种片外存储器的管理方法,包括:
步骤101:根据片外存储器的存储容量和存储带宽以及各个用户程序需要的存储容量和存储带宽,将片外存储器划分为若干个分别与各个用户程序对应的存储空间,并将若干个存储空间分别分配给各个用户程序;
需要说明的是,本发明所述的存储容量,指的是存储器存储空间的大小;本发明所述的存储带宽,指的是单位时间里存储器所存取的信息量,也称为存储器在单位时间内读出/写入的位数或字节数。
具体的,根据各个用户程序报文数据的特点和需要存储的最大队列数,计算各个用户程序所需的存储容量;根据各个用户程序所需的存储容量和存储带宽以及片外存储器的存储容量和存储带宽,将片外存储器划分为多个片外存储单元,并将多个片外存储单元分配给各个用户程序。
进一步地,相邻的两个所述存储空间之间设有缓冲区,以免过度密集地排列数据。
需要说明的是,各个用户程序分配不同的片外存储单元后,获取各自的片外存储单元的起始地址和终止地址,按照各自报文的队列数(假设队列数为N)以及队列的最大容量建立各自的空间使用链表。所述空间使用链表中,第一条队列对应的起始地址为首地址,第二条队列对应的起始地址为首地址加上第一条队列的偏移量,第N条队列对应的起始地址为首地址加上前(N-1)条队列的偏移量。
进一步地,在所述片外存储器所在的系统上电后,可以对已划分和分配的存储空间进行更改,即重新划分片外存储器的存储空间,并将重新划分后的存储空间重新分配给各个用户程序。
具体地,重新划分和分配片外存储器的存储空间后,需要对各个用户程序的空间使用链表清空并重新映射,然后将各个用户程序的空间使用链表中未读出的报文或数据写入新分配的存储空间中。
步骤102:配置读写侧调度策略;
进一步地,所述读写侧调度策略包括读出轮询策略、读出调度单元策略、写入轮询策略和写入调度单元策略。
进一步地,在所述步骤102之前,所述方法还包括:
配置各个用户程序的优先级和/或权重。
需要说明的是,在配置各个用户程序的优先级和/或权重时,只需要考虑配置共享同一片外存储器的各个用户程序的优先级和/或权重,没有共享同一片外存储器的各个用户程序之间不需要考虑互相之间的优先级或权重关系。
进一步地,所述读出轮询策略或写入轮询策略可以为轮询(Round Robin,RR)调度、带优先级的RR轮询调度、动态加权循环(Dynamic Weighted Round-Robin,DWRR)轮询调度、差额循环调度(deficit round robin,DRR)、加权循环调度(Weighted Round Robin,WRR)、加权差额循环调度(Weighted Deficit Round Robin,WDRR)或其它现有的轮询调度策略中的任意一种。
进一步地,所述读出调度单元策略或写入调度单元策略可以为以特定比特长度为单位的突发脉冲(Burst)调度或以完整块(Block)为单位的块(Block)调度。
在本发明一实施例中,所述Burst调度策略中的Burst长度可以为256比特(bits);所述Block调度策略的Block长度可配置,例如,Block长度可以为256字节、512字节或1024字节。其中,Block长度要大于Burst的长度,且Block长度为Burst的长度的整数倍。
在本发明一实施例中,根据各个用户程序的写入特点,写入侧可以采用以Block为调度单元的RR轮询策略,读出侧根据各用户程序的读取特点,采用以Burst为调度单元的DWRR轮询策略。或者在写入侧使用DWRR轮询策略,在读出侧使用RR轮询策略。
步骤103:接收用户程序的写入或读出命令,根据配置的读写侧调度策略和分配的存储空间,对用户程序的数据报文进行调度,将用户程序的数据报文写入片外存储器或从片外存储器读取数据报文。
需要说明的是,当读出调度单元策略或写入调度单元策略配置为Burst模式时,因一次调度单元为一个Burst,所以可以支持高优先级用户程序的报文插入低优先级用户程序的报文中间进行发送,即低优先级用户程序正在发送数据时,可以暂停发送后续的数据,先让高优先级用户程序发送,以便保证高优先级用户程序的带宽,高优先级用户程序发送完毕后,低优先级用户程序继续发送,充分利用片外存储的空闲带宽;当读出调度单元策略或写入调度单元策略配置为Block模式时,不支持中断再发,高优先级用户程序需等待低优先级用户程序当次调度的报文块(Block)发送完毕,才可以进行新的调度并发送。如果读出轮询策略或写入轮询策略配置为DWRR轮询调度,在配置各个用户程序的权重之后,会按照权重分配高优先级和低优先级用户程序按比例进行发送,以便保证低优先级用户不会一直被中断。
如图2所示,根据本发明的一种片外存储器的管理装置,包括分配模块、配置模块和调度模块,其中:
分配模块,用于根据片外存储器的存储容量和存储带宽以及各个用户程序需要的存储容量和存储带宽,将片外存储器划分为若干个分别与各个用户程序对应的存储空间,并将若干个存储空间分别分配给各个用户程序;
配置模块,用于配置读写侧调度策略;
调度模块,用于接收来自用户程序的写入或读出命令,根据配置的读写侧调度策略和分配的存储空间,对用户程序的数据报文进行调度,将用户程序的数据报文写入对应的存储空间或从对应的存储空间读取数据报文。
具体的,根据各个用户程序报文数据的特点和需要存储的最大队列数,计算各个用户程序所需的存储容量;根据各个用户程序所需的存储容量和存储带宽以及片外存储器的存储容量和存储带宽,将片外存储器划分为多个片外存储单元,并将多个片外存储单元分配给各个用户程序。
进一步地,相邻的两个所述存储空间之间设有缓冲区,以免过度密集地排列数据。
需要说明的是,各个用户程序分配不同的片外存储单元后,获取各自的片外存储单元的起始地址和终止地址,按照各自报文的队列数(假设队列数为N)以及队列的最大容量建立各自的空间使用链表。所述空间使用链表中,第一条队列对应的起始地址为首地址,第二条队列对应的起始地址为首地址加上第一条队列的偏移量,第N条队列对应的起始地址为首地址加上前(N-1)条队列的偏移量。
进一步地,所述分配模块还用于,在所述片外存储器所在的系统上电后,可以对已划分和分配的存储空间进行更改,即重新划分片外存储器的存储空间,并将重新划分后的存储空间重新分配给各个用户程序。
具体地,所述分配模块重新划分和分配片外存储器的存储空间后,各个用户程序需要对各自的空间使用链表清空并重新映射,然后将各个用户程序的空间使用链表中未读出的报文或数据写入新分配的存储空间中。
进一步地,所述读写侧调度策略包括读出轮询策略、读出调度单元策略、写入轮询策略和写入调度单元策略。
进一步地,所述配置模块还用于,配置各个用户程序的优先级和/或权重。
需要说明的是,所述配置模块在配置各个用户程序的优先级和/或权重时,只需要考虑配置共享同一片外存储器的各个用户程序的优先级和/或权重,没有共享同一片外存储器的各个用户程序之间不需要考虑互相之间的优先级或权重关系。
进一步地,所述读出轮询策略或写入轮询策略可以为轮询(Round Robin,RR)调度、带优先级的RR轮询调度、动态加权循环(Dynamic Weighted Round-Robin,DWRR)轮询调度、差额循环调度(deficit round robin,DRR)、加权循环调度(Weighted Round Robin,WRR)、加权差额循环调度(Weighted Deficit Round Robin,WDRR)或其它现有的轮询调度策略中的任意一种。
进一步地,所述读出调度单元策略或写入调度单元策略可以为以特定比特长度为单位的突发脉冲(Burst)调度或以完整块(Block)为单位的块(Block)调度。
在本发明一实施例中,所述Burst调度策略中的Burst长度可以为256比特(bits);所述Block调度策略的Block长度可配置,例如,Block长度可以为256字节、512字节或1024字节。其中,Block长度要大于Burst的长度,且Block长度为Burst的长度的整数倍。
在本发明一实施例中,根据各个用户程序的写入特点,写入侧可以采用以Block为调度单元的RR轮询策略,读出侧根据各用户程序的读取特点,采用以Burst为调度单元的DWRR轮询策略。或者在写入侧使用DWRR轮询策略,在读出侧使用RR轮询策略。
需要说明的是,当读出调度单元策略或写入调度单元策略配置为Burst模式时,因一次调度单元为一个Burst,所以调度模块可以支持高优先级用户程序的报文插入低优先级用户程序的报文中间进行发送,即低优先级用户程序正在发送数据时,可以暂停发送后续的数据,先让高优先级用户程序发送,以便保证高优先级用户程序的带宽,高优先级用户程序发送完毕后,低优先级用户程序继续发送,充分利用片外存储的空闲带宽;当读出调度单元策略或写入调度单元策略配置为Block模式时,不支持中断再发,高优先级用户程序需等待低优先级用户程序当次调度的报文块(Block)发送完毕,才可以进行新的调度并发送。如果读出轮询策略或写入轮询策略配置为DWRR轮询调度,在配置各个用户程序的权重之后,会按照权重分配高优先级和低优先级用户程序按比例进行发送,以便保证低优先级用户不会一直被中断。
本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现以下步骤:
根据片外存储器的存储容量和存储带宽以及各个用户程序需要的存储容量和存储带宽,将片外存储器划分为若干个分别与各个用户程序对应的存储空间,并将若干个存储空间分别分配给各个用户程序;
配置读写侧调度策略;
接收来自用户程序的写入或读出命令,根据配置的读写侧调度策略和分配的存储空间,对用户程序的数据报文进行调度,将用户程序的数据报文写入对应的存储空间或从对应的存储空间读取数据报文。
具体的,根据各个用户程序报文数据的特点和需要存储的最大队列数,计算各个用户程序所需的存储容量;根据各个用户程序所需的存储容量和存储带宽以及片外存储器的存储容量和存储带宽,将片外存储器划分为多个片外存储单元,并将多个片外存储单元分配给各个用户程序。
进一步地,相邻的两个所述存储空间之间设有缓冲区,以免过度密集地排列数据。
需要说明的是,各个用户程序分配不同的片外存储单元后,获取各自的片外存储单元的起始地址和终止地址,按照各自报文的队列数(假设队列数为N)以及队列的最大容量建立各自的空间使用链表。所述空间使用链表中,第一条队列对应的起始地址为首地址,第二条队列对应的起始地址为首地址加上第一条队列的偏移量,第N条队列对应的起始地址为首地址加上前(N-1)条队列的偏移量。
在本发明一实施例中,在所述将片外存储器划分为若干个存储空间,并将若干个存储空间分配给各个用户程序的步骤之后,所述一个或者多个程序还可被所述一个或者多个处理器执行,以实现以下步骤:
在所述片外存储器所在的系统上电后,对已划分和分配的存储空间进行更改,即重新划分片外存储器的存储空间,并将重新划分后的存储空间重新分配给各个用户程序。
具体地,重新划分和分配片外存储器的存储空间后,需要对各个用户程序的空间使用链表清空并重新映射,然后将各个用户程序的空间使用链表中未读出的报文或数据写入新分配的存储空间中。
进一步地,所述读写侧调度策略包括读出轮询策略、读出调度单元策略、写入轮询策略和写入调度单元策略。
在本发明一实施例中,在所述配置读写侧调度策略的步骤之前,所述一个或者多个程序还可被所述一个或者多个处理器执行,以实现以下步骤:
配置各个用户程序的优先级和/或权重。
需要说明的是,在配置各个用户程序的优先级和/或权重时,只需要考虑配置共享同一片外存储器的各个用户程序的优先级和/或权重,没有共享同一片外存储器的各个用户程序之间不需要考虑互相之间的优先级或权重关系。
进一步地,所述读出轮询策略或写入轮询策略可以为轮询(Round Robin,RR)调度、带优先级的RR轮询调度、动态加权循环(Dynamic Weighted Round-Robin,DWRR)轮询调度、差额循环调度(deficit round robin,DRR)、加权循环调度(Weighted Round Robin,WRR)、加权差额循环调度(Weighted Deficit Round Robin,WDRR)或其它现有的轮询调度策略中的任意一种。
进一步地,所述读出调度单元策略或写入调度单元策略可以为以特定比特长度为单位的突发脉冲(Burst)调度或以完整块(Block)为单位的块(Block)调度。
在本发明一实施例中,所述Burst调度策略中的Burst长度可以为256比特(bits);所述Block调度策略的Block长度可配置,例如,Block长度可以为256字节、512字节或1024字节。其中,Block长度要大于Burst的长度,且Block长度为Burst的长度的整数倍。
在本发明一实施例中,根据各个用户程序的写入特点,写入侧可以采用以Block为调度单元的RR轮询策略,读出侧根据各用户程序的读取特点,采用以Burst为调度单元的DWRR轮询策略。或者在写入侧使用DWRR轮询策略,在读出侧使用RR轮询策略。
需要说明的是,当读出调度单元策略或写入调度单元策略配置为Burst模式时,因一次调度单元为一个Burst,所以可以支持高优先级用户程序的报文插入低优先级用户程序的报文中间进行发送,即低优先级用户程序正在发送数据时,可以暂停发送后续的数据,先让高优先级用户程序发送,以便保证高优先级用户程序的带宽,高优先级用户程序发送完毕后,低优先级用户程序继续发送,充分利用片外存储的空闲带宽;当读出调度单元策略或写入调度单元策略配置为Block模式时,不支持中断再发,高优先级用户程序需等待低优先级用户程序当次调度的报文块(Block)发送完毕,才可以进行新的调度并发送。如果读出轮询策略或写入轮询策略配置为DWRR轮询调度,在配置各个用户程序的权重之后,会按照权重分配高优先级和低优先级用户程序按比例进行发送,以便保证低优先级用户不会一直被中断。
以下通过一个优选实施例,说明本发明的片外存储器的管理方法和装置。值得注意的是,以下的优选实施例只是为了更好的描述本发明,并不构成对本发明不当的限定。
有甲乙两个用户程序需要使用片外存储资源。首先计算甲乙两个用户所需要的最大存储空间,同时发现一组片外存储资源的容量足够容纳甲乙两个用户程序所有的数据存储需求。同时考虑对于这组片外存储的存储带宽来说,带宽资源也足够容纳。那么可以对片外存储资源进行划分,如图3所示,将该组片外存储资源分为A/B/C三个部分,其中A部分足够容纳甲用户程序的需求,C部分足够容纳乙用户程序的需求,B部分为A/C之间的缓冲区,避免过度密集的排列数据。
将甲乙两个用户程序所分配的片外存储空间的首地址发送给甲乙两个用户程序的地址映射表,甲乙两用户程序分别根据其队列个数、队列最大容量进行划分,并建立各自的空间使用链表,同时当片外存储器发回写反馈的命令后,在需要时,从空间使用链表中取出需要去片外存储器读取数据的读命令。在等待读数据返回后,释放链表中的该节点,更新并维护空间使用链表,以保证对片外资源的循环使用。
根据实际的使用条件,配置甲乙两个用户程序各自的优先级及读写侧调度策略,假设甲的优先级高于乙,如果采用DWRR轮询调度,还需要再配置甲乙的权重信息。读写侧的调度单元策略可以选取Burst模式或block模式,两者可以相同,也可以不同。
通过读写调度,将用户程序的写数据有序写入片外存储,在读命令来临时,将用户程序的读命令经过调度发送给片外存储,依次读出数据,返还给用户程序,完成数据流的存储循环。
图4所示的数据流示意图中,第一行为甲用户程序的数据流,每4拍进行一次数据的写入/读取。读取可以和写入的调度相同,也可以不相同,这里以相同进行说明。乙用户程序的数据流为每3拍4次数据的写入/读取。当甲乙不共享片外存储资源和带宽时,则需要两组不同的片外存储去存放,对成本来说,基本是翻倍的,且各个用户程序的数据流相对于片外存储的带宽来说,数据流中有很明显的空隙,因此两者都是带宽占用率不足的。
当甲乙通过Burst调度单元的共享存储时,如图4所示,当甲用户程序的数据来临时,因为其高优先级,会先中断低优先级的乙用户程序的数据流,让甲先行通过。当甲数据流通过之后,断点继续传送剩余的乙用户程序的数据。这种模式的使用,可以充分保证高优先级用户程序先行使用片外存储资源,也使得整条数据流中的空拍减少,增加片外存储资源的带宽利用率。但如果甲用户程序的数据流很长,则乙用户程序的等待时间也会加长。
当甲乙通过Block调度单元共享存储时,如图4所示,当甲用户程序的数据来临时,会先等待正在传输的低优先级的乙用户程序先将当前的Block数据传输完毕之后,才会对甲用户程序的数据进行服务。这种模式的使用,也可以保证充分使用片外存储资源的带宽和存储资源,但如果乙用户程序的数据流很长,则甲用户程序等待的时间也会加长。
为了减少另一个用户程序的等待时间,可以针对数据流特点,采用DWRR的调度,保证两用户程序之间的数据是按照权重进行分配,即不会一味的让高优先级长时间占用带宽,也不会让低优先级抢占带宽。本发明支持系统上电复位后,更改调度策略和调度单元,使得整个调度系统更灵活,同样保证了片外带宽资源的高利用率。从图4的数据流示意图中,可以很明显看出通过调度后共享片外存储可以充分利用片外存储的存储资源和带宽资源,保证带宽资源的不浪费。
本发明提供的片外存储器的管理方法和装置、计算机可读存储介质,针对片外带宽和存储空间都被浪费的技术问题,使用共享管理策略对片外存储空间及带宽进行动态管理和控制,从而充分使用片外存储器的剩余存储空间,并通过共享调度的管理,对特定带宽需求的报文进行调整,调度各用户使用带宽的时隙,保证特定带宽需求用户带宽占用率的同时,填充空闲带宽时隙,有效保证片外缓存的带宽利用率,使片外存储空间和带宽得到充分利用,实现动态调节,节约片外缓存成本。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种片外存储器的管理方法,其特征在于,包括:
根据片外存储器的存储容量和存储带宽以及各个用户程序需要的存储容量和存储带宽,将片外存储器划分为若干个分别与各个用户程序对应的存储空间,并将若干个存储空间分别分配给各个用户程序,相邻的两个所述存储空间之间设有缓冲区;
配置读写侧调度策略;
接收来自用户程序的写入或读出命令,根据配置的读写侧调度策略和分配的存储空间,对用户程序的数据报文进行调度,将用户程序的数据报文写入对应的存储空间或从对应的存储空间读取数据报文。
2.根据权利要求1所述的片外存储器的管理方法,其特征在于,所述读写侧调度策略包括读出轮询策略、读出调度单元策略、写入轮询策略和写入调度单元策略。
3.根据权利要求2所述的片外存储器的管理方法,其特征在于,所述读出轮询策略为带优先级的轮询调度、动态加权循环轮询调度、差额循环调度、加权循环调度或加权差额循环调度;
所述写入轮询策略为带优先级的轮询调度、动态加权循环轮询调度、差额循环调度、加权循环调度或加权差额循环调度;
在所述配置读写侧调度策略的步骤之前,所述方法还包括:
配置所述各个用户程序的优先级和/或权重。
4.根据权利要求2所述的片外存储器的管理方法,其特征在于,所述读出调度单元策略为突发脉冲调度或块调度;所述写入调度单元策略为突发脉冲调度或块调度。
5.一种片外存储器的管理装置,其特征在于,包括分配模块、配置模块和调度模块,其中:
所述分配模块,用于根据片外存储器的存储容量和存储带宽以及各个用户程序需要的存储容量和存储带宽,将片外存储器划分为若干个分别与各个用户程序对应的存储空间,并将若干个存储空间分别分配给各个用户程序,相邻的两个所述存储空间之间设有缓冲区;
所述配置模块,用于配置读写侧调度策略;
所述调度模块,用于接收来自用户程序的写入或读出命令,根据配置的读写侧调度策略和分配的存储空间,对用户程序的数据报文进行调度,将用户程序的数据报文写入对应的存储空间或从对应的存储空间读取数据报文。
6.根据权利要求5所述的片外存储器的管理装置,其特征在于,所述读写侧调度策略包括读出轮询策略、读出调度单元策略、写入轮询策略和写入调度单元策略。
7.根据权利要求6所述的片外存储器的管理装置,其特征在于,所述读出轮询策略为带优先级的轮询调度、动态加权循环轮询调度、差额循环调度、加权循环调度或加权差额循环调度;
所述写入轮询策略为带优先级的轮询调度、动态加权循环轮询调度、差额循环调度、加权循环调度或加权差额循环调度;
所述配置模块还用于:配置所述各个用户程序的优先级和/或权重。
8.根据权利要求6所述的片外存储器的管理装置,其特征在于,所述读出调度单元策略为突发脉冲调度或块调度;所述写入调度单元策略为突发脉冲调度或块调度。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现以下步骤:
根据片外存储器的存储容量和存储带宽以及各个用户程序需要的存储容量和存储带宽,将片外存储器划分为若干个分别与各个用户程序对应的存储空间,并将若干个存储空间分别分配给各个用户程序,相邻的两个所述存储空间之间设有缓冲区;
配置读写侧调度策略;
接收来自用户程序的写入或读出命令,根据配置的读写侧调度策略和分配的存储空间,对用户程序的数据报文进行调度,将用户程序的数据报文写入对应的存储空间或从对应的存储空间读取数据报文。
CN201710412636.0A 2017-06-05 2017-06-05 一种片外存储器的管理方法和装置、计算机可读存储介质 Active CN108984280B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710412636.0A CN108984280B (zh) 2017-06-05 2017-06-05 一种片外存储器的管理方法和装置、计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710412636.0A CN108984280B (zh) 2017-06-05 2017-06-05 一种片外存储器的管理方法和装置、计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN108984280A CN108984280A (zh) 2018-12-11
CN108984280B true CN108984280B (zh) 2022-04-22

Family

ID=64501129

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710412636.0A Active CN108984280B (zh) 2017-06-05 2017-06-05 一种片外存储器的管理方法和装置、计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN108984280B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704369B (zh) * 2019-10-09 2023-06-06 苏州盛科通信股份有限公司 存储器及其控制方法
CN111176582A (zh) 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
US11061571B1 (en) * 2020-03-19 2021-07-13 Nvidia Corporation Techniques for efficiently organizing and accessing compressible data
CN111813717B (zh) * 2020-06-10 2022-03-01 烽火通信科技股份有限公司 一种数据帧存储切换的装置及方法
CN112131150B (zh) * 2020-09-15 2023-10-03 北京神州飞航科技有限责任公司 一种多片外存储器控制方法和装置
CN113608696A (zh) * 2021-08-04 2021-11-05 北京八分量信息科技有限公司 异构网络中共享存储资源的自动配置方法、装置及相关产品
CN117827703A (zh) * 2022-09-29 2024-04-05 深圳市中兴微电子技术有限公司 存储调度方法、装置、设备及计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541678A (zh) * 2011-12-30 2012-07-04 中国人民解放军国防科学技术大学 多通道与非型快闪并行存储控制器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5104855B2 (ja) * 2007-03-23 2012-12-19 富士通株式会社 負荷分散プログラム、負荷分散方法、及びストレージ管理装置
CN101847127B (zh) * 2010-06-18 2012-01-25 福建星网锐捷网络有限公司 一种内存管理方法及装置
CN102662761A (zh) * 2012-03-27 2012-09-12 福建星网锐捷网络有限公司 一种多核中央处理器系统中内存池的调度方法以及装置
CN104899089A (zh) * 2015-05-25 2015-09-09 常州北大众志网络计算机有限公司 一种面向异构多核体系的任务调度方法
US9886313B2 (en) * 2015-06-19 2018-02-06 Sap Se NUMA-aware memory allocation
CN105786502B (zh) * 2016-02-26 2019-09-03 成都雅骏新能源汽车科技股份有限公司 一种调度式嵌入式应用软件架构及其实现方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541678A (zh) * 2011-12-30 2012-07-04 中国人民解放军国防科学技术大学 多通道与非型快闪并行存储控制器

Also Published As

Publication number Publication date
CN108984280A (zh) 2018-12-11

Similar Documents

Publication Publication Date Title
CN108984280B (zh) 一种片外存储器的管理方法和装置、计算机可读存储介质
US11347556B2 (en) Configurable logic platform with reconfigurable processing circuitry
US9128925B2 (en) System and method for direct memory access buffer utilization by setting DMA controller with plurality of arbitration weights associated with different DMA engines
US9225668B2 (en) Priority driven channel allocation for packet transferring
US10387202B2 (en) Quality of service implementation in a networked storage system with hierarchical schedulers
US6625709B2 (en) Fair share dynamic resource allocation scheme with a safety buffer
US11586392B2 (en) Multi-stream SSD QoS management
TW201001975A (en) Network system with quality of service management and associated management method
JP4336108B2 (ja) ネットワークプロセッサにおいてメモリ帯域幅を効率的に共用する装置および方法
WO2007004159A2 (en) Method and apparatus for bandwidth efficient and bounded latency packet buffering
CN103810133A (zh) 动态共享读缓冲器管理
US20140036680A1 (en) Method to Allocate Packet Buffers in a Packet Transferring System
JP2011204233A (ja) バッファマネージャおよびメモリ管理方法
US20200076742A1 (en) Sending data using a plurality of credit pools at the receivers
US20190220425A1 (en) Network device and method of operation
US20100296520A1 (en) Dynamic quality of service adjustment across a switching fabric
US9529745B2 (en) System on chip and method of operating a system on chip
US11347567B2 (en) Methods and apparatus for multiplexing data flows via a single data structure
US9658951B1 (en) Scalable high bandwidth memory in a network device
CN114640630B (zh) 一种流量管控方法、装置、设备及可读存储介质
JP2004527024A (ja) 多重チャネルを有するデータメモリアクセス用のスケジューラ
CN111582739B (zh) 一种多租户固态盘性能隔离条件下实现高带宽的方法
JP4821418B2 (ja) 通信装置、データ伝送方法、プログラムおよび通信システム
US20230141122A1 (en) Scheduling storage tasks
US20050213925A1 (en) Fiber channel switching system

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