CN101162441B - 数据的存取装置和方法 - Google Patents
数据的存取装置和方法 Download PDFInfo
- Publication number
- CN101162441B CN101162441B CN2007101245078A CN200710124507A CN101162441B CN 101162441 B CN101162441 B CN 101162441B CN 2007101245078 A CN2007101245078 A CN 2007101245078A CN 200710124507 A CN200710124507 A CN 200710124507A CN 101162441 B CN101162441 B CN 101162441B
- Authority
- CN
- China
- Prior art keywords
- address
- module
- data
- memory
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据的存取装置和方法,用于控制多个通道数据在数据存储模块中的存取,该装置主要包括:地址管理模块和接口模块,地址管理模块用于存储所述数据存储模块中被各通道数据占用的存储单元的存储地址以及所述数据存储模块中未被占用的存储单元的空闲地址,为各通道的数据读写提供读取地址信息及写入地址信息;接口模块用于根据各通道的读写指令,根据所述地址管理模块提供的读取地址信息及写入地址信息,对所述数据存储模块进行读写操作。本发明提供的数据存取装置及方法实现了最大限度的所有通道片外数据缓存空间的共享,可以在有效利用存储资源的情况下对数据进行存取。
Description
技术领域
本发明涉及电子技术领域,尤其涉及一种数据的存取装置和方法。
背景技术
在数据类芯片的电路设计中,基于不定长协议的多个通道数据的存储与管理,是一个关键的技术实现要点。目前,通常由存储器与存储控制器来实现上述多个通道数据的存储与管理。
现有技术中第一种实现多个通道数据的存储与管理的方法为:用多个独立的缓存器件实现分布式的多个通道数据的缓存。
在实现本发明的过程中,发明人发现在上述第一种实现多个通道数据的存储与管理的方法中,各个独立的缓存器件之间集成度不高,灵活性也不高。
现有技术中第二种实现多个通道数据的存储与管理的方法为:用一个大的数据存储器作为所有通道数据的共享缓存空间,并将该数据存储器分成若干个数据缓存区域,每个数据缓存区域内部是地址连续的存储空间,分别存储一个通道的数据,同时,需要一个公用的缓存控制器管理存储单元。
根据该方法,一种实现多个通道数据的存储与管理的装置的结构示意图如图1所示,该装置主要由两部分组成:双口RAM(Random AccessMemory,随机存取存储器)和FIFO(First in first out,先进先出)控制器。双口RAM按通道分成若干个数据缓存区域;FIFO控制器所有通道共用,FIFO控制器的内部存储空间记录每个通道对应的数据缓存区域的首地址、尾地址、当前读地址指针、当前写地址指针、当前区域的深度常数及数据记数器,FIFO控制器的控制模块根据各通道的读写指令,根据内部存储空间中记录的信息,控制对各通道数据的读写,并根据读写情况更新内部存储空间中记录的信息。
在实现本发明的过程中,发明人发现在上述第二种实现多个通道数据的存储与管理的方法中,虽然各个数据缓存区域的大小在配置时相对可以调整,比较灵活。但是,各个数据缓存区域的空间相对独立,一旦分配,则配置给通道1的存储区域的空闲单元无法给通道2使用,无法有效利用存储资源,无法灵活调整存储空间。
发明内容
本发明实施例的目的是提供一种数据的存取装置和方法,从而可以在有效利用存储资源的情况下对数据进行存取。
本发明实施例提出的一种数据存取装置,用于控制多个通道数据在数据存储模块中的存取,所述数据存取装置包括:
地址管理模块,用于存储所述数据存储模块中被各通道数据占用的存储单元的存储地址以及所述数据存储模块中未被占用的存储单元的空闲地址,为各通道的数据读写提供读取地址信息及写入地址信息,根据各通道的读写操作更新所述存储地址及所述空闲地址;
接口模块,用于根据各通道的读写指令,根据所述地址管理模块提供的读取地址信息及写入地址信息,对所述数据存储模块进行读写操作。
本发明实施例提出的一种数据的写入方法,用于将多个通道数据写入数据存储模块,所述方法包括:
接收各通道的写入指令;
根据地址存储单元存储的空闲地址及存储地址,获取所述写入指令的写入地址;
所述存储地址为所述数据存储模块中已存储数据的存储单元的地址,所述空闲地址为所述数据存储单元中未存储数据的存储单元的地址;
更新所述地址存储模块中的空闲地址及存储地址;
根据所述写入地址,将数据写入所述数据存储模块中。
本发明实施例提出的一种数据的读取方法,用于多通道从数据存储模块中读取数据,所述方法包括:
接收各通道的读取指令;
根据所述地址存储模块中的空闲地址及存储地址,获取所述读取指令的读取地址;
所述存储地址为所述数据存储模块中已存储数据的存储单元的地址,所述空闲地址为所述数据存储单元中未存储数据的存储单元的地址;
根据所述读取地址,将数据从所述数据存储模块中读出。
由上述本发明实施例提供的技术方案可以看出,本发明通过对数据存储模块的存储地址和空闲地址进行管理,根据整个数据存储模块的存储单元的空闲状况对数据进行写入,并根据各通道数据在数据存储模块中的读取和写入对存储地址和空闲地址进行更新,实现了最大限度的所有通道片外数据缓存空间的共享,可以在有效利用存储资源的情况下对数据进行存取。
附图说明
图1为现有技术中一种实现多个通道数据的存储与管理的装置的结构示意图;
图2为本发明实施例所述实现多通道复用的数据存取装置的结构示意图;
图3为本发明实施例所述地址管理模块及地址更新模块的示意图;
图4为本发明实施例所述存储地址管理模块的示意图;
图5为本发明实施例所述链表映射单元在一种情况下的初始化状态;
图6为本发明实施例所述的空闲地址FIFO在一种情况下的初始化状态;
图7为本发明实施例所述通道m优先级n的当前输入数据写入完毕,形成的链表映射单元的对应子单元及链表存储单元的状态示意图;
图8为本发明实施例所述通道m优先级n的当前数据被读取出,形成的链表映射单元的对应子单元及链表存储单元的状态示意图。
具体实施方式
本发明实施例提供了一种数据的存取装置和方法。
如图2所示,本发明实施例提供的数据存取装置20,对数据存储模块21的存储地址和空闲地址进行管理,根据数据存储模块21的存储单元的存储与占用状况对数据进行存储,并根据各通道对数据存储模块21的读取,更新存储地址和空闲地址,其中,存储地址指数据存储模块21中已存储数据,及被占用的存储单元的地址,空闲地址指数据存储模块21中未存储数据,即未被占用的存储单元的地址。数据存取装置20具体包括:
地址管理模块202,用于存储所述数据存储模块21中存储单元的存储地址以及空闲地址,为各通道的数据读写提供读取地址信息及写入地址信息;
接口模块201,用于根据各通道的读写指令,根据所述地址管理模块提供的读取地址信息及写入地址信息,对所述数据存储模块进行读写操作;
由于本发明实施例利用地址管理模块202对空闲地址及存储地址进行存储,根据数据存储模块21的存储单元的占用情况分配存取资源,可有效地利用存储资源进行数据的存取。
此外,为方便管理存储地址及空闲地址,保证存储地址及空闲地址状态的及时更新,数据存取装置20还可包括:地址更新模块203,用于根据所述接口模块的读写操作,更新所述地址管理模块存储的所述存储地址和所述空闲地址。
在本发明的一个实施例中,地址管理模块202的一种实现可采取如图3所示的方式,包括空闲地址管理模块30和存储地址管理模块31:
空闲地址管理模块30,用于存储所述数据存储模块中的未被占用的存储单元的空闲地址,根据所述接口模块的第一写操作,提供供数据存储的第一空闲地址;
存储地址管理模块31,用于存储各个通道在所述数据存储模块中存储的数据所对应的存储地址,并提供各通道数据在所述数据存储模块中的读取地址信息及写入地址信息;
所述地址更新模块203具体可包括空闲地址更新模块33和存储地址更新模块32:
空闲地址更新模块33,用于根据所述接口模块的所述第一写操作,从所述空闲地址管理模块中删除所述第一空闲地址;或根据所述接口模块的第一读操作,在所述空闲地址管理模块中增加存储该第一读操作对应的地址;
存储地址更新模块32,用于根据所述接口模块的所述第一写操作,在所述存储地址管理模块中增加存储所述第一空闲地址;或根据所述接口模块的所述第一读操作,从所述存储地址管理模块中删除存储的该第一读操作对应的地址。
为有效地管理不同通道的数据存储与读取,存储地址管理模块31可对各通道的数据的存储地址分别进行维护,本发明的一个实施例所提供的存储地址管理模块如图4所示,存储地址管理模块31包括多个地址存储模块和一个地址控制模块。所述存储地址管理模块31包括多个地址存储模块和地址控制模块:
多个地址存储模块,每个地址存储模块,用于存储一个对应通道在所述数据存储模块中存储的数据所对应的存储地址;
地址控制模块,用于提供各通道的写入地址信息和读取地址信息,根据所述接口模块的所述第一读操作,将对应通道的所述第一读操作对应的所述第一读取地址信息更新为第二读取地址信息,所述第二读取地址存储于所述第一读操作对应的地址存储模块;或根据所述接口模块的所述第一写操作,将对应通道的第一写入地址信息更新为第二写入地址信息;
在这里,所述的第一空闲地址即为第二写入地址,而所述第一写操作对应的地址可以有两种对应关系:
第一种情况、所述的第一写操作的地址为所述的第一写入地址:
数据的写入操作对应的写入地址在写之前已经分配好,即已为各通道的数据写入在数据存储模块21中各准备好了一个存储单元(对应第一写入地址),那么,如果通道i有数据需要写入(对应第一写入操作),则接口模块201根据已为通道i分配好的第一写入地址w_addr1将数据写入数据存储模块21中。此时,由于第一写入地址w_addr1对应的数据存储模块21中的存储单元已被写入数据或即将被写入数据,需要给通道i的下一次数据的写入准备新的第二写入地址w_addr2,该第二写入地址w_addr2即由空闲地址管理模块30提供的所述第一空闲地址。
第二种情况、所述第一写操作的地址为所述的第二写入地址:
数据的写入操作对应的写入地址即时分配,即当通道i有数据需要写入数据存储模块21(对应第一写操作),即时从数据存储单元21中分配一个空闲的存储单元(对应第一空闲地址),作为写入地址(第二写入地址),供通道i的数据第一写操作的写入,而所述第一写入地址为所述第一写操作的上一次写操作的地址。
在通道i要访问自己存储的数据时,地址控制模块要提供该通道访问数据的读取地址信息,该读取地址信息可以是读取地址本身,也可以是读取地址的指针,即读取地址的地址;在通道i有数据需要写入数据存储模块21时,地址控制模块提供该通道数据的写入地址信息,第二写入地址由空闲地址管理模块提供,而写入地址信息由地址控制模块提供,如在前述的第一种情况下,接口模块201根据第一写入地址w_addr1将通道i数据写入了数据存储模块21,此时空闲地址管理模块30提供了w_addr2(第二写入地址)这个空闲地址(第一空闲地址),那么第二写入地址w_addr2的信息就由存储地址控制模块提取并记录,该信息可以是第二写入地址本身,也可以是指向第二写入地址的指针,及第二写入地址的地址。该第二写入地址w_addr2的信息作为通道i的下次数据写入的写入地址信息,接口模块201在下次要将通道i的数据写入数据存储模块时,从存储地址管理模块31中获取写入地址信息。同样,在前述的第二种情况下,接口模块201也可从存储地址管理模块31中获取写入地址信息。
为方便管理,对应地,所述存储地址更新模块32可包括多个地址更新单元,每个所述地址更新单元对应一个所述地址存储模块,用于根据接口模块所述的第一读操作,删除对应地址存储模块存储的该第一读操作对应的地址;或根据所述接口模块的所述第一写操作,在对应的地址存储模块中增加存储所述第一空闲地址。
地址存储模块的个数可以由通道数以及每个通道的优先级数来确定,为存取控制方便,可为每一个通道的每个优先级管理一个地址存储单元,所以地址存储模块的个数可以为其中,M为通道数,Ni为第i个通道所具有的优先级数,为描述方便,下面将以M个通道的优先级均为N,共有M×N个地址存储模块来进行说明。
作为一个例子来说明,地址存储模块具体可为链表存储单元,链表存储单元以链表的形式维护通道i(0≤i<M)中优先级k(0≤i<N)对应的数据的存储地址。
对应地,所述的地址更新单元具体可为量表控制单元,用于将在有新的通道i中优先级k的数据写入时,给链表增加一个节点,连接到链表的尾节点之后,成为新的尾节点,在上述的第一种情况下,新增的尾节点中存储下次写入数据时的写入地址,在上述的第二种情况下,新增的尾节点存储当次写入数据的写入地址。
读取的数据的地址为链表的头节点存储的地址,当该头节点存储的地址对应数据存储模块21中的存储单元的数据被读取后,链表控制单元删掉该头节点,该头节点后的第二节点成为新的头节点,新的头节点中的地址为新的读取地址,即通道i中优先级k的数据下次读取从所述新的读取地址中读取。
需要说明的是,上述的地址存储模块的结构组成及工作方式只是为了说明地址存储模块的工作原理的一个具体例子,地址存储模块对各通道数据的存储地址的存储及管理方式也可采取其它的形式,并不一定需要采取链表的形式,如将存储地址采用动态数组的形式来存储及管理,等等。相应地,地址更新单元也可采用对应的方式来进行读取地址和写入地址的更新,并不限于采用链表更新单元。
作为一个例子,地址控制模块可包括链表映射单元和读写地址更新单元,链表映射单元,用于存储各通道各优先级对应的数据的读取地址信息和写入地址信息,读写地址更新单元,用于根据接口模块201的读写操作,更新读取地址信息和写入地址信息。
为与上面所举的地址存储模块结构的例子对应,链表映射单元可采取图5所示(图5所示为链表映射单元在采用上述第一种情况的工作方式下的初始化状态,这点将在后面说明)的结构,该结构中,需要为0~M×N每个链表存储单元分配了二个字段,一个字段存储链表的头节点指针head_ptr,一个字段存储链表的尾节点指针tail_ptr(需要指出的是,这两个字段只要提供了对应通道对应优先级数据的读取地址信息及写入地址信息即可,这里所述存储head_ptr和tail_ptr只是为了配合前述地址存储模块的具体例子进行说明),当然这两个字段也可以直接存储链表头节点和尾节点包含的存储地址。另外,根据其它控制的需要,也可为每个链表存储单元分配其它字段,如链表长度chain_length字段,通过chain_length可获取数据长度信息。
读写地址更新单元根据接口模块201的读写操作,更新各链表映射单元中的各链表存储单元对应的head_ptr及tail_ptr,如还有其它字段,如chain_length,同时也进行更新,更新方式可根据前述内容得出,在此不再赘述。
在实际的数据存取过程中,当输入数据帧为非定长的协议数据帧时,根据业务不同层面的固定传输格式需求,可按一定字节长度基于固定周期来实现数据的接收与传送。同时,可在数据帧的帧头封装一些帧控制信息,并伴随相应的帧头指示信息(sop,start of packet等);可在数据帧的末尾,封装一些帧尾指示信息(eop,end of packet等),标识该数据帧的结束。因此,为便于数据帧间区分与处理,在存储这些数据帧时,需要相应地存储对应数据帧的帧头与帧尾的伴随指示信息。
假设上述数据存储模块21、空闲地址存储单元的深度(即包含的存储单元总数)都为D。
在初始状态下,数据存储模块21中没有存储数据,存储地址管理模块30中的地址存储模块没有存储地址信息。
空闲地址管理模块31中的空闲地址存储单元可以为一个深度也为D的空闲地址FIFO,其初始状态示意图如图6所示。
在上述的第一种情况下,空闲地址FIFO的前D-M×N个单元初始化为数据存储模块21的第M×N个单元之后的地址,即数据存储模块21的第1个存储单元的地址(0)到第M×N个存储单元的地址(M×N-1)作为写入地址已经提供给了存储地址管理模块30的对应链表存储单元,那么数据存储模块21剩下的第M×N+1个存储单元到第D个存储单元的地址(M×N)到(D-1)存储到了空闲地址FIFO里面。
该空闲地址FIFO的读指针addr_r指向该空闲地址FIFO的第1个单元,即编号为0的单元,该单元存储的内容为数据存储模块21中第M×N+1个存储单元的地址(M×N)。写指针指向的单元为空闲地址FIFO的第D-M×N个单元;空闲地址FIFO的当前记数长度为D-M×N。
在上述的第二种情况下,将数据存储模块21中的所有存储单元的地址都作为空闲地址存入到空闲地址FIFO中。在有数据需要写入时,提供相应的空闲地址给接口模块201作为写入地址。
链表映射单元的初始状态示意图如图5所示。链表映射单元被划分为M×N个子单元,每个子单元对应一个链表存储单元,假设每个子单元对应3个元素:链表存储单元当前链表的头节点指针head_ptr、当前链表的尾节点指针tail_ptr和当前链表的链表深度chain_length。
为方便描述,假设在上述的第一种情况下,第一个链表存储单元(存储通道0优先级0对应的数据的存储地址对应的链表)分配的初始写地址为数据存储模块21中的第1个存储单元的地址(0),那么在初始状态下,链表映射单元的第1个子单元(图5中编号为0的子单元)的head_ptr和tail_ptr指向对应链表存储单元中的同一个节点,该节点中存储的地址为数据存储模块中的第一个存储单元的地址(0),相应的chain_length为0;而在上述的第二种情况下,链表映射单元的各子单元的元素均为空(null),当有数据写入时,对应子单元的元素才根据即时分配的写入地址填写相应的head_ptr和tail_ptr。
本发明实施例还提供一种数据的写入方法和一种数据的读取方法,为清楚说明本发明实施例提供的方法,某些部分会结合上面的装置实施例的相关部分进行说明,但这些结合仅仅是为了说明的简洁与方便,不应理解为对本发明提出的方法的保护范围的限定,本发明提出的方法的保护范围应以权利要求书为准。
本发明实施例提供的数据的写入方法,用于将多个通道数据写入数据存储模块21,该方法包括如下步骤:
A1.接收各通道的写入命令。
当外部调度模块发起写入命令,指示通道m优先级n的一个突发数据要写入数据存储模块21时:
接口模块201接收该写入命令,并获取当前输入数据与相关伴随控制信息。
B1.根据所述数据存储模块21的空闲地址及存储地址,获取所述写入指令的写入地址。
第一种情况,在写入操作之前,已经为各通道数据的写入准备好了写入地址,此时,从所述写入指令对应通道的写入地址信息中获取对应通道写入地址,所述对应通道的写入地址信息指示对应通道的写入地址。更具体地,接口模块201从地址控制控制模块的链表映射单元中获取对应地址存储模块中的链表存储单元的尾节点指针,该尾节点指针即对应通道的写入地址信息,根据该尾节点指针得到尾节点中存储的写入地址。
第二种情况,根据写入指令,即时分配写入地址,此时,从所述数据存储模块21的空闲地址中获取第一空闲地址,作为所述写入地址,当然,此时也可将第一空闲地址的指针作为写入地址信息,从写入地址信息中获取写入地址,方式与第一种情况类似,在此不再赘述。
C1.根据所述写入地址,将数据写入所述数据存储模块21中。
接口模块201将当前输入数据写入数据存储模块21中该写入地址对应的存储单元。
除此之外,本发明的数据写入方法实施例在获取了写入地址之后还可以包括以下步骤:
D1.更新所述空闲地址及存储地址。
在此步骤中,由于有空闲地址被用来作为下次写入操作的写入地址或者被用来作为当前写入操作的写入地址,所以该地址不再是空闲地址,而应该予以更新,响应地,存储地址也要更新。
在上述的第一种情况下,从所述数据存储模块的空闲地址中获取第一空闲地址,将所述写入指令对应通道的写入地址信息更新为所述第一空闲地址的信息,将所述第一空闲地址更新为所述数据存储单元的对应通道数据的存储地址:更为具体地,空闲地址更新单元读取空闲地址FIFO的读指针addr_r所指向的单元内容X(为数据存储模块21中存储单元的空闲地址,即第一空闲地址),将其寄存器的读指针addr_r内容加1,指向下一个单元。并且,将空闲地址FIFO的计数长度减一(相当于删除了内容X)。
链表更新单元给链表存储单元增加一个新的节点,该节点在原链表的尾节点之后,原链表的尾节点的指针指向该新的节点,新的节点成为当前链表的新的尾节点。链表更新单元将上述空闲地址FIFO的原读指针addr_r所指向的单元内容X,连同当前数据的2bit伴随信息:sop及eop,一起写入到新的尾节点,即将第一空闲地址更新为所述数据存储单元的对应通道的存储地址。
地址控制模块中的地址更新单元将链表映射单元中对应子单元的tail元素的内容更新为指向空闲地址FIFO原读指针addr_r所指向的单元内容X或指向X的指针(即将所述写入指令对应通道的写入地址信息更新为了所述第一空闲地址信息),给下次写操作提供写地址信息;当前链表深度chain_length加1。根据前述介绍可知,当上述通道m优先级n的当前输入数据接收完毕,形成的链表映射单元中对应的子单元、对应的链表存储单元的状态如图7所示。
在上述的第二种情况下,将所述第一空闲地址更新为所述数据存储单元的存储地址。对应地,此情况下也可采用从读取地址信息中获取读取地址的方式,该方式的地址更新与上述第一种情况的类似,在此不重复说明。
本发明实施例还提供了一种数据的读取方法,用于多通道从数据存储模块中读取数据,该述方法包括如下步骤:
A2.接收各通道的读取指令。
当外部调度模块发起读取命令,指示要从数据存储模块21读取通道m优先级n的一个突发数据时:
接口模块201获取当前读取命令与相关伴随控制信息;
B1.根据所述地址存储模块中的空闲地址及存储地址,获取所述读取指令的读取地址。
具体而言,从所述读取指令对应通道的读取地址信息中获取读取地址,所述读取地址信息指示所述对应通道的读取地址,所述读取地址为存储对应通道数据的存储地址。结合本发明其中一个实施例提出的装置,该步骤更为具体地:
接口模块201读取地址控制模块的链表映射单元中当前读取指令对应的子单元,获取该子单元的head_ptr;根据head_ptr得到链表头节点存储的读取地址以及sop和eop信息。
C2.根据所述读取地址,将数据从所述数据存储模块中读出。
根据读取地址将通道m优先级n的当前读取数据从数据存储模块21中读出,同时送出sop及eop相关信息。
此外,本发明读取方法实施例还可包括以下步骤:
D2.更新所述空闲地址及所述存储地址。
该步骤具体为,将所述读取地址更新为空闲地址;从所述读取命令对应的数据的存储地址中获取所述读取指令对应的通道的新的读取地址,将所述读取地址信息更新为所述读取指令对应的通道的新的读取地址信息。
地址存储模块中的链表更新单元根据该链表存储单元的链表的头节点,得到指向该头节点后的第二节点的指针,将所述第二节点作为新的头节点(即删除原头节点,即将该读取地址从存储地址中删除,且从所述读取命令对应的数据的存储地址中获取所述读取指令对应的通道的新的读取地址);
地址控制模块中的地址更新单元将指向上述新的头节点的指针更新至链表映射单元中与通道m优先级n对应的子单元的head_ptr(将所述读取地址信息更新为所述读取指令对应的通道的新的读取地址信息),给下次读操作提供读取地址信息;当前链表深度chain_length减1;
空闲地址管理模块31中的空闲地址更新单元将链表存储单元的头节点存储的地址写入空闲地址FIFO的addr_w指向的单元,addr_w的内容加1,同时空闲地址FIFO的深度加1(即将所述读取地址更新为空闲地址)。
根据前述介绍可知,当通道m优先级n的当前数据被读走,形成的链表映射单元中对应的子单元、对应的链表存储单元的状态如图8所示。
综上所述,本发明实施例提供的数据的存取装置和方法通过将数据存储模块对所有通道进行最大限度的灵活共享,对地址进行回收管理,能够实现按通道基于优先级的数据帧链表存储管理,保证最大限度地利用数据和地址的存储空间,从而实现了最大限度的所有通道片外数据缓存空间的共享,可以在节省存储资源的情况下有效地对数据进行读取。
本发明通过存储数据帧的帧头和帧尾等伴随信息,可以满足数据帧非定长的特定场景,提高了数据帧存储与传输的灵活性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是较佳的实施方式。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (9)
1.一种数据存取装置,用于控制多个通道数据在数据存储模块中的存取,其特征在于,所述数据存取装置包括:
地址管理模块,用于存储所述数据存储模块中被各通道数据占用的存储单元的存储地址以及所述数据存储模块中未被占用的存储单元的空闲地址,为各通道的数据读写提供读取地址信息或写入地址信息;
接口模块,用于根据各通道的读写指令,根据所述地址管理模块提供的读取地址信息及写入地址信息,对所述数据存储模块进行读写操作;
所述地址管理模块包括:
空闲地址管理模块,用于存储所述数据存储模块中的未被占用的存储单元的空闲地址,根据所述接口模块的第一写操作,提供供数据存储的第一空闲地址;
存储地址管理模块,用于存储各个通道在所述数据存储模块中存储的数据所对应的存储地址,并提供各通道数据在所述数据存储模块中的读取地址信息及写入地址信息;
所述存储地址管理模块包括:多个地址存储模块,每个地址存储模块,用于存储一个对应通道在所述数据存储模块中存储的数据所对应的存储地址;
地址控制模块,用于提供各通道的写入地址信息和读取地址信息,根据所述接口模块的第一读操作,将对应通道的所述第一读操作对应的第一读取地址更新为第二读取地址,所述第二读取地址存储于所述第一读操作对应的地址存储模块;或根据所述接口模块的所述第一写操作,将对应通道的第一写入地址更新为第二写入地址。
2.如权利要求1所述的数据存取装置,其特征在于,所述数据存取装置还包括地址更新模块,用于根据所述接口模块的读写操作,更新所述地址管理模块存储的所述存储地址和所述空闲地址。
3.如权利要求2所述的数据存取装置,其特征在于,
所述地址更新模块包括:
空闲地址更新模块,用于根据所述接口模块的所述第一写操作,从所述空闲地址管理模块中删除所述第一空闲地址;或根据所述接口模块的第一读操作,在所述空闲地址管理模块中增加存储该第一读操作对应的地址;
存储地址更新模块,用于根据所述接口模块的所述第一写操作,在所述存储地址管理模块中增加存储所述第一空闲地址;或根据所述接口模块的所述第一读操作,从所述存储地址管理模块中删除存储的该第一读操作对应的地址。
4.如权利要求3所述的数据存取装置,其特征在于:
所述存储地址更新模块包括多个地址更新单元,每个所述地址更新单元对应一个所述地址存储模块,用于根据接口模块所述的第一读操作,删除对应地址存储模块存储的该第一读操作对应的地址;或根据所述接口模块的所述第一写操作,在对应的地址存储模块中增加存储所述第一空闲地址。
5.如权利要求4所述的数据存取装置,其特征在于,所述第一空闲地址为所述第二写入地址;所述第一写操作的地址为所述第一写入地址或所述第二写入地址。
7.如权利要求4至6中任一所述的数据存取装置,其特征在于,所述地址存储模块具体为链表存储单元,用于以链表的形式存储对应通道的存储地址,所述链表的节点存储的信息包括对应通道的数据在所述数据存储模块中的存储地址;
所述地址更新单元具体为链表更新单元,用于根据所述接口模块的所述第一读取操作,删除对应链表存储单元的链表的第一对应节点,所述第一对应节点存储的信息包含所述第一读取操作对应的读取地址;或根据所述接口模块的所述第一写入操作,在对应链表存储单元的链表增加第二对应节点,所述第二对应节点存储的信息包括所述第一空闲地址。
8.如权利要求4至6中任一所述的数据存取装置,其特征在于,所述地址控制模块包括:
链表映射单元,包括多个记录单元,每个所述记录单元用于记录对应通道的写入地址信息和读取地址信息,包括写入地址信息记录段和读取地址信息记录段;所述读取地址信息记录段用于记录对应通道的读取地址在对应的地址存储模块中的存储地址;所述写入地址信息记录段用于记录对应通道的写入地址在对应的地址存储模块中的存储地址;
读写地址更新单元,用于根据所述接口模块的所述第一写入操作,将对应的写入地址信息记录段记录的,所述第一写入地址在对应地址存储模块中的存储地址,更新为所述第二写入地址在对应地址存储模块中的存储地址;或根据所述接口模块的所述第一读取操作,将对应的读取地址信息记录段记录的,所述第一读取地址在对应的地址存储模块中的存储地址,更新为所述第二读取地址在对应的地址存储模块中的存储地址。
9.如权利要求7所述的数据存取装置,其特征在于,所述链表存储单元的链表的头节点存储的信息包括对应通道的读取地址,所述链表存储单元的链表的尾节点存储的信息包括对应通道的写入地址;
所述第一对应节点为所述接口模块进行所述第一读取操作之前的所述链表的头节点;
所述第二对应节点在所述接口模块进行所述第一写入操作之前的所述链表的尾节点之后,为新的尾节点;
所述地址控制模块包括:
链表映射单元,包括多个记录单元,每个所述记录单元用于记录对应通道的写入地址信息和读取地址信息,包括写入地址信息记录段和读取地址信息记录段;所述读取地址信息记录段用于记录对应地址存储单元的链表的头节点地址,所述写入地址信息记录段用于记录对应地址存储单元的链表的尾节点地址;
读写地址更新单元,用于根据所述接口模块的所述第一读取操作,将所述读取地址信息记录段记录的所述第一对应节点的地址更新为,链表中该第一对应节点的后一节点的地址,所述后一节点为所述链表存储单元的链表的新的头节点;或根据所述接口模块的第一写入操作,将所述写入地址信息记录段记录的所述尾节点的地址更新为,所述第二对应节点的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101245078A CN101162441B (zh) | 2007-11-09 | 2007-11-09 | 数据的存取装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101245078A CN101162441B (zh) | 2007-11-09 | 2007-11-09 | 数据的存取装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101162441A CN101162441A (zh) | 2008-04-16 |
CN101162441B true CN101162441B (zh) | 2010-10-13 |
Family
ID=39297368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101245078A Expired - Fee Related CN101162441B (zh) | 2007-11-09 | 2007-11-09 | 数据的存取装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101162441B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102158349B (zh) * | 2011-02-09 | 2016-03-30 | 中兴通讯股份有限公司 | 一种日志管理装置及方法 |
EP2701363B1 (en) * | 2011-07-22 | 2015-09-02 | Huawei Technologies Co., Ltd. | Content processing method, device and system |
CN102916902B (zh) * | 2011-08-03 | 2017-09-15 | 南京中兴软件有限责任公司 | 数据存储方法及装置 |
CN102436427B (zh) * | 2011-11-07 | 2014-10-08 | 华为技术有限公司 | 一种数据读写方法和存储设备 |
CN104202258B (zh) * | 2014-08-26 | 2017-06-20 | 哈尔滨工程大学 | 一种基于消息优先级的缓冲区协调方法 |
CN105138467B (zh) * | 2015-08-05 | 2020-06-02 | 上海联影医疗科技有限公司 | 数据存取装置、方法及磁共振设备 |
CN107526691B (zh) * | 2016-06-21 | 2020-06-02 | 深圳市中兴微电子技术有限公司 | 一种缓存管理方法及装置 |
CN106603434B (zh) * | 2016-12-07 | 2019-08-02 | 盛科网络(苏州)有限公司 | 避免多通道数据传输过程中队头阻塞的系统及方法 |
CN109086002A (zh) * | 2018-06-28 | 2018-12-25 | 平安科技(深圳)有限公司 | 存储对象的空间管理方法、装置、计算机装置及存储介质 |
CN108984323B (zh) * | 2018-07-13 | 2022-04-01 | 上海联影医疗科技股份有限公司 | 一种共享存储空间的调度方法及系统 |
WO2020037542A1 (zh) * | 2018-08-22 | 2020-02-27 | 深圳市大疆创新科技有限公司 | 数据指令处理方法、存储芯片、存储系统和可移动平台 |
CN115952326B (zh) * | 2023-03-13 | 2023-05-09 | 北京云豹创芯智能科技有限公司 | 一种链表式数据结构及其数据处理方法、存储介质、电子设备 |
-
2007
- 2007-11-09 CN CN2007101245078A patent/CN101162441B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101162441A (zh) | 2008-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101162441B (zh) | 数据的存取装置和方法 | |
CN102508784B (zh) | 视频监控设备中闪存卡的数据存储方法及其系统 | |
CN105550345B (zh) | 文件操作方法和装置 | |
US9058112B2 (en) | Retrieving data in a storage system using thin provisioning | |
US7733892B2 (en) | Buffer management method based on a bitmap table | |
US7930451B2 (en) | Buffer controller and management method thereof | |
CN101189584B (zh) | 内存页面管理 | |
CN109690500A (zh) | 使用在以处理器为基础的系统中的空间服务质量(QoS)标记提供异质存储器系统的弹性管理 | |
CN106527963B (zh) | 存储器系统及主机装置 | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
CN101983376A (zh) | 访问装置、信息记录装置、信息记录系统、文件管理方法和程序 | |
CN109240944B (zh) | 一种基于可变长缓存行的数据读写方法 | |
CN110069557A (zh) | 数据传输方法、装置、设备及存储介质 | |
CN115168259B (zh) | 一种数据存取方法、装置、设备和计算机可读存储介质 | |
US20080229333A1 (en) | Method, System And Storage Medium For Implementing A Message Board Cache System | |
CN101430685B (zh) | 下载方法及其系统 | |
CN102999441A (zh) | 一种细粒度内存访问的方法 | |
CN108664577A (zh) | 一种基于flash空闲区的文件管理方法及系统 | |
WO1997029429A1 (en) | Cam accelerated buffer management | |
CN109032817A (zh) | 一种电能质量管理系统共享内存实现方法 | |
CN100580669C (zh) | 在Flash存储介质上的关于文件分配表的缓存实现方法 | |
CN108647278B (zh) | 一种文件管理方法及系统 | |
CN101783814A (zh) | 海量存储系统的元数据存储方法 | |
CN107193947A (zh) | 一种文件系统缓存增量刷新方法及系统 | |
CN116185305A (zh) | 业务数据存储方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101013 Termination date: 20181109 |