首页 / 数据读取方法、数据写入方法及数据读写方法

数据读取方法、数据写入方法及数据读写方法有效专利 发明

技术领域

[0001] 本发明涉及数据处理领域,尤其涉及一种数据读取方法、数据写入方法及数据读写方法。

相关背景技术

[0002] 在目前的互联网时代,如视频编解码,图像处理,AI(人工智能)处理等等,计算机每时每刻需处理大量的数据交互请求。而在中央处理器处理数据交互请求时,通常需要对静态随机存储器进行存取。
[0003] 而数据在静态随机存储器中的存取过程中,静态随机存储器的位宽是固定的。如果数据的存取不做处理,对于高位宽数据的存取,以及多通道,多个类型交互数据访问的情况下的数据存取,就需要经过多次的优先级排队访问,才能够实现存取操作,导致静态随机存储器的处理效率较低。

具体实施方式

[0064] 下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
[0065] 通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0066] 在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
[0067] 此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0068] 除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
[0069] 实施例1
[0070] 参照图1,图1示出了本发明实施例提供的一种数据读取方法的流程示意图,本发明实施例提供的数据读取方法包括:
[0071] S110,将静态随机存取存储器的地址空间划分为预定数量的存储区域,并为每个存储区域设置一一对应的数据处理队列,其中,每个存储区域的空间大小相同。
[0072] 可以理解的是,将静态随机存取存储器(Static Random‑Access Memory,SRAM)划分为多个存储区域,也即将完整的SRAM划分为多个小SRAM即多个bank。若每个bank均可执行数据读取/数据写入,则完整SRAM的数据处理效率,即位宽将大幅度增大。而本发明实施例则是将完整的SRAM划分为多个bank,并通过每个bank完成数据写入和读取,从而扩充整个SRAM的位宽,提高数据吞吐量。
[0073] 进一步的,为了提高每一个bank的处理效率,本发明实施例为每一个bank设置了对应的数据处理队列,以使bank可根据数据处理队列中的数据读取地址来读取数据,或是通过数据处理队列中的数据写入地址来将数据写入bank,进一步提高SRAM的数据处理效率。
[0074] S120,从数据读取请求中获取所有的数据读取地址,并根据每个数据读取地址的预定字段,将每个数据读取地址存放至对应的存储区域的数据处理队列,其中,数据读取请求包括至少一个数据读取通道,每个数据读取通道包括至少一个数据读取地址。
[0075] 可以理解的是,数据读取请求通过是代表请求读取一张图片、请求读取一个数组、请求读取一类数据等等,请求中包含待读取/待写入数据的首地址。但由于SRAM位宽的限制,SRAM将根据待读取/待写入数据的首地址,重复读取SRAM位宽大小的数据,SRAM处理数据时,不断读取待读取/待写入数据的首地址、首地址加上一个SRAM位宽大小的地址、首地址加上两个SRAM位宽大小的地址……直到数据读取/写入完成。因而,本发明实施例中的数据读取请求/数据读写请求中的数据读取通道/数据写入通道中的数据读取地址/数据读写地址,可以理解为已将待读取数据/待写入数据的地址已按照首地址、首地址加上一个SRAM位宽大小的地址、首地址加上两个SRAM位宽大小的地址这样的方式划分好的地址组。
[0076] 在在本发明实施例提供的一种实施方式中,一个数据读取请求包括8个数据读取通道,每个数据读取通道中包含8个数据读取地址。
[0077] 可选的,在本发明实施例提供的一种实施方式中,预定数量为64;
[0078] 根据每个数据读取地址的预定字段,将每个数据读取地址存放至对应的存储区域的数据处理队列,包括:
[0079] 根据每个数据读取地址的第3位到第8位,将每个数据读取地址存放至对应的存储区域的数据处理队列。
[0080] 具体而言,本发明实施例将完整的SRAM划分为64个bank,而数据读取或数据写入时,通过这64个bank来完成。而本发明实施例通过数据读取地址的第3位到第8位确定每个数据读取地址对应的bank,考虑了以下原因:
[0081] 在本发明实施例实现的一种通过DMA(Direct Memory Access,直接存储器访问)将图片数据存储至SRAM的实施方式中,DMA的位宽为128bit,SRAM的每个bank的位宽为64bit。因此,当DMA将数据存储至SRAM时,SRAM需执行两次数据存储,当每个bank均能执行数据存储时,利用两个bank来进行数据存储,即可通过一次DMA请求完成写入。而DMA的
128bit需拆分成两个64bit的数据,两个数据地址差值为21’h8,因此地址的第3位需要作为区分bank的bit位之一。
[0082] 进一步的,若通过数据写入地址的高位来划分bank,连续的多个数据写入地址的高位差异不大,则数据写入地址对于的数据将存储至同一个bank,导致读取该bank中的数据时,仍然排队读取。
[0083] 并且,以图片数据的写入为例,图片数据进行存储时,图片数据的地址为连续的,地址差距不会很大。因此,本发明实施例通过地址的第3位到第8位,来确定待读取到的数据或待写入的到的数据所属的bank。
[0084] S130,每个数据处理队列对应的存储区域,根据数据处理队列中的每个数据读取地址读取数据,将读取到的数据存储至对应的数据读取通道。
[0085] 由此,在每个bank均将数据输出之后,再对应存放至数据读取通道中,每个数据读取通道将多个数据合并,进而数据读取通道可一次输出从多个bank中获取到的数据,实现了高位宽数据的输出。
[0086] S140,当每个数据处理队列均完成数据读取后,将所有数据读取通道中的数据进行合并,完成数据读取请求。
[0087] 可以理解的是,在每个bank读取并处理完对应数据处理队列中所有的地址后,且所有数据读取通道均存储好相应数据时,会对应给出一个通道数据读取完成标记,以表示数据读取完成。
[0088] 由此,本发明实施例当存储器需一次处理数据读取请求的多个数据读取通道中的数据读取地址时,可将数据读取地址分发至对应的存储区域的数据处理队列,存储器的各个存储区域再根据数据处理队列读取数据,从而可以一次处理多个数据读取地址,提高了存储器的读取效率。而当所有的数据处理通道读取从相应的存储区域读取完数据后,再在数据读取请求的数据读取通道中,将所有的数据合并,从而得到完整的数据,进而可在需要读取通过连续的地址存储的数据时,能一次将所有地址中的数据读取并合并,进一步提高了数据读取效率。
[0089] 可选的,在本发明实施例提供的一种实施方式中,在从数据读取请求中获取所有的数据读取地址的步骤之后,在根据每个数据读取地址的预定字段,将每个数据读取地址存放至对应的存储区域的数据处理队列的步骤之前,方法还包括:
[0090] 确定每个数据读取地址的通道标记字段,其中,通道标记字段代表数据读取地址在所属数据读取通道中的位置;
[0091] 将读取到的数据存储至对应的数据读取通道,包括:
[0092] 根据通道标记字段,将读取到的数据存储至对应的数据读取通道。
[0093] 可以理解的是,由于需要将读取到的数据存储至相应的数据读取通道中,但数据读取地址中并不用于表示待读取数据应存储的位置。若同时包含多个数据读取请求,则可能出现数据存放失误的情况。
[0094] 因此,本发明实施例提供此种实施方式,在确定数据读取地址应被哪一个bank处理的同时,给出该数据读取地址的通道标记字段,以使bank在输出数据时,计算机设备可根据通道标记字段将数据存放至对应的通道里。
[0095] 示范性的,在本发明实施例提供的一种实施方式中,数据读取请求包括8个通道,通道标记字段包括6bit,高3bit数据表示该bank读取的数据是属于8个读取通道的哪个通道的数据标记低3bit数据表示该bank读取的数据是属于该读取通道的哪个位置的数据标记。
[0096] 进一步的,在本发明实施例提供的一种实施方式中,在从数据读取请求中获取所有的数据读取地址的步骤之后,在根据每个数据读取地址的预定字段,将每个数据读取地址存放至对应的存储区域的数据处理队列的步骤之前,方法还包括:
[0097] 确定数据读取请求的类别,数据读取请求的类别包括:直接存储器读取请求、卷积核读取请求、卷积层读取feature map请求以及池化层读取feature map请求;
[0098] 将读取到的数据存储至对应的数据读取通道,包括:
[0099] 根据数据读取地址的通道标记字段和数据读取请求的类别,将读取到的数据存储至对应的数据读取请求的数据读取通道。
[0100] 在本发明实施例提供的此种实施方式中,共设计了4种数据读取请求的类别,既直接存储器读取请求,即DMA读取SRAM数据请求;卷积核读取请求;卷积层读取feature map请求,feature map可理解为图片数据;池化层读取feature map请求。并基于这4种数据读取请求的类别,设置了读取请求优先级,以使SRAM在接收到多个数据读取请求时,可按照读取请求优先级处理多个请求,可以理解的是,读取请求优先级可根据实际情况设置。
[0101] 需理解的是,不同类别的数据读取请求,一次请求读取的数据大小可能不同,示范性的,在本发明实施例设置的一个实施方式中,DMA将SRAM中的数据读出,即直接存储器读取请求,位宽为128bit,一次请求包括两个数据读取地址;卷积层从SRAM中读取feature map(图片)数据,即卷积层读取feature map请求,一次数据读取请求包括8个通道,每个通道包括8个连续的数据读取地址,即位宽为512bit。可以理解的是,不同类别的数据读取请求的设置方式,可根据实际情况设置。
[0102] 可以理解的是,不同类别的数据的处理方式仍是根据读取地址的第3‑8位,划分不同的bank来处理。
[0103] 实施例2
[0104] 参照图2,图2示出了本发明实施例提供的一种数据写入方法的流程示意图,本发明实施例提供的数据写入方法,包括:
[0105] S210,将静态随机存取存储器的地址空间划分为预定数量的存储区域,并为每个存储区域设置一一对应的数据处理队列,其中,每个存储区域的空间大小相同;
[0106] S220,从数据写入请求中获取所有的数据写入地址,并根据每个数据写入地址的预定字段,将每个数据写入地址存放至对应的存储区域的数据处理队列;
[0107] S230,每个数据处理队列对应的存储区域,根据数据处理队列中的每个数据读取地址,写入数据读取地址对应的数据,完成数据读取请求。
[0108] 可选的,在本发明实施例提供的一种实施方式中,预定数量为64;
[0109] 进而S220,包括:
[0110] 根据每个数据读取地址的第3位到第8位,将每个数据写入地址对应的待写入数据写入对应的存储区域。
[0111] 需理解的是,本发明实施例2所提供的数据写入方法与本发明实施例1提供的数据读取方式相互对应,具体的执行的各个步骤的原理和有益效果均可参见实施例1,故不再赘述。
[0112] 此外,与实施例1提供的数据读取方法类似的是,本发明实施例2提供的一种实施方式中,数据读取请求共包括4种数据写入请求的类别,即直接存储器写入请求、池化层写入feature map请求、卷积层写入feature map请求。
[0113] 实施例3
[0114] 参照图3,图3示出了本发明实施例提供的一种数据读写方法的流程示意图,本发明实施例提供的数据读写方法,包括:
[0115] S310,将静态随机器的地址空间划分为预定数量的存储区域,并为每个存储区域设置一一对应的数据处理队列,其中,每个存储区域的空间大小相同;
[0116] S320,当数据读写请求包括数据读取请求时,从数据读取请求中获取所有的数据读取地址,并根据每个数据读取地址的预定字段,将每个数据读取地址存放至对应的存储区域的数据处理队列,其中,数据读取请求包括至少一个数据读取通道,每个数据读取通道包括至少一个数据读取地址;
[0117] S330,每个数据处理队列对应的存储区域,根据数据处理队列中的每个数据读取地址读取数据,将读取到的数据存储至对应的数据读取通道;
[0118] S340,当每个数据处理队列均完成数据读取后,将所有数据读取通道中的数据进行合并,完成数据读取请求;
[0119] S350,当数据读写请求包括数据写入请求时,从数据写入请求中获取所有的数据写入地址,并根据每个数据写入地址的预定字段,将每个数据写入地址存放至对应的存储区域的数据处理队列;
[0120] S360,每个数据处理队列对应的存储区域,根据数据处理队列中每个数据写入地址,写入数据写入地址对应的数据,完成数据写入请求。
[0121] 可选的,在本发明实施例提供的一种实施方式中,方法还包括:
[0122] 当至少两个数据读写请求需要对同一个存储区域进行数据读取和/或写入时,按照预设的数据读取优先级顺序,完成所有的数据读写请求。
[0123] 需理解的是,本发明实施例3所提供的数据读写方法分别与本发明实施例1提供的数据读取方式、实施例2提供的数据写入方法对应,具体的执行的各个步骤的原理和有益效果均可参见实施例1和/或实施例2,故不再赘述。
[0124] 实施例4
[0125] 参照图4,图4示出了本发明实施例提供的一种数据读取装置的结构示意图,本发明实施例提供的数据读取装置400,包括:
[0126] 第一划分模块410,用于将静态随机存取存储器的地址空间划分为预定数量的存储区域,并为每个存储区域设置一一对应的数据处理队列,其中,每个存储区域的空间大小相同;
[0127] 第一存放模块420,用于从数据读取请求中获取所有的数据读取地址,并根据每个数据读取地址的预定字段,将每个数据读取地址存放至对应的存储区域的数据处理队列,其中,数据读取请求包括至少一个数据读取通道,每个数据读取通道包括至少一个数据读取地址;
[0128] 第一读取模块430,用于每个数据处理队列对应的存储区域,根据数据处理队列中的每个数据读取地址读取数据,将读取到的数据存储至对应的数据读取通道;
[0129] 第一合并模块440,用于当每个数据处理队列均完成数据读取后,将所有数据读取通道中的数据进行合并,完成数据读取请求。
[0130] 本申请实施例提供的数据读取装置能够实现图1的方法实施例中数据读取方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0131] 实施例5
[0132] 参照图5,图5示出了本发明实施例提供的一种数据写入装置的结构示意图,本发明实施例提供的数据写入装置500,包括:
[0133] 第二划分模块510,用于将静态随机存取存储器的地址空间划分为预定数量的存储区域,并为每个存储区域设置一一对应的数据处理队列,其中,每个存储区域的空间大小相同;
[0134] 第二存放模块520,用于从数据写入请求中获取所有的数据写入地址,并根据每个数据写入地址的预定字段,将每个数据写入地址存放至对应的存储区域的数据处理队列;
[0135] 第一写入模块530,用于每个数据处理队列对应的存储区域,根据数据处理队列中的每个数据写入地址,写入数据写入地址对应的数据,完成数据写入请求。
[0136] 本申请实施例提供的数据写入装置能够实现图2的方法实施例中数据写入方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0137] 实施例6
[0138] 参照图6,图6示出了本发明实施例提供的一种数据读写装置的结构示意图,本发明实施例提供的数据读写装置600,包括:
[0139] 第三划分模块610,用于将静态随机器的地址空间划分为预定数量的存储区域,并为每个存储区域设置一一对应的数据处理队列,其中,每个存储区域的空间大小相同;
[0140] 第三存放模块620,用于当数据读写请求包括数据读取请求时,从数据读取请求中获取所有的数据读取地址,并根据每个数据读取地址的预定字段,将每个数据读取地址存放至对应的存储区域的数据处理队列,其中,数据读取请求包括至少一个数据读取通道,每个数据读取通道包括至少一个数据读取地址;
[0141] 第二读取模块630,用于每个数据处理队列对应的存储区域,根据数据处理队列中的每个数据读取地址读取数据,将读取到的数据存储至对应的数据读取通道;
[0142] 第二合并模块640,用于当每个数据处理队列均完成数据读取后,将所有数据读取通道中的数据进行合并,完成数据读取请求;
[0143] 第四存放模块650,用于当数据读写请求包括数据写入请求时,从数据写入请求中获取所有的数据写入地址,并根据每个数据写入地址的预定字段,将每个数据写入地址存放至对应的存储区域的数据处理队列;
[0144] 第二写入模块660,用于每个数据处理队列对应的存储区域,根据数据处理队列中的每个数据写入地址,写入数据写入地址对应的数据,完成数据写入请求。
[0145] 本申请实施例提供的数据读写装置能够实现图3的方法实施例中数据读写方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0146] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0147] 另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
[0148] 所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0149] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页 第1页 第2页 第3页
相关技术
数据写入相关技术
数据读取相关技术
周光亮发明人的其他相关专利技术