CN111782561B - 一种sram的存储空间分配方法、装置及芯片 - Google Patents
一种sram的存储空间分配方法、装置及芯片 Download PDFInfo
- Publication number
- CN111782561B CN111782561B CN202010925862.0A CN202010925862A CN111782561B CN 111782561 B CN111782561 B CN 111782561B CN 202010925862 A CN202010925862 A CN 202010925862A CN 111782561 B CN111782561 B CN 111782561B
- Authority
- CN
- China
- Prior art keywords
- interface
- storage space
- target
- sram
- global array
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本申请实施例提供了一种SRAM的存储空间分配方法、装置及芯片,方法包括:根据当前启用的第一接口的速率,确定第一接口所需占用的SRAM的存储空间的目标尺寸;从全局数组中获取连续且元素值为第一预设值的目标元素,目标元素对应存储空间的尺寸总和大于等于目标尺寸,第一预设值用于指示对应的存储空间未被占用;将目标元素对应的存储空间分配给第一接口,并将全局数组中目标元素的元素值置为第二预设值,第二预设值指示存储空间已被占用;当第一接口被删除时,将全局数组中目标元素的元素值置为第一预设值。应用本申请实施例提供的技术方案,提高了SRAM的存储空间分配的灵活性,提高了SRAM的存储空间利用率,降低了SRAM的面积,减轻了后端开发的布线难度。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种SRAM的存储空间分配方法、装置及芯片。
背景技术
随着因特网的宽带化和局域网的高速化,通信设备间需要进行大量的数据通信,因此高速率、大容量的数据缓冲的需求变得越发的急迫。SRAM(Static Random-AccessMemory,静态随机存取存储器)一种具有静止存取功能的内存,其特点是:不需要对电路进行刷新就能实现保存数据的功能。SRAM利用晶体管来实现对数据进行存储,其不需要刷新电路,这使得整个存储器的工作性能比动态随机存取存储器高。因此,SRAM能够很好的满足高速率、大容量的数据缓冲的需求,进而SRAM被广泛应用于通信设备上。
虽然SRAM有着数据读写速度快的突出优势,但却有着集成度低、体积较大的缺陷。而相关技术中,为每个接口分配固定的SRAM的存储空间。这种SRAM的存储空间分配不够灵活,且容易造成实际分配的SRAM的存储空间远远大于通信设备实际需求的SRAM的存储空间,SRAM的存储空间利用率低。另外,由于实际分配的SRAM的存储空间远远大于通信设备实际需求的SRAM的存储空间,这增加了SRAM的面积的同时,还加重了后端开发的布线难度。
发明内容
本申请实施例的目的在于提供一种SRAM的存储空间分配方法、装置及芯片,以提高SRAM的存储空间分配的灵活性,提高SRAM的存储空间的利用率,降低SRAM的面积,减轻后端开发的布线难度。具体技术方案如下:
第一方面,本申请实施例提供了一种SRAM的存储空间分配方法,所述方法包括:
获取当前启用的第一接口的速率;
根据所述第一接口的速率,确定所述第一接口所需占用的所述SRAM的存储器空间的目标尺寸;
从全局数组中获取连续且元素值为第一预设值的目标元素,所述全局数组中的元素与所述SRAM中的存储空间一一对应,且所述全局数组中相邻的元素对应的存储空间相邻,所述目标元素对应的存储空间的尺寸总和大于等于所述目标尺寸,所述第一预设值用于指示对应的存储空间未被占用;
将所述目标元素对应的存储空间分配给所述第一接口,并将所述全局数组中所述目标元素的元素值置为第二预设值,所述第二预设值用于指示对应的存储空间已被占用;
当所述第一接口被删除时,将所述全局数组中所述目标元素的元素值置为所述第一预设值。
可选的,在所述从全局数组中获取连续且元素值为第一预设值的目标元素的步骤之前,还包括:
判断所述全局数组中连续且元素值为所述第一预设值的元素对应存储空间的尺寸总和是否小于所述目标尺寸;
当小于所述目标尺寸时,返回指示资源不足的提示信息;
当大于等于目标尺寸时,则继续执行所述从全局数组中获取连续且元素值为第一预设值的目标元素的步骤。
可选的,所述将所述目标元素对应的存储空间分配给所述第一接口的步骤,包括:
确定所述目标元素对应的存储空间中的起始位置;
将所述起始位置和所述目标尺寸写入所述第一接口对应的寄存器中。
可选的,所述将所述全局数组中所述目标元素的元素值置为所述第一预设值的步骤,包括:
从所述第一接口对应的寄存器中读取所述起始位置和所述目标尺寸;
根据所述起始位置和所述目标尺寸,确定所述全局数组中所述第一接口对应的所述目标元素;
将所述目标元素的元素值置为所述第一预设值。
可选的,所述根据所述起始位置和所述目标尺寸,确定所述全局数组中所述第一接口对应的所述目标元素的步骤,包括:
根据所述起始位置和所述目标尺寸,确定所述第一接口所占用的存储空间;
若所述第一接口所占用的存储空间未超过所述SRAM的总存储空间,则确定所述全局数组中所述第一接口所占用的存储空间对应的所述目标元素;
所述方法还包括:
若所述第一接口所占用的存储空间超过所述SRAM的总存储空间,则返回指示读取信息错误的提示信息。
第二方面,本申请实施例提供了一种SRAM的存储空间分配装置,所述装置包括:
第一获取单元,用于获取当前启用的第一接口的速率;
第一确定单元,用于根据所述第一接口的速率,确定所述第一接口所需占用的所述SRAM的存储空间的目标尺寸;
第二获取单元,用于从全局数组中获取连续且元素值为第一预设值的目标元素,所述全局数组中的元素与所述静态随机存取存储器中的存储空间一一对应,且所述全局数组中相邻的元素对应的存储空间相邻,所述目标元素对应存储空间的尺寸总和大于等于所述目标尺寸,所述第一预设值用于指示对应的存储空间未被占用;
分配单元,用于将所述目标元素对应的存储空间分配给所述第一接口,并将所述全局数组中所述目标元素的元素值置为第二预设值,所述第二预设值用于指示对应的存储空间已被占用;
回收单元,用于当所述第一接口被删除时,将所述全局数组中所述目标元素的元素值置为所述第一预设值。
可选的,所述装置还包括:
判断单元,用于在所述第二获取单元从全局数组中获取连续且元素值为第一预设值的目标元素之前,判断所述全局数组中连续且元素值为所述第一预设值的元素对应存储空间的尺寸总和是否小于所述目标尺寸;
第一返回单元,用于在所述判断单元的判断结果为是的情况下,返回指示资源不足的提示信息;
所述第二获取单元,还用于在所述判断单元的判断结果为否的情况下,从全局数组中获取连续且元素值为第一预设值的目标元素。
可选的,所述分配单元,具体用于:
确定所述目标元素对应的存储空间中的起始位置;将所述起始位置和所述目标尺寸写入所述第一接口对应的寄存器中。
可选的,所述回收单元,具体用于:
从所述第一接口对应的寄存器中读取所述起始位置和所述目标尺寸;根据所述起始位置和所述目标尺寸,确定所述全局数组中所述第一接口对应的所述目标元素;将所述目标元素的元素值置为所述第一预设值。
可选的,所述回收单元,具体用于根据所述起始位置和所述目标尺寸,确定所述第一接口所占用的存储空间;若所述第一接口所占用的存储空间未超过所述SRAM的总存储空间,则根据所述起始位置和所述目标尺寸,确定所述全局数组中所述第一接口所占用的存储空间对应的所述目标元素;
所述回收单元,还用于若所述第一接口所占用的存储空间超过所述SRAM的总存储空间,则返回指示读取信息错误的提示信息。
第三方面,本申请实施例提供了一种芯片,包括NDMA(Network Direct MemoryAccess,网络直接存储器访问)模块和静态随机存取存储器SRAM,所述NDMA模块用于:
获取当前启用的第一接口的速率;
根据所述第一接口的速率,确定所述第一接口所需占用的所述SRAM的存储空间的目标尺寸;
从全局数组中获取连续且元素值为第一预设值的目标元素,所述全局数组中的元素与所述SRAM中的存储空间一一对应,且所述全局数组中相邻的元素对应的存储空间相邻,所述目标元素对应存储空间的尺寸总和大于等于所述目标尺寸,所述第一预设值用于指示对应的存储空间未被占用;
将所述目标元素对应的存储空间分配给所述第一接口,并将所述全局数组中所述目标元素的元素值置为第二预设值,所述第二预设值用于指示对应的存储空间已被占用;
当所述第一接口被删除时,将所述全局数组中所述目标元素的元素值置为所述第一预设值。
本申请实施例提供的技术方案中,基于全局数组对SRAM的存储空间进行全局控制,如:将全局数组中启用的接口所占用的存储空间对应元素的元素值置为第二预设值,占用SRAM的存储空间,将全局数组中被删除的接口所占用的存储空间对应元素的元素值置为第一预设值,回收SRAM的存储空间。这样,可以循环利用SRAM的存储空间,提高了SRAM的存储空间分配的灵活性,提高了SRAM的存储空间的利用率。此外,由于SRAM的存储空间可以循环被利用,因此可以降低SRAM的面积,进而减轻后端开发的布线难度。
当然,实施本申请的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为SRAM的配置框图的一种示意图;
图2为相关技术中SRAM的存储空间分配情况的一种示意图;
图3为本申请实施例提供的SRAM的存储空间分配方法的第一种流程示意图;
图4为本申请实施例提供的SRAM的存储空间分配方法的第二种流程示意图;
图5为本申请实施例提供的SRAM的存储空间分配方法的第三种流程示意图;
图6为本申请实施例提供的SRAM的存储空间分配方法的第四种流程示意图;
图7为本申请实施例提供的分配SRAM的存储空间的方法的一种流程示意图;
图8为本申请实施例提供的释放SRAM的存储空间的方法的一种流程示意图;
图9为本申请实施例提供的SRAM的存储空间分配情况的一种示意图;
图10为基于图9所示的SRAM的存储空间分配情况进行释放空间后的SRAM的存储空间分配情况的一种示意图;
图11为本申请实施例提供的SRAM的存储空间分配装置的一种结构示意图;
图12为本申请实施例提供的通信设备的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
SRAM为芯片的一部分。芯片可以为NP(Network Processor,网络处理芯片),芯片也可以为其他芯片,如DSP(Digital Signal Processor,数字信号处理芯片)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。本申请实施例对此不作限定。
以SRAM为NP的一部分为例,NP中,设置有硬件NDMA模块。在数据通路的入方向NDMA模块将数据存入内存,生成报文描述符,并通过SRAM对报文描述符进行存储。在数据通路的出方向,NDMA模块解析报文描述符后将数据从内存中取出。SRAM的配置框图如图1所示。图1中,控制层CPU(Central Processing Unit,中央处理器)的第三方SDK(SoftwareDevelopment Kit,软件开发包)配置SRAM的可用存储空间,通过PCIe(PeripheralComponent Interconnect Express,高速外围组件互连)通道将SRAM的可用存储空间的配置信息写到NP的寄存器中,NP的逻辑设计根据寄存器中的配置信息,将数据存到SRAM中的对应存储空间。
在NDMA模块对数据进行处理和传输的过程中,会将报文描述符存在SRAM中,并按接口对其进行排序,以确保数据的准确性。每个接口占用SRAM的起始位置和存储空间大小由设计确定,并由第三方SDK进行配置,通过PCIe通道将配置信息写在芯片的寄存器中。
假设,NP支持4个MAC地址,分别为MAC0、MAC1、MAC2和MAC3,每个MAC地址可支持多个单接口,其中,单接口支持的速率为10GE(Gigabit Ethernet,千兆以太网)、25GE和50GE,通过多个单接口可组合成速率更高的接口,如100GE、200GE和400GE接口。每个MAC地址选择12接口的模式,故整个NP共有48个接口。在对SRAM的存储空间进行分配时,为了保证接口之间的独立性,分别为每一个接口分配固定的SRAM的存储空间,即每一个接口分配固定的起始位置和存储空间大小。以每个速率为10GE的接口占用存储空间的尺寸为“深度为16,宽度为98字节(Bytes)”为例,则SRAM的存储空间分配情况如图2所示。图2中,4个MAC地址的48个接口共占用空间的深度为2816,宽度为98Bytes,port0-11表示12个单接口,SRAM所在行的数字表示SRAM的存储空间的深度,接口port0-11所在列与接口速率(10GE、25GE、50GE、100GE、200GE和400GE)所在行的交汇处带阴影的矩形框表示一个相应速率的接口。
如上所述,不论接口是否启用,为每个接口均分配固定的SRAM的存储空间。这种SRAM的存储空间的分配不够灵活,且容易造成实际分配的SRAM的存储空间远远大于通信设备实际需求的SRAM的存储空间,SRAM的存储空间利用率低。另外,由于实际分配的SRAM的存储空间远远大于通信设备实际需求的SRAM的存储空间,这增加了SRAM的面积的同时,还加重了后端开发的布线难度。
为解决上述问题,本申请实施例提供了一种SRAM的存储空间分配方法。参考图3,图3为本申请实施例提供的SRAM的存储空间分配方法的第一种流程示意图,该方法包括如下步骤。
步骤31,获取当前启用的第一接口的速率。
步骤32,根据第一接口的速率,确定第一接口所需占用的SRAM的存储空间的目标尺寸。
步骤33,从全局数组中获取连续且元素值为第一预设值的目标元素,全局数组中的元素与SRAM中的存储空间一一对应,且全局数组中相邻的元素对应的存储空间相邻,目标元素对应的存储空间的尺寸总和大于等于目标尺寸,第一预设值用于指示对应的存储空间未被占用。
步骤34,将目标元素对应的存储空间分配给第一接口,并将全局数组中目标元素的元素值置为第二预设值,第二预设值用于指示对应的存储空间已被占用。
步骤35,当第一接口被删除时,将全局数组中目标元素的元素值置为第一预设值。
本申请实施例提供的一种SRAM的存储空间分配方法中,基于全局数组对SRAM的存储空间进行全局控制,如:将全局数组中启用的接口所占用的存储空间对应元素的元素值置为第二预设值,占用SRAM的存空间,将被删除的接口所占用的存储空间对应元素的元素值置为第一预设值,回收SRAM的存储空间。这样,可以循环利用SRAM的存储空间,提高了SRAM的存储空间分配的灵活性,提高了SRAM的存储空间利用率。此外,由于SRAM的存储空间可以循环被利用,因此可以降低SRAM的面积,进而减轻后端开发的布线难度。
上述SRAM的存储空间分配方法可以应用于芯片上的NDMA模块,也可以应用于芯片上具有数据处理功能的模块。为便于描述,下面以NDMA模块为执行主体为例进行说明,并不起限定作用。
步骤31中,第一接口可以为芯片的任一接口,第一接口为芯片与其他设备或本设备的其他模块数据通信的接口。这里仅以第一接口为例进行说明,并不起限定作用。接口的速率又可以称为接口类型。第一接口的速率为芯片通过第一接口与其他设备或本设备的其他模块进行数据通信的速率。
一个实施例中,对于芯片的每一接口,NDMA模块判断该接口的状态是否处于启用状态。若是,则NDMA模块将该接口作为第一接口,获取该第一接口的速率。
另一个实施例中,NDMA模块接收到一接口的启用指令时,启用该接口,并将该接口作为第一接口,获取该第一接口的速率。
步骤32中,接口的速率与存储空间尺寸存在一定的对应关系。NDMA模块在获取到第一接口的速率,根据第一接口的速率,结合接口的速率与存储空间尺寸间的对应关系,确定第一接口所需占用的SRAM的存储空间的目标尺寸。其中,SRAM设置在芯片上。
例如,10GE对应的存储空间尺寸为:深度16,宽度98Bytes。若第一接口的速率为100GE,则NDMA模块可确定第一接口所需占用的SRAM的存储空间的目标尺寸为:深度100/10*16=160,宽度98Bytes。
步骤33中,芯片中设置了全局数组。全局数组为一维数组,全局数组中的不同元素对应SRAM中不同位置处的存储空间。全局数组可以很好的展示出SRAM的存储空间的使用情况。如全局数组中元素的值为第一预设值,则指示该元素对应的SRAM中的存储空间未占用,全局数组中元素的值为第二预设值,则指示该元素对应的SRAM中的存储空间已占用。
本申请实施例中,为了便于统计管理,全局数组中每一元素对应的存储空间的尺寸相同。其中,全局数组中每一元素对应的存储空间的尺寸可以根据实际需求进行设定。一个示例中,为了便于管理全局数组,全局数组中每一元素对应的存储空间的尺寸可以基于接口的速率与存储空间尺寸间对应关系确定。如上述,10GE对应的空间尺寸为:深度16,宽度98Bytes,则全局数组中每一元素对应的存储空间的尺寸可以为:深度16,宽度98Bytes。
NDMA模块在确定目标尺寸后,遍历全局数组,从全局数组中获取连续且元素值为第一预设值的目标元素。这里,目标元素可以为一个或多个。目标元素对应的存储空间为SRAM中未被占用的存储空间。
本申请实施例中,为保证数据的准确存储,在启用SRAM前,初始化全局数组,将全局数组中所有元素的元素值置为第一预设值。为了节约SRAM的存储空间,目标元素对应的存储空间的尺寸总和可以等于目标尺寸。
步骤34中,NDMA模块在确定目标元素后,将SRAM中目标元素对应的存储空间分配给第一接口,并将全局数组中目标元素的元素值置为第二预设值,第二预设值用于指示对应的存储空间已被占用。避免目标元素对应的存储空间再次分配给其他接口,而造成地址冲突的问题。
步骤35中,当第一接口被删除时,NDMA模块将全局数组中目标元素的元素值置为第一预设值,回收SRAM中目标元素对应的存储空间,以便于将目标元素对应的存储空间分配给后续启用的其他接口,保证SRAM的存储空间的循环利用。
本申请实施例中,第一预设值和第二预设值可以根据实际需求进行设定。例如,第一预设值为0,第二预设值为1;或者,第一预设值为1,第二预设值为0。
在本申请的一个实施例中,本申请实施例中还提供了一种SRAM的存储空间分配方法。参见图4,图4为本申请实施例提供的SRAM的存储空间分配方法的第二种流程示意图,该方法还可以包括如下步骤。
步骤36,判断全局数组中连续且元素值为第一预设值的元素对应存储空间的尺寸总和是否小于目标尺寸。若是,则执行步骤37;若否,则执行步骤33。
步骤37,返回指示资源不足的提示信息。
本申请实施例中,全局数组中连续且元素值为第一预设值的元素对应存储空间的尺寸总和,即为SRAM中可用存储空间的尺寸。NDMA模块确定全局数组中连续且元素值为第一预设值的元素对应存储空间的尺寸总和是否小于目标尺寸,也就是,判断SRAM中可用存储空间的尺寸是否满足第一接口的速率的需求。
若全局数组中连续且元素值为第一预设值的元素对应存储空间的尺寸总和小于目标尺寸,则NDMA模块可确定SRAM中可用存储空间的尺寸无法满足第一接口的速率的需求,返回指示资源不足的提示信息。以便于用户调整第一接口的速率,或调整占用SRAM的存储空间的其他接口的速率,满足通信需求。
若全局数组中连续且元素值为第一预设值的元素对应存储空间的尺寸总和大于等于目标尺寸,则NDMA模块可确定SRAM中可用存储空间的尺寸能够满足第一接口的速率的需求,继续执行步骤33,为第一接口分配SRAM的存储空间。
在本申请的一个实施例中,接口的配置信息存储在接口对应的寄存器中。这种情况下,步骤34具体可以为:NDMA模块确定目标元素对应的存储空间中的起始位置;将起始位置和目标尺寸写入第一接口对应的寄存器中,并将全局数组中目标元素的元素值置为第二预设值。
这样,芯片中的逻辑设计根据第一接口对应的寄存器中的配置信息,即第一接口对应的寄存器中的起始位置和目标尺寸,将数据存到SRAM中的对应存储空间。
在本申请实施例中,目标元素可以为一个或多个。若目标元素为一个,则NDMA模块可以确定该目标元素对应的存储空间中的起始位置。若目标元素为多个,则NDMA模块可以确定这多个目标元素对应的多个存储空间中最靠前的存储空间为起始位置。
在本申请的一个实施例中,本申请实施例中还提供了一种SRAM的存储空间分配方法。参见图5,图5为本申请实施例提供的SRAM的存储空间分配方法的第三种流程示意图,该方法中,步骤35可以细化为如下步骤。
步骤351,当第一接口被删除时,从第一接口对应的寄存器中读取起始位置和目标尺寸。
步骤352,根据读取到的起始位置和目标尺寸,确定全局数组中第一接口对应的目标元素。
步骤353,将目标元素的元素值置为第一预设值。
本申请实施例中,全局数组中的元素与SRAM中的存储空间一一对应,根据读取到的起始位置,NDMA模块可确定全局数组中第一接口所占用的存储空间对应的第一个目标元素;根据目标尺寸,以第一个目标元素为起点,NDMA模块可确定全局数组中第一接口所占用的存储空间对应的其他目标元素。这样,NDMA模块就确定了所有的目标元素,进而将目标元素的元素值置为第一预设值。这样目标元素对应的存储空间被释放,进而后续可分配给其他接口。
在本申请的一个实施例中,本申请实施例中还提供了一种SRAM的存储空间分配方法。参见图6,图6为本申请实施例提供的SRAM的存储空间分配方法的第四种流程示意图,该方法中,步骤352可以细化为如下步骤。
步骤352a,根据起始位置和目标尺寸,确定第一接口所占用的存储空间。
步骤352b,判断第一接口所占用的存储空间是否超过SRAM的总存储空间。若是,则执行步骤352c;若否,执行步骤352d。
步骤352c,返回指示读取信息错误的提示信息。
步骤352d,确定全局数组中第一接口所占用的存储空间对应的目标元素。
本申请实施例中,当第一接口被删除时,NDMA模块在读取到起始位置和目标尺寸后,基于读取到的起始位置和目标尺寸,可确定出第一接口所占用的存储空间,进而判断第一接口所占用的存储空间是否超过SRAM的总存储空间。实际应用中,接口所占用的存储空间不会大于SRAM的总存储空间。因此,若第一接口所占用的存储空间超过SRAM的总存储空间,则NDMA模块可确定读取到的配置信息错误,返回指示读取信息错误的提示信息。若第一接口所占用的存储空间未超过SRAM的总存储空间,则确定全局数组中第一接口所占用的存储空间对应的目标元素,进而释放第一接口占用的SRAM的存储空间。
上述导致NDMA模块读取到的配置信息错误的原因有多种,如寄存器本身故障,或寄存器中存储的数据本身就是错误的等。本申请实施例中,第一接口所占用的存储空间对应的目标元素即为第一接口对应的目标元素。
下面结合图7所示的分配SRAM的存储空间的方法的流程示意图,图8所示的释放SRAM的存储空间的方法的流程示意图,对本申请实施例提供的SRAM的存储空间分配方法进行详细说明。其中,芯片支持4个MAC地址,分别为MAC0、MAC1、MAC2和MAC3,每个MAC地址选择12接口的模式,其中,单接口支持的速率为10GE和25GE。SRAM的存储空间可支持同时启用10个100GE接口,此时,SRAM的存储空间的总尺寸为:深度为1600,宽度为98Bytes。第一预设值为0,第二预设值为1。
分配SRAM的存储空间的流程包括:
步骤71,初始化指示SRAM的存储空间的使用情况的全局数组。
NDMA模块预先定义一个长度为SRAM的可用深度的全局数组,用于标识SRAM的存储空间的使用情况。NDMA模块初始化该全局数组,将该全局数组中所有元素的元素值置为0。例如,全局数组中每个元素对应的存储空间的尺寸为:深度16,宽度98Bytes,也就是,每个元素表示深度16的存储空间。则初始化后的全局数组如下表1所示。
表1
位置 | 0 | 1 | 2 | 3 | … | 95 | 96 | 97 | 98 | 99 |
状态 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
步骤72,判断当前接口的状态是否处于启用状态。若否,即当前接口未被启用,则执行步骤73;若是,即当前接口已被启用,则执行步骤74,开始为该接口分配SRAM的存储空间。
步骤73,在该接口对应的寄存器中写入0。
步骤74,根据该接口的速率计算该接口所需要占用的SRAM的存储空间的目标尺寸。
例如,该接口的速率为100GE,则NDMA模块可确定该接口所需要占用的SRAM的存储空间的目标尺寸为100/10*16=160。
步骤75,判断SRAM剩余的存储空间的尺寸是否小于目标尺寸。若是,则确定当前SRAM的剩余存储空间无法满足第一接口的速率的需求,执行步骤76;若否,则确定当前SRAM的剩余存储空间能够满足第一接口的速率的需求,执行步骤77。
本申请实施例中,NDMA模块可通过读取全局数组中连续且值为0的元素,确定SRAM中的剩余存储空间。
例如,全局数组中连续且元素值为0的元素最大长度为10,则SRAM中的剩余存储空间的深度可以为10*16=160。
步骤76,返回指示资源不足的提示信息。
步骤77,遍历全局数组,从全局数组中获取连续且元素值为0的目标元素。目标元素对应存储空间的尺寸总和大于等于目标尺寸。
步骤78,将全局数组中所有目标元素的元素值置为1。这表示目标元素对应的存储空间已被占用。
步骤79,确定全局数组中目标元素对应的存储空间的起始位置,将起始位置和目标尺寸写入该接口对应的寄存器中。
以启用了10个100GE接口为例,若这10个100GE包括MAC0、MAC1和MAC2的所有接口组合得到的9个100GE接口,以及MAC3的单接口port0-3组合得到的1个100GE接口,则最终全局数组如表2所示,SRAM的存储空间分配情况如图9所示。图9中,port0-11表示12个单接口,SRAM所在行的数字表示SRAM的存储空间的深度,接口port存储空间所在列与接口速率(100GE)所在行的交汇处带阴影的矩形框表示一个相应速率的接口,带NA的矩形框表示未分配SRAM的存储空间的接口,也就是未启用的接口。
表2
位置 | 0 | 1 | 2 | 3 | … | 95 | 96 | 97 | 98 | 99 |
状态 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
释放SRAM的存储空间的流程包括:
步骤81,判断当前接口是否被删除。若是,则执行步骤82,执行资源回收;若否,则结束当前流程,不做任何处理。
步骤82,从该接口对应的寄存器中读取起始位置和目标尺寸,根据起始位置和目标尺寸,确定该接口所占用的存储空间。
步骤83,判断该接口所占用的存储空间是否超过SRAM的总存储空间。若是,则确定从寄存器中读取的配置信息错误,执行步骤84;若否,则执行步骤85。
步骤84,返回指示读取信息错误的提示信息。
步骤85,将全局数组中该接口对应的所有元素的元素值置为0,以释放该接口占用的SRAM的存储空间。
仍以图9所示的SRAM的存储空间分配情况为例继续说明,当删除了MAC0的单接口port4-7组合得到的1个100GE接口后,SRAM的存储空间分配情况如图10所示。此时,全局数组中该100GE接口对应的元素为第10-19位的元素,则NDMA模块将全局数组中第10-19位元素的元素值置为0,如表3所示。
表3
位置 | 0 | 1 | 2 | … | 9 | 10 | 11 | … | 18 | 19 | 20 | … | 96 | 97 | 98 | 99 |
状态 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
在芯片最大可支持1T Gbps性能的情况下,对比本申请实施例中SRAM的存储空间分配情况(如图9和图10所示)与相关技术中的SRAM的存储空间分配情况(如图1所示),本申请实施例中占用SRAM的存储空间为:深度1600,宽度98Bytes,而相关技术中占用SRAM的存储空间为:深度2816,宽度98Bytes。可见,本申请实施例节约了1600/2816=43%的SRAM的存储空间,降低了SRAM的面积,进而减轻了后端开发的布线难度。另外,本申请实施例中,SRAM的存储空间可循环被利用,提高了SRAM的存储空间利用率。
与上述SRAM的存储空间分配方法对应,本申请实施例还提供了一种SRAM的存储空间分配装置。参见图11,图11为本申请实施例提供的SRAM的存储空间分配装置的一种结构示意图,该装置包括:
第一获取单元111,用于获取当前启用的第一接口的速率;
第一确定单元112,用于根据第一接口的速率,确定第一接口所需占用的SRAM的存储空间的目标尺寸;
第二获取单元113,用于从全局数组中获取连续且元素值为第一预设值的目标元素,全局数组中的元素与SRAM中的存储空间一一对应,且全局数组中相邻的元素对应的存储空间相邻,目标元素对应存储空间的尺寸总和大于等于目标尺寸,第一预设值用于指示对应的存储空间未被占用;
分配单元114,用于将目标元素对应的存储空间分配给第一接口,并将全局数组中目标元素的元素值置为第二预设值,第二预设值用于指示对应的存储空间已被占用;
回收单元115,用于当第一接口被删除时,将全局数组中目标元素的元素值置为第一预设值。
一个实施例中,上述SRAM的存储空间分配装置还可以包括:
判断单元(图中未示出),用于在第二获取单元113从全局数组中获取连续且元素值为第一预设值的目标元素之前,判断全局数组中连续且元素值为第一预设值的元素对应存储空间的尺寸总和是否小于目标尺寸;
第一返回单元(图中未示出),用于在判断单元的判断结果为是的情况下,返回指示资源不足的提示信息;
这种情况下,第二获取单元113,还可以用于在判断单元的判断结果为否的情况下,从全局数组中获取连续且元素值为第一预设值的目标元素。
一个实施例中,分配单元114,具体可以用于:
确定目标元素对应的存储空间的起始位置;将起始位置和目标尺寸写入第一接口对应的寄存器中。
一个实施例中,回收单元115,具体可以用于:
从第一接口对应的寄存器中读取起始位置和目标尺寸;根据起始位置和目标尺寸,确定全局数组中第一接口对应的目标元素;将目标元素的元素值置为第一预设值。
一个实施例中,回收单元115,具体可以用于根据起始位置和目标尺寸,确定第一接口所占用的存储空间;若第一接口所占用的存储空间未超过SRAM的总存储空间,则根据起始位置和目标尺寸,确定全局数组中第一接口所占用的存储空间对应的目标元素;
这种情况下,回收单元115,还可以用于若第一接口所占用的存储空间超过静态随机存取存储器的总空间,则返回指示读取信息错误的提示信息。
本申请实施例提供的一种SRAM的存储空间分配装置中,基于全局数组对SRAM的存储空间进行全局控制,如:将全局数组中启用的接口所占用的存储空间对应元素的元素值置为第二预设值,占用SRAM的存储空间,将全局数组中被删除的接口所占用的存储空间对应元素的元素值置为第一预设值,回收SRAM的存储空间。这样,可以循环利用SRAM的存储空间,提高了SRAM的存储空间分配的灵活性,提高了SRAM的存储空间的利用率。此外,由于SRAM的存储空间可以循环被利用,因此可以降低SRAM的面积,进而减轻后端开发的布线难度。
与上述SRAM的存储空间分配方法对应,本申请实施例还提供了一种芯片,如图12所示,包括NDMA模块1201和SRAM1202,NDMA模块用于实现上述图3-图10所示的任一方法步骤。具体的,NDMA模块1201用于:
获取当前启用的第一接口的速率;
根据第一接口的速率,确定第一接口所需占用的SRAM的存储空间的目标尺寸;
从全局数组中获取连续且元素值为第一预设值的目标元素,全局数组中的元素与SRAM中的存储空间一一对应,且全局数组中相邻的元素对应的存储空间相邻,目标元素对应存储空间的尺寸总和大于等于目标尺寸,第一预设值用于指示对应的存储空间未被占用;
将目标元素对应的存储空间分配给第一接口,并将全局数组中目标元素的元素值置为第二预设值,第二预设值用于指示对应的存储空间已被占用;
当第一接口被删除时,将全局数组中目标元素的元素值置为第一预设值。
本申请实施例提供的一种芯片中,基于全局数组对SRAM的存储空间进行全局控制,如:将全局数组中启用的接口所占用的存储空间对应元素的元素值置为第二预设值,占用SRAM的存储空间,将全局数组中被删除的接口所占用的存储空间对应元素的元素值置为第一预设值,回收SRAM的存储空间。这样,可以循环利用SRAM的存储空间,提高了SRAM的存储空间分配的灵活性,提高了SRAM的存储空间的利用率。此外,由于SRAM的存储空间可以循环被利用,因此可以降低SRAM的面积,进而减轻后端开发的布线难度。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于基于SRAM的存储空间分配装置、通信设备和机器可读存储介质实施例而言,由于其基本相似于SRAM的存储空间分配方法实施例,所以描述的比较简单,相关之处参见SRAM的存储空间分配方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (11)
1.一种静态随机存取存储器SRAM的存储空间分配方法,其特征在于,所述方法包括:
获取当前启用的第一接口的速率;
根据所述第一接口的速率,确定所述第一接口所需占用的所述SRAM的存储空间的目标尺寸;
从全局数组中获取连续且元素值为第一预设值的目标元素,所述全局数组中的元素与所述SRAM中的存储空间一一对应,且所述全局数组中相邻的元素对应的存储空间相邻,所述目标元素对应存储空间的尺寸总和大于等于所述目标尺寸,所述第一预设值用于指示对应的存储空间未被占用;
将所述目标元素对应的存储空间分配给所述第一接口,并将所述全局数组中所述目标元素的元素值置为第二预设值,所述第二预设值用于指示对应的存储空间已被占用;
当所述第一接口被删除时,将所述全局数组中所述目标元素的元素值置为所述第一预设值。
2.根据权利要求1所述的方法,其特征在于,在所述从全局数组中获取连续且元素值为第一预设值的目标元素的步骤之前,还包括:
判断所述全局数组中连续且元素值为所述第一预设值的元素对应存储空间的尺寸总和是否小于所述目标尺寸;
当小于所述目标尺寸时,返回指示资源不足的提示信息;
当大于等于所述目标尺寸时,则执行所述从全局数组中获取连续且元素值为第一预设值的目标元素的步骤。
3.根据权利要求1所述的方法,其特征在于,所述将所述目标元素对应的存储空间分配给所述第一接口的步骤,包括:
确定所述目标元素对应的存储空间的起始位置;
将所述起始位置和所述目标尺寸写入所述第一接口对应的寄存器中。
4.根据权利要求3所述的方法,其特征在于,所述将所述全局数组中所述目标元素的元素值置为所述第一预设值的步骤,包括:
从所述第一接口对应的寄存器中读取所述起始位置和所述目标尺寸;
根据所述起始位置和所述目标尺寸,确定所述全局数组中所述第一接口对应的所述目标元素;
将所述目标元素的元素值置为所述第一预设值。
5.根据权利要求4所述的方法,其特征在于,所述根据所述起始位置和所述目标尺寸,确定所述全局数组中所述第一接口对应的所述目标元素的步骤,包括:
根据所述起始位置和所述目标尺寸,确定所述第一接口所占用的存储空间;
若所述第一接口所占用的存储空间未超过所述SRAM的总存储空间,则确定所述全局数组中所述第一接口所占用的存储空间对应的所述目标元素;
所述方法还包括:
若所述第一接口所占用的存储空间超过所述SRAM的总存储空间,则返回指示读取信息错误的提示信息。
6.一种静态随机存取存储器SRAM的存储空间分配装置,其特征在于,所述装置包括:
第一获取单元,用于获取当前启用的第一接口的速率;
第一确定单元,用于根据所述第一接口的速率,确定所述第一接口所需占用的所述SRAM的存储空间的目标尺寸;
第二获取单元,用于从全局数组中获取连续且元素值为第一预设值的目标元素,所述全局数组中的元素与所述静态随机存取存储器中的存储空间一一对应,且所述全局数组中相邻的元素对应的存储空间相邻,所述目标元素对应存储空间的尺寸总和大于等于所述目标尺寸,所述第一预设值用于指示对应的存储空间未被占用;
分配单元,用于将所述目标元素对应的存储空间分配给所述第一接口,并将所述全局数组中所述目标元素的元素值置为第二预设值,所述第二预设值用于指示对应的存储空间已被占用;
回收单元,用于当所述第一接口被删除时,将所述全局数组中所述目标元素的元素值置为所述第一预设值。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
判断单元,用于在所述第二获取单元从全局数组中获取连续且元素值为第一预设值的目标元素之前,判断所述全局数组中连续且元素值为所述第一预设值的元素对应存储空间的尺寸总和是否小于所述目标尺寸;
第一返回单元,用于在所述判断单元的判断结果为是的情况下,返回指示资源不足的提示信息;
所述第二获取单元,还用于在所述判断单元的判断结果为否的情况下,从全局数组中获取连续且元素值为第一预设值的目标元素。
8.根据权利要求6所述的装置,其特征在于,所述分配单元,具体用于:
确定所述目标元素对应的存储空间的起始位置;将所述起始位置和所述目标尺寸写入所述第一接口对应的寄存器中。
9.根据权利要求8所述的装置,其特征在于,所述回收单元,具体用于:
从所述第一接口对应的寄存器中读取所述起始位置和所述目标尺寸;根据所述起始位置和所述目标尺寸,确定所述全局数组中所述第一接口对应的所述目标元素;将所述目标元素的元素值置为所述第一预设值。
10.根据权利要求9所述的装置,其特征在于,
所述回收单元,具体用于根据所述起始位置和所述目标尺寸,确定所述第一接口所占用的存储空间;若所述第一接口所占用的存储空间未超过所述SRAM的总存储空间,则根据所述起始位置和所述目标尺寸,确定所述全局数组中所述第一接口所占用的存储空间对应的所述目标元素;
所述回收单元,还用于若所述第一接口所占用的存储空间超过所述SRAM的总存储空间,则返回指示读取信息错误的提示信息。
11.一种芯片,其特征在于,包括网络直接存储器访问NDMA模块和静态随机存取存储器SRAM,所述NDMA模块用于:
获取当前启用的第一接口的速率;
根据所述第一接口的速率,确定所述第一接口所需占用的所述SRAM的存储空间的目标尺寸;
从全局数组中获取连续且元素值为第一预设值的目标元素,所述全局数组中的元素与所述SRAM中的存储空间一一对应,且所述全局数组中相邻的元素对应的存储空间相邻,所述目标元素对应存储空间的尺寸总和大于等于所述目标尺寸,所述第一预设值用于指示对应的存储空间未被占用;
将所述目标元素对应的存储空间分配给所述第一接口,并将所述全局数组中所述目标元素的元素值置为第二预设值,所述第二预设值用于指示对应的存储空间已被占用;
当所述第一接口被删除时,将所述全局数组中所述目标元素的元素值置为所述第一预设值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010925862.0A CN111782561B (zh) | 2020-09-07 | 2020-09-07 | 一种sram的存储空间分配方法、装置及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010925862.0A CN111782561B (zh) | 2020-09-07 | 2020-09-07 | 一种sram的存储空间分配方法、装置及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782561A CN111782561A (zh) | 2020-10-16 |
CN111782561B true CN111782561B (zh) | 2020-12-04 |
Family
ID=72762287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010925862.0A Active CN111782561B (zh) | 2020-09-07 | 2020-09-07 | 一种sram的存储空间分配方法、装置及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782561B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506810B (zh) * | 2020-11-12 | 2023-04-18 | 国家广播电视总局广播电视科学研究院 | 应用于芯片的存储空间分配方法及芯片 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1160960A (zh) * | 1996-01-16 | 1997-10-01 | 松下电送株式会社 | 存储装置及使用它的传真装置 |
US7113985B2 (en) * | 2002-10-15 | 2006-09-26 | Intel Corporation | Allocating singles and bursts from a freelist |
CN104461917A (zh) * | 2014-12-05 | 2015-03-25 | 宁波新尚智能电气有限公司 | 基于Nor Flash的区域循环存储方法 |
CN109032533A (zh) * | 2018-08-29 | 2018-12-18 | 新华三技术有限公司 | 一种数据存储方法、装置和设备 |
CN111177025A (zh) * | 2019-12-30 | 2020-05-19 | 深圳云天励飞技术有限公司 | 数据存储方法、装置及终端设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6941414B2 (en) * | 2001-05-15 | 2005-09-06 | International Business Machines Corporation | High speed embedded DRAM with SRAM-like interface |
US7587559B2 (en) * | 2006-08-10 | 2009-09-08 | International Business Machines Corporation | Systems and methods for memory module power management |
CN101324863B (zh) * | 2007-06-12 | 2012-07-04 | 中兴通讯股份有限公司 | 一种同步静态存储器的控制装置及方法 |
CN101221532B (zh) * | 2008-01-21 | 2010-06-09 | 戴葵 | 实现具有数据处理能力的动态随机存储器的接口方法 |
CN101840374B (zh) * | 2010-04-28 | 2012-06-27 | 福建星网锐捷网络有限公司 | 处理装置、信息查找系统及信息查找方法 |
CN102271087B (zh) * | 2011-07-27 | 2017-09-29 | 中兴通讯股份有限公司 | 一种路由查找方法和装置 |
CN109324842A (zh) * | 2017-07-31 | 2019-02-12 | 武汉斗鱼网络科技有限公司 | 程序启动所需资源创建方法、存储介质、设备及方法 |
-
2020
- 2020-09-07 CN CN202010925862.0A patent/CN111782561B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1160960A (zh) * | 1996-01-16 | 1997-10-01 | 松下电送株式会社 | 存储装置及使用它的传真装置 |
US7113985B2 (en) * | 2002-10-15 | 2006-09-26 | Intel Corporation | Allocating singles and bursts from a freelist |
CN104461917A (zh) * | 2014-12-05 | 2015-03-25 | 宁波新尚智能电气有限公司 | 基于Nor Flash的区域循环存储方法 |
CN109032533A (zh) * | 2018-08-29 | 2018-12-18 | 新华三技术有限公司 | 一种数据存储方法、装置和设备 |
CN111177025A (zh) * | 2019-12-30 | 2020-05-19 | 深圳云天励飞技术有限公司 | 数据存储方法、装置及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111782561A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3149595B1 (en) | Systems and methods for segmenting data structures in a memory system | |
US10152501B2 (en) | Rollover strategies in a n-bit dictionary compressed column store | |
CN107220187B (zh) | 一种缓存管理方法、装置及现场可编程门阵列 | |
US7733892B2 (en) | Buffer management method based on a bitmap table | |
US20150067695A1 (en) | Information processing system and graph processing method | |
US9753660B2 (en) | System and method for implementing hierarchical distributed-linked lists for network devices | |
CN108845877B (zh) | 管理内存的方法、装置和系统 | |
CN103605478B (zh) | 存储地址标示、配置方法和数据存取方法及系统 | |
US9785367B2 (en) | System and method for enabling high read rates to data element lists | |
CN111782561B (zh) | 一种sram的存储空间分配方法、装置及芯片 | |
US7761683B2 (en) | Variable width memory system and method | |
US10331570B2 (en) | Real time memory address translation device | |
US7035988B1 (en) | Hardware implementation of an N-way dynamic linked list | |
CN114389995A (zh) | 资源共享的方法、装置以及电子设备 | |
CN113126911A (zh) | 基于ddr3 sdram的队列管理方法、介质、设备 | |
US20230222058A1 (en) | Zoned namespaces for computing device main memory | |
US10073809B2 (en) | Technologies for scalable remotely accessible memory segments | |
CN107526691B (zh) | 一种缓存管理方法及装置 | |
US20220358071A1 (en) | On-chip integrated circuit, data processing device, and data processing method | |
US9767014B2 (en) | System and method for implementing distributed-linked lists for network devices | |
CN115408328A (zh) | 众核系统、处理方法及处理单元 | |
US20210117114A1 (en) | Memory system for flexibly allocating memory for multiple processors and operating method thereof | |
US20100122039A1 (en) | Memory Systems and Accessing Methods | |
CN115934364B (zh) | 内存管理方法、装置及电子设备 | |
CN118467182B (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 |