CN116820344A - 存储器访问电路及存储器访问方法、集成电路和电子设备 - Google Patents
存储器访问电路及存储器访问方法、集成电路和电子设备 Download PDFInfo
- Publication number
- CN116820344A CN116820344A CN202310808936.6A CN202310808936A CN116820344A CN 116820344 A CN116820344 A CN 116820344A CN 202310808936 A CN202310808936 A CN 202310808936A CN 116820344 A CN116820344 A CN 116820344A
- Authority
- CN
- China
- Prior art keywords
- selector
- module
- processing
- request information
- memory access
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012545 processing Methods 0.000 claims abstract description 346
- 238000003860 storage Methods 0.000 claims abstract description 239
- 239000000872 buffer Substances 0.000 claims description 36
- 230000008859 change Effects 0.000 claims description 33
- 230000004048 modification Effects 0.000 claims description 28
- 238000012986 modification Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 20
- 238000004590 computer program Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 241001522296 Erithacus rubecula Species 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000002238 attenuated effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000008054 signal transmission Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及一种存储器访问电路及存储器访问方法、集成电路和电子设备,涉及电子技术领域,所述存储器访问电路用于访问多个存储单元,该存储器访问电路包括:多个处理单元,第一选择器;该第一选择器的输入端连接多个处理单元的输出端,该第一选择器的输出端分别连接多个存储单元的输入端,该第一选择器用于对来自多个处理单元的P个请求信息进行P选Q处理,将选出的Q个请求信息发送至多个存储单元。本公开实施例的第一选择器用可实现一次选出多个来自不同处理单元的多个请求信息至多个存储单元,降低了存储器访问电路延时,大幅提升了存储器访问电路的性能。
Description
技术领域
本公开涉及电子技术领域,尤其涉及一种存储器访问电路及存储器访问方法、集成电路和电子设备。
背景技术
随着集成电路产业的快速发展,各类处理器芯片在各行各业中的应用越来越广泛,可以应用到网络通信、手机、机顶盒、液晶电视、医疗设备、安防设备、工控设备、智能电表、智能穿戴、物联网、汽车电子等场景。
在各类处理器芯片中,处理单元会访问存储单元以实现各种目标任务,其中,处理器芯片内的存储器访问电路可用于管理处理单元与存储单元之间的通信,存储器访问电路会直接影响整个处理器芯片的运行效率和稳定性。
发明内容
本公开提出了一种存储器访问技术方案。
根据本公开的一方面,提供了一种存储器访问电路,所述存储器访问电路用于访问多个存储单元,所述存储器访问电路包括:多个处理单元,第一选择器;所述第一选择器的输入端连接多个处理单元的输出端,所述第一选择器的输出端分别连接多个存储单元的输入端,所述第一选择器用于对来自多个处理单元的P个请求信息进行P选Q处理,将选出的Q个请求信息发送至多个存储单元,其中,Q为大于或等于2的整数,P为大于或等于Q的整数。
在一种可能的实现方式中,所述多个存储单元存储的数据相同,Q小于或等于所述存储单元的数量。
在一种可能的实现方式中,所述存储器访问电路还包括与每个存储单元对应的调度队列,所述第一选择器的输出端还分别连接每个存储单元对应的调度队列的输入端,每个调度队列用于在对应的存储单元收到来自处理单元的请求信息的情况下,将所述处理单元的标识信息写入调度队列。
在一种可能的实现方式中,所述存储器访问电路还包括与每个存储单元对应的第二选择器,任一第二选择器的输入端连接对应的存储单元的输出端、对应的所述调度队列的输出端,任一第二选择器的输出端分别连接每个处理单元的输入端,用于根据从所述调度队列读取的标识信息,将所述存储单元的返回数据传输至所述标识信息指示的处理单元。
在一种可能的实现方式中,所述第一选择器至少包括选择模块组和处理模块组,所述处理模块组用于根据处于空闲状态的存储单元的数量、处理单元的请求信息的数量P,确定所述第一选择器选出的请求信息的数量Q;所述选择模块组用于对来自多个处理单元的P个请求信息进行P选Q处理,选出Q个请求信息。
在一种可能的实现方式中,所述选择模块组包括至少两个选择模块,所述处理模块组包括至少一个处理模块,所述处理模块连接在相邻选择模块之间,每个选择模块用于:在接收到的序列中按照预设方向检索标识符,根据首个标识符所在的位置,确定所述选择模块的索引信息;在所述选择模块之后连接有处理模块的情况下,将接收到的序列与所述选择模块的索引信息发送至所述选择模块连接的处理模块;每个处理模块用于:在接收到的序列中,清除所述选择模块的索引信息指示位置处的标识符,得到更改序列;在所述更改序列存在至少一个标识符,且存在至少K个存储单元为空闲状态的情况下,将所述更改序列发送至下一选择模块,其中K为下一选择模块及其之前连接的选择模块的数量。
在一种可能的实现方式中,所述第一选择器还包括索引存储模块,所述处理模块还用于:在所述选择模块之后连接索引模块的情况下,将所述选择模块的索引信息发送至所述索引存储模块;或者,在所述更改序列对标识符的检索结果为0,或存在至少K个存储单元为占用状态的情况下,将所述选择模块的索引信息发送至所述索引存储模块;所述索引存储模块用于:根据选择模块的索引信息,更新所述索引存储模块记录的历史索引信息。
在一种可能的实现方式中,所述第一选择器还包括:判断模块、移位模块;所述判断模块用于:根据来自多个处理单元的P个请求信息确定输入序列;在所述输入序列存在至少一个标识符,且存在至少一个存储单元为空闲状态的情况下,将所述输入序列和所述索引存储模块记录的历史索引信息发送至所述移位模块;所述移位模块用于:根据所述历史索引信息,对所述输入序列进行移位操作,得到移位序列;将所述移位序列发送至所述至少两个选择模块中,与所述移位模块连接的选择模块。
在一种可能的实现方式中,所述第一选择器用于:根据各选择模块的索引信息中的至少一者,以及所述索引存储模块记录的历史索引信息,确定选出的Q个请求信息。
在一种可能的实现方式中,所述存储器访问电路还包括至少一个第一缓冲器、至少一个第二缓冲器,所述第一选择器的输出端分别通过至少一个第一缓冲器连接对应的存储单元的输入端,每个存储单元的输出端通过至少一个第二缓冲器连接所述第二选择器的输入端。
根据本公开的一方面,提供了一种储存器访问方法,所述存储器访问方法应用于存储器访问电路,所述存储器访问电路用于访问多个存储单元,所述存储器访问电路包括:多个处理单元,第一选择器,与每个存储单元对应的调度队列,其中,所述第一选择器的输入端连接多个处理单元的输出端,所述第一选择器的输出端分别连接多个存储单元的输入端以及每个存储单元对应的调度队列的输入端;所述存储器访问方法包括:每个处理单元将生成的请求信息发送至所述第一选择器;所述第一选择器对来自多个处理单元的P个请求信息进行P选Q处理,将选出的Q个请求信息发送至多个存储单元,其中,Q为大于或等于2的整数,P为大于或等于Q的整数;响应于每个存储单元收到来自处理单元的请求信息的情况下,将所述处理单元的标识信息写入每个存储单元对应的调度队列。
在一种可能的实现方式中,所述存储器访问电路还包括与每个存储单元对应的第二选择器,其中,任一第二选择器的输入端连接对应的存储单元的输出端、对应的所述调度队列的输出端,任一第二选择器的输出端分别连接每个处理单元的输入端;所述存储器访问方法还包括:所述存储单元响应来自所述处理单元的请求信息生成返回数据;所述第二选择器从所述调度队列读取的标识信息,将所述存储单元的返回数据传输至所述标识信息指示的处理单元。
在一种可能的实现方式中,所述多个存储单元存储的数据相同,Q小于或等于所述存储单元的数量。
在一种可能的实现方式中,所述第一选择器至少包括选择模块组和处理模块组,所述第一选择器对来自多个处理单元的P个请求信息进行P选Q处理,包括:所述处理模块组根据处于空闲状态的存储单元的数量、处理单元的请求信息的数量P,确定所述第一选择器选出的请求信息的数量Q;所述选择模块组对来自多个处理单元的P个请求信息进行P选Q处理,选出Q个请求信息。
在一种可能的实现方式中,所述选择模块组包括至少两个选择模块,所述处理模块组包括至少一个处理模块,所述方法还包括:每个选择模块在接收到的序列中按照预设方向检索标识符,根据首个标识符所在的位置,确定所述选择模块的索引信息;在所述选择模块之后连接有处理模块的情况下,所述选择模块将接收到的序列与所述选择模块的索引信息发送至所述选择模块连接的处理模块;每个处理模块在接收到的序列中,清除所述选择模块的索引信息指示位置处的标识符,得到更改序列;在所述更改序列存在至少一个标识符,且存在至少K个存储单元为空闲状态的情况下,将所述更改序列发送至下一选择模块,其中K为下一选择模块及其之前连接的选择模块的数量。
在一种可能的实现方式中,所述第一选择器还包括索引存储模块,所述方法还包括:在所述选择模块之后连接索引模块的情况下,所述处理模块将所述选择模块的索引信息发送至所述索引存储模块;或者,所述处理模块在所述更改序列对标识符的检索结果为0,或存在至少K个存储单元为占用状态的情况下,将所述选择模块的索引信息发送至所述索引存储模块;所述索引存储模块根据选择模块的索引信息,更新所述索引存储模块记录的历史索引信息。
在一种可能的实现方式中,所述第一选择器还包括:判断模块、移位模块;所述方法还包括:所述判断模块根据来自多个处理单元的P个请求信息确定输入序列;所述判断模块在所述输入序列存在至少一个标识符,且存在至少一个存储单元为空闲状态的情况下,将所述输入序列和所述索引存储模块记录的历史索引信息发送至所述移位模块;所述移位模块根据所述历史索引信息,对所述输入序列进行移位操作,得到移位序列;所述移位模块将所述移位序列发送至所述至少两个选择模块中,与所述移位模块连接的选择模块。
在一种可能的实现方式中,所述方法还包括:根据各选择模块的索引信息中的至少一者,以及所述索引存储模块记录的历史索引信息,确定选出的Q个请求信息。
在一种可能的实现方式中,所述存储器访问电路还包括至少一个第一缓冲器、至少一个第二缓冲器,所述第一选择器的输出端分别通过至少一个第一缓冲器连接对应的存储单元的输入端,每个存储单元的输出端通过至少一个第二缓冲器连接所述第二选择器的输入端。
根据本公开的一方面,提供了一种集成电路,所述集成电路包括如上所述的存储器访问电路。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括如上所述的存储器访问电路。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
在本公开实施例中,存储器访问电路用于访问多个存储单元,可包括多个处理单元和第一选择器;其中,第一选择器的输入端连接多个处理单元的输出端,第一选择器的输出端分别连接多个存储单元的输入端,第一选择器用于对来自多个处理单元的P个请求信息进行P选Q处理,将选出的Q个请求信息发送至多个存储单元。本公开实施例的第一选择器可以一次选出多个来自不同处理单元的多个请求信息至多个存储单元,降低了储存器访问电路的延时,大幅提升了存储器访问电路的系统性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出根据本公开实施例的一种存储器访问电路的示意图。
图2示出根据本公开实施例的另一种存储器访问电路的示意图。
图3示出根据本公开实施例的一种第一选择器的示意图。
图4示出根据本公开实施例的另一种第一选择器的示意图。
图5示出根据本公开实施例的另一种存储器访问电路的示意图。
图6示出根据本公开实施例的一种存储器访问方法的流程图。
图7示出根据本公开实施例的另一种存储器访问方法的流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在一种可能的实现方式中,图1示出根据本公开实施例的一种存储器访问电路的示意图,如图1所示,所述存储器访问电路用于访问多个存储单元0,所述存储器访问电路包括:多个处理单元1,第一选择器2;所述第一选择器2的输入端连接多个处理单元1的输出端,所述第一选择器2的输出端分别连接多个存储单元0的输入端,所述第一选择器2用于对来自多个处理单元1的P个请求信息进行P选Q处理,将选出的Q个请求信息发送至多个存储单元0,其中,Q为大于或等于2的整数,P为大于或等于Q的整数。
在一种可能的实现方式中,本公开实施例的存储器访问电路可以集成到处理器芯片中,用于访问处理器芯片内的多个不同的存储单元0。
其中,所述处理器芯片例如包括:中央处理器(Central Processing Unit,CPU)、图形处理器(Graphic Processing Unit,GPU)、通用图形处理单元(General-PurposeComputing on Graphics Processing Units,GPGPU)、多核处理器(Multi-CoreProcessor)、数字信号处理单元(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、张量处理器(Tensor ProcessingUnit,TPU)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件,本公开对此不作限制。
其中,存储单元0可包括设置在处理器芯片内部的随机存取存储器(RandomAccess Memory,RAM),例如动态随机存取存储器(Dynamic RAM,DRAM)、静态随机存取存储器(Static RAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、高速缓存存储器(Cached DRAM,CDRAM)、增强型动态随机存取存储器(Extended Data Out DRAM,EDRAM)等,本公开对存储单元0的类型不作限制。
示例性地,多个处理单元1可以是多核处理器芯片的多个计算核,可以对多核处理器芯片内的不同的存储单元0进行访问,提高多核并行处理的效率。
或者,多个处理单元1也可以是多核处理器芯片中设置在同一计算核中的多线程模块,可以对多核处理器芯片内的不同的存储单元0(可以是位于计算核内的存储单元,也可以是位于计算核外的存储单元)进行访问,提高多线程并行处理的效率。
或者,处理器芯片内部包括多个处理单元1和多个调度模块,不同的存储单元0部署在不同的调度模块,调度模块可用于执行调度任务(包括操作数据调度、操作程序调度)。在此情况下,调度模块可用于接收处理单元1的请求信息(例如读操作指令),根据请求信息为处理单元1提供所需的资源(返回数据)。
如图1所示,M个存储单元0可以分别为存储单元0_1~存储单元0_M,N个处理单元1可分别为处理单元1_1~处理单元1_N。本公开的实施例对存储单元0的数量和处理单元1的数量不作限制,可根据实际的应用场景确定存储单元0的数量和处理单元1的数量。
第一选择器2的输入端可以按照一连多的方式,分别连接处理单元1_1的输出端~处理单元1_N的输出端,第一选择器2的输出端可以按照一连多的方式,分别连接存储单元0_1的输入端~存储单元0_M的输入端,所述第一选择器2用于对来自N个处理单元1_1~处理单元1_N的P个请求信息进行P选Q处理,将选出的Q个请求信息发送至M个存储单元0_1~存储单元0_M,其中,P小于或等于所述处理单元1的数量N,Q小于或等于所述存储单元0的数量M。
示例性地,假设以N等于8、M等于3为例,也即存在8个处理单元1(例如处理单元1_1~处理单元1_8)和3个存储单元0(存储单元0_1~存储单元0_3)。处理单元1_1~处理单元1_8可以同时向第一选择器2发送请求信息,在第一选择器2收到分别来自处理单元1_1~处理单元1_8的八个请求信息的情况下,如果存储单元0_1~存储单元0_3均处于空闲状态,可以对八个请求信息进行八选三处理,将选出的三个请求信息分别发送至存储单元0_1~存储单元0_3;如果存储单元0_1~存储单元0_3中存在两个存储单元0处于空闲状态,可以对八个请求信息进行八选二处理,将选出的二个请求信息分别发送至空闲的两个存储单元0;如果存储单元0_1~存储单元0_3中存在一个存储单元0处于空闲状态,可以对八个请求信息进行八选一处理,将选出的一个请求信息分别发送至空闲的一个存储单元0。
在示例中,处理单元1_1~处理单元1_8中可能会存在任意P个(P≤8)处理单元1同时向第一选择器2发送请求信息,在第一选择器2收到这P个处理单元1的P个请求信息的情况下,如果存储单元0_1~存储单元0_3均处于空闲状态,可以对P个请求信息进行P选三处理,将选出的三个请求信息分别发送至存储单元0_1~存储单元0_3;如果存储单元0_1~存储单元0_3中存在两个存储单元0处于空闲状态,可以对P个请求信息进行P选二处理,将选出的二个请求信息分别发送至空闲的两个存储单元0;如果存储单元0_1~存储单元0_3中存在一个存储单元0处于空闲状态,可以对P个请求信息进行P选一处理,将选出的一个请求信息分别发送至空闲的一个存储单元0。
这样,对比相关技术中选择器实现多选一的轮询调度(round robin),本公开实施例的第一选择器2可实现多选多,可以一次选出多个来自不同处理单元1的多个请求信息至多个存储单元0,降低了系统延时,大幅提升了系统性能。
在一种可能的实现方式中,所述多个存储单元0存储的数据相同,由于多个存储单元0存储的数据相同,写请求会改变存储单元存储的数据,所以本公开实施例的请求信息为读请求。其中,请求信息可以包括访问地址(例如读请求的地址)、使能信号(例如使当前请求信息具有某一存储单元的读写权限的信号)等,本公开对此不作具体限制。
对比相关技术中需要请求信息携带调度标识(调度标识用于指示不同的存储单元0)的存储器访问方式,会存在某一个存储单元0处于占用状态,导致多个处理单元1同时访问一个已被占用的存储单元0而产生大量的等待时间,系统延时会比较长,降低了的存储器的访问效率。本公开的实施例可以在处理器芯片内设置多个相同的存储单元0,各处理单元1生成的请求信息不用携带调度标识,第一选择器2收到来自不同处理单元1的多个请求信息,可通过自适应的方式将选出的多个请求信息优先发送至空闲状态的存储单元0,减少了多个处理单元1对单个存储单元0的集中访问,降低了系统延时,提高了系统性能。
下面对本公开实施例的存储器访问电路进行展开说明。图2示出根据本公开实施例的另一种存储器访问电路的示意图,如图2所示,所述存储器访问电路还包括,与每个存储单元0对应的调度队列3、第二选择器4;
所述第一选择器2的输出端还分别连接每个存储单元0对应的调度队列3的输入端,每个调度队列3用于在对应的存储单元0收到来自处理单元1的请求信息的情况下,将所述处理单元1的标识信息写入调度队列3;其中,标识信息可以是二进制序列,不同的标识信息用于指示不同的处理单元1。
任一第二选择器4的输入端连接对应的存储单元0的输出端、对应的所述调度队列3的输出端,任一第二选择器4的输出端分别连接每个处理单元1的输入端,用于根据从所述调度队列3读取的标识信息,将所述存储单元0的返回数据传输至所述标识信息指示的处理单元1。
通过这种方式,多个处理单元1可以访问不同的存储单元0,各存储单元0可以正确返回各请求信息的返回数据至各处理单元1。
如图2所示,M个存储单元0可以分别为存储单元0_1~存储单元0_M,N个处理单元1可分别为处理单元1_1~处理单元1_N。本公开的实施例对存储单元0的数量和处理单元1的数量不作限制,可根据实际的应用场景确定存储单元0的数量和处理单元1的数量。
第一选择器2的输入端可以按照一连多的方式,分别连接处理单元1_1的输出端~处理单元1_N的输出端,第一选择器2的输出端可以按照一连多的方式,分别连接存储单元0_1的输入端~存储单元0_M的输入端,所述第一选择器2用于对来自N个处理单元1_1~处理单元1_N的P个请求信息进行P选Q处理,将选出的Q个请求信息发送至M个存储单元0_1~存储单元0_M。
如图2所示,第一选择器2的输出端按照一连多的方式,还分别连接调度队列3_1~调度队列3_M的输入端。其中,调度队列3_1用于在存储单元0_1收到来自处理单元1_1~处理单元1_N中任一处理单元1的请求信息的情况下,将该处理单元1的标识信息写入调度队列3_1;调度队列3_2用于在存储单元0_2收到来自处理单元1_1~处理单元1_N中任一处理单元1的请求信息的情况下,将该处理单元1的标识信息写入调度队列3_2;以此类推,调度队列3_M用于在存储单元0_M收到来自处理单元1_1~处理单元1_N中任一处理单元1的请求信息的情况下,将该处理单元1的标识信息写入调度队列3_M。
这样,如果处理单元1_1~处理单元1_N同时发起对存储单元0_1~存储单元0_M的访问请求,第一选择器2则会对来自各处理单元1_1~处理单元1_N的请求信息进行处理,并根据存储单元0_1~存储单元0_M中空闲状态进行分配,每个存储单元0对应的调度队列3会记录本次访问的处理单元1的标识信息。
例如,如果第一选择器2选中处理单元1_1,处于空闲状态的存储单元0_1收到来自处理单元1_1的请求信息,则往存储单元0_1对应的调度队列3_1中写入处理单元1_1的标识信息001;如果第一选择器2选中处理单元1_2,处于空闲状态的存储单元0_1收到来自处理单元1_2的请求信息,则往存储单元0_1对应的调度队列3_2中写入处理单元1_2的标识信息010。其中,调度队列3的写入的机制是第一选择器2每次选出处理单元1时才进行调度队列3的写入;调度队列3的深度表示最多可以写入请求信息的数据,调度队列3的位宽大于或等于标识信息的位宽,本公开对调度队列3的位宽和深度不作限制。
这样,有利于各存储单元0响应请求信息生成返回数据,可以将返回数据正确高效地发送至对应的处理单元1。
如图2所示,第二选择器4_1的输入端连接其对应的存储单元0_1的输出端、调度队列3_1的输出端,第二选择器4_1的输出端按照一连多的方式,分别连接处理单元1_1的输入端~处理单元1_N的输入端。这样,每当第二选择器4_1收到存储单元0_1的返回数据,第二选择器4_1可根据从调度队列3_1的队首读取的标识信息,将存储单元0_1的返回数据传输至该标识信息指示的处理单元1。例如,调度队列3_1的存储机制为先入先出,当调度队列3_1存储的标识信息为001,110,011(其中,标识信息001指示处理单元1_1,标识信息110指示处理单元1_6,标识信息011指示处理单元1_3),则表示第一选择器2选中的访问存储单元0_1的处理单元1的顺序为处理单元1_1、处理单元1_6、处理单元1_3;则存储单元0_1的返回数据也应按照写入时的顺序返回处理单元1_1、处理单元1_6、处理单元1_3。
第二选择器4_2的输入端连接其对应的存储单元0_2的输出端、调度队列3_2的输出端,第二选择器4_2的输出端按照一连多的方式,分别连接处理单元1_1的输入端~处理单元1_N的输入端。这样,每当第二选择器4_2收到存储单元0_2的返回数据,第二选择器4_2可根据从调度队列3_2的队首读取的标识信息,将存储单元0_2的返回数据传输至该标识信息指示的处理单元1。
以此类推,第二选择器4_M的输入端连接其对应的存储单元0_M的输出端、调度队列3_M的输出端,第二选择器4_M的输出端按照一连多的方式,分别连接处理单元1_1的输入端~处理单元1_N的输入端。这样,每当第二选择器4_M收到存储单元0_M的返回数据,第二选择器4_M可根据从调度队列3_M的队首读取的标识信息,将存储单元0_M的返回数据传输至该标识信息指示的处理单元1。
通过设置与每个存储单元0对应的调度队列3和第二选择器4,可通过调度队列3存储处理单元1的标识信息,按照第一选择2的选出顺序,来记录多个处理单元1的访问顺序,当存储单元0回复返回数据时,第二选择器4可以根据调度队列3记录的访问顺序,将存储单元0的返回数据高效地准确地传输至处理单元1,进一步提高处理器芯片的运行效率。
在一种可能的实现方式中,所述第一选择器2至少包括选择模块组和处理模块组,所述处理模块组用于根据处于空闲状态的存储单元0的数量、处理单元1的请求信息的数量P,确定所述第一选择器2选出的请求信息的数量Q;所述选择模块组用于对来自多个处理单元1的P个请求信息进行P选Q处理,选出Q个请求信息。
在示例中,如图1或图2所示,存储器访问电路可包括N个处理单元1、M个存储单元0。假设在某一场景下,M个存储单元0中H个存储单元0处于空闲状态,M-H个存储单元0处于占用状态。在此情况下,当N个处理单元1中存在P个处理单元1同时向第一选择器2发送请求信息,第一选择器2可以同时收到来自P个处理单元1的P个请求信息,第一选择器2中的处理模块组可根据处于空闲状态的存储单元0的数量H、处理单元1的请求信息的数量P,确定第一选择器2选出的请求信息的数量Q。
例如,如果处于空闲状态的存储单元0的数量H大于或等于收到的请求信息的数量P,可以确定出第一选择器2选出的请求信息的数量Q=P;选择模块组可以直接将P个请求信息作为选出的请求信息。
又例如,如果处于空闲状态的存储单元0的数量H小于收到的请求信息的数量P,可以确定出第一选择器2选出的请求信息的数量Q=H;选择模块组可以对来自多个处理单元1的P个请求信息进行P选H处理,选出H个请求信息。
通过设置选择模块组和处理模块组,第一选择器2可以自适应地选出多个请求信息优先发送至空闲状态的存储单元0,有利于提高第一选择器2处理效率,使第一选择器2更具有灵活性和可扩展性。
在一种可能的实现方式中,所述选择模块组包括至少两个选择模块,所述处理模块组包括至少一个处理模块,所述处理模块连接在相邻选择模块之间。
每个选择模块用于:在接收到的序列中按照预设方向检索标识符,根据首个标识符所在的位置,确定所述选择模块的索引信息;在所述选择模块之后连接有处理模块的情况下,将接收到的序列与所述选择模块的索引信息发送至所述选择模块连接的处理模块。
在示例中,每个选择模块接收的序列可包括多位,每位可对应一个不同的处理单元1,在每个选择模块接收的序列中,如果任一处理单元1对应位为标识符(例如数字1),说明来自该处理单元1的请求信息为待选择的请求信息,来自该处理单元1的请求信息可能会被选中,也可能不用被选中。
每个选择模块可按照预设方向检索标识符,根据首个标识符所在的位置,确定所述选择模块的索引信息;例如,假设预设方向为从低位至高位,标识符为数字1,每个选择模块可以在接收到的序列中,按照从低位至高位的方向进行按位寻1操作,根据第一个1所在的位置,确定所述选择模块的索引信息。每个选择模块可确定一个不同的索引信息,以通过每个选择模块的索引信息,确定其选出的一个请求信息。
其中,标识符可以是任意数字、字母或特殊符号,本公开对标识符形式不作限制。预设方向可包括从序列左侧至右侧的方向,或者从序列右侧至左侧的方向,或者,从序列中间至两边的方向,本公开对预设方向不作限制。
每个处理模块用于:在接收到的序列中,清除所述选择模块的索引信息指示位置处的标识符,得到更改序列;在所述更改序列存在至少一个标识符,且存在至少K个存储单元0为空闲状态的情况下,将所述更改序列发送至下一选择模块,其中K为下一选择模块及其之前连接的选择模块的数量。
其中,为了减少已选中的请求信息对待选请求信息的干扰,在每个处理模块接收的序列中,可以清除选择模块的索引信息指示位置处的标识符,得到更改序列,该更改序列剔除了已选中的请求信息对应的标识符。
然后,可以根据更改序列和存储单元0的空闲状态的数量,确定是否进行下一个请求信息的选择。
其中,如果更改序列中还存在标识符,说明剔除被选中的请求信息,还存在待选择的请求信息等待被选中;如果更改序列中不存在标识符,说明已经没有待选择的请求信息,可以结束本次第一选择器2的选择工作。
其中,如果存在至少K个(K为下一选择模块及其之前连接的选择模块的数量)存储单元0为空闲状态,说明还存在空闲的存储单元0提供给待选择的请求信息;如果小于K个(K为下一选择模块及其之前连接的选择模块的数量)存储单元0为空闲状态,说明没有空闲的存储单元0提供给待选择的请求信息,同样可以结束本次第一选择器2的选择工作。
在更改序列存在至少一个标识符,且存在至少K个存储单元0为空闲状态的情况下,可以将更改序列发送至下一选择模块。其中,在判断更改序列是否存在至少一个标识符的过程中,可以对更改序列进行按位逻辑运算,也可以对更改序列的值与预设数值进行比较,还可以将更改序列输入用于判断是否存在标识符的预设函数,本公开对此不作限制。
例如,假设标识符为数字1,每个处理模块在接收到的序列中,可以将选择模块的索引信息指示位置处的1更改为0,得到更改序列;在更改序列按位或操作的结果为1(说明存在至少一个标识符为1),且存在至少K个存储单元0为空闲状态的情况下,将更改序列发送至下一选择模块。
通过这种方式,每个选择模块可以根据前序连接的处理模块自适应地确定是否执行选择操作,并在执行选择操作的情况下,自适应的选出对应的请求信息。
在一种可能的实现方式中,所述第一选择器2还包括索引存储模块,所述处理模块还用于:在所述选择模块之后连接索引模块的情况下,将所述选择模块的索引信息发送至所述索引存储模块;或者,在所述更改序列对标识符的检索结果为0,或存在至少K个存储单元0为占用状态的情况下,将所述选择模块的索引信息发送至所述索引存储模块;所述索引存储模块用于:根据选择模块的索引信息,更新所述索引存储模块记录的历史索引信息。
在实际的使用中,第一选择器2可以按照时钟周期,在每个周期进行一次多选多的仲裁。通过更新历史索引信息,有利于将之前第一选择器2多选多的仲裁结果作为本次第一选择器2多选多的参考,并将本次第一选择器2多选多的仲裁结果作为下一次第一选择器2多选多的参考,提高第一选择器2每次进行多选多仲裁处理的公平性。
图3示出根据本公开实施例的一种第一选择器的示意图。如图3所示,所述第一选择器2包括判断模块22、移位模块23、至少两个选择模块24,连接在相邻选择模块24之间的处理模块25、索引存储模块26。
其中,图3的虚线框部分21包括了一个选择模块24和一个处理模块25,虚线框部分21可以删除,也可以重复多次。例如,在虚线框部分21删除的情况下,第一选择器2内设置有2个选择模块24和1个处理模块25,第一选择器2具有从来自N个处理单元1_1~处理单元1_N的请求信息进行N选2的能力。又例如,在虚线框部分21重复S次的情况下,第一选择器2内设置有S+2个选择模块24和S+1个处理模块25,第一选择器2具有从来自N个处理单元1_1~处理单元1_N的请求信息进行N选S+2的能力。在实际的应用中,可根据具体的应用场景设置选择模块24和处理模块25的数量,本公开对此不作限制。
在一种可能的实现方式中,所述判断模块22用于:根据来自多个处理单元1的P个请求信息确定输入序列;在所述输入序列存在至少一个标识符,且存在至少一个存储单元0为空闲状态的情况下,将所述输入序列和获取到的所述索引存储模块26记录的历史索引信息发送至所述移位模块23。所述历史索引信息用于表示上次第一选择器2进行多选多处理时,最后选出的处理单元1对应的索引信息。
其中,假设标识符为1,判断输入序列是否存在至少一个标识符,可以通过判断输入序列按位或操作的结果为是否为1确定,或者,也可以通过判断输入序列的值是否大于1确定,本公开对此不作限制。
所述移位模块23用于:根据历史索引信息,对所述输入序列进行移位操作,得到移位序列;将所述移位序列发送至所述至少两个选择模块24中,与所述移位模块23连接的选择模块24,也即如图3所示的选择模块24_1。
每个选择模块24用于:在接收到的序列中按照从低位至高位的方向进行按位寻1操作,根据第一个1所在的位置,确定所述选择模块24的索引信息;在所述选择模块24之后连接有处理模块25的情况下,将接收到的序列与所述选择模块24的索引信息发送至所述选择模块24连接的处理模块25。
每个处理模块25用于:在接收到的序列中,将所述选择模块24的索引信息指示位置处的1更改为0,得到更改序列;所述更改序列按位或操作的结果为1,且存在至少K个存储单元0为空闲状态的情况下,将所述更改序列发送至下一选择模块24,其中K为下一选择模块24及其之前连接的选择模块24的数量;在所述选择模块24之后连接索引模块的情况下,将所述选择模块24的索引信息发送至所述索引存储模块26。
所述处理模块25还用于:在所述更改序列按位或操作的结果为0,或存在至少K个存储单元0为占用状态的情况下,将所述选择模块24的索引信息发送至所述索引存储模块26。
所述索引存储模块26用于:根据所述索引存储模块26记录的历史索引信息和选择模块24的索引信息,确定本次存储的索引信息。
所述第一选择器2用于:根据各选择模块24的索引信息中的至少一者,以及所述索引存储模块26记录的历史索引信息,确定选出的Q个请求信息。
这样,第一选择器2收到来自不同处理单元1的多个请求信息,可通过自适应的方式将选出的多个请求信息优先发送至空闲状态的存储单元0。
下面以处理单元1的数量为8,存储单元0的数量为3为例,对第一选择器2进行示例性说明。图4示出根据本公开实施例的另一种第一选择器2的示意图。如图4所示,第一选择器2可包括判断模块22、移位模块23、三个选择模块24(即:选择模块24_1、选择模块24_2、选择模块24_3)、两个处理模块25(即:处理模块25_1、处理模块25_2)、索引存储模块26。
在一种可能的实现方式中,判断模块22可用于根据来自处理单元1_1~处理单元1_8的P个(P≤8)请求信息确定输入序列order1,以及从索引存储模块26获取历史索引信息index1;判断模块22在输入序列order1按位或操作的结果为1,且在存储单元0_1、存储单元0_2和存储单元0_3中存在至少一个存储单元0为空闲状态的情况下,将输入序列order1和历史索引信息index1发送至移位模块23。
举例来说,输入序列order1可以是一个8位的二进制序列,每位分别对应一个不同的处理单元1,判断模块22收到任一处理单元1的请求信息,可以将其对应位置1。假设在输入序列order1中,按照从低位至高位的方向,分别对应处理单元1_1~处理单元1_8。如果处理单元1_1~处理单元1_8同时发起对存储单元0的访问,判断模块22根据来自处理单元1_1~处理单元1_8的8个(P=8)请求信息,可以确定出输入序列order1=11111111。如果处理单元1_1~处理单元1_8均没有发起对存储单元0的访问,判断模块22没有收到任何请求信息(P=0),可以确定出输入序列order1=00000000。如果处理单元1_1~处理单元1_6同时发起对存储单元0的访问,处理单元1_7和处理单元1_8没有发起对存储单元0的访问,判断模块22会收到来自处理单元1_1~处理单元1_6的6个请求信息(P=6),可以确定出输入序列order1=00111111。应当理解,在输入序列order1中,也可以按照从高位至低位的方向,分别对应处理单元1_1~处理单元1_8,本公开对此不作限制。
判断模块22通过判断本次输入序列order1按位或操作的结果是否为1,可以确定本次是否有处理单元1发起访问请求,如果本次的输入序列order1为1,表示本次有处理单元1发起访问请求。
判断模块22还会判断存储单元0_1~存储单元0_3中是否有至少一个存储单元0为空闲状态,以便有空闲状态的存储单元0可以处理来自处理单元1的请求信息。
判断模块22在上述两个条件满足的情况下,会将本次的输入序列order1和从索引存储模块26读取到的历史索引信息index1发送给后级的移位模块23。
在一种可能的实现方式中,移位模块23用于根据历史索引信息index1,对输入序列order1进行移位操作,将输入序列order1中从低位(右侧)起第1位~第index1位的序列部分拼接在第index1+1位~第8位的序列部分的左侧,得到移位序列order2,并将移位序列order2发送至选择模块24_1。例如,假设输入序列order1=11101011,历史索引信息index1=4,根据index1对输入序列order1进行移位操作,可以得到移位序列order2=10111110。
在一种可能的实现方式中,选择模块24_1用于在移位序列order2中按照从低位至高位的方向进行按位寻1操作,根据第一个1所在的位置,确定选择模块24_1的索引信息index2,并将移位序列order2与选择模块24_1的索引信息index2发送至处理模块25_1。
举例来说,假设移位序列order2=10111110,对10111110按照从低位至高位的方向进行寻1操作,第一个1所在的位置为第2位,可以将选择模块24_1的索引信息index2确定为2。选择模块24_1确定出索引信息index2,可以将移位序列order2和索引信息index2发送至处理模块25_1。其中,第一选择器2可根据选择模块24_1确定出的索引信息index2,从收到的P个请求信息中,确定选出的一个请求信息。
在一种可能的实现方式中,处理模块25_1用于在移位序列order2中将选择模块24_1的索引信息index2指示位置处的1更改为0,得到更改序列order3;在更改序列order3按位或操作的结果为1,且存在至少两个(K=2)存储单元0为空闲状态的情况下,将更改序列order3发送至选择模块24_2;在更改序列order3按位或操作的结果为0,或存在至少两个存储单元为占用状态的情况下,将选择模块24_1的索引信息index2发送至索引存储模块26。
其中,K为下一选择模块24_2及其之前连接的选择模块24_1的数量和2。
举例来说,假设处理模块25_1收到的移位序列order2为10111110,索引信息index2为2,可以对10111110中右侧起第2位的1进行掩码处理,第2位的1更改为0,得到更改序列order3=10111100。
处理模块25_1可以判断更改序列order3按位或操作的结果是否为1,来确定本次除了由索引信息index2选出的一个处理单元1发起了一个有效的请求信息,是否还有剩余的处理单元1发起有效的访问请求,如果更改序列order3为1,表示剩余处理单元1中还有处理单元1发起访问请求。
处理模块25_1还会判断存储单元0_1~存储单元0_3中是否有至少两个存储单元0为空闲状态(例如存在两个或三个存储单元0为空闲状态),以便除了由索引信息index2选出的请求信息占用一个空闲状态的存储单元0,还会有剩余的空闲状态的存储单元0可以处理本次来自其它处理单元1的请求信息。
处理模块25_1在判断出满足了“更改序列order3按位或操作的结果为1”以及“存在至少两个存储单元0为空闲状态”这两个条件的情况下,则将更改序列order3发送给后级的选择模块24_2处理,若这两个条件有至少一个不满足,则停止后续计算,并且将索引信息index2发送给索引存储模块26进行存储。
在一种可能的实现方式中,选择模块24_2用于在更改序列order3中按照从低位至高位的方向进行按位寻1操作,根据第一个1所在的位置,确定选择模块24_2的索引信息index3,并将更改序列order3与选择模块24_2的索引信息index3发送至处理模块25_2。其中,选择模块24_2可以进行下一轮的寻1操作,输出更改序列order3对应的索引信息index3,具体可参考选择模块24_1,此处不再赘述。
在一种可能的实现方式中,处理模块25_2用于在更改序列order3中将选择模块24_2的索引信息index3指示位置处的1更改为0,得到更改序列order4;在更改序列order4按位或操作的结果为1,且三个(K=3)存储单元0(即:存储单元0_1~存储单元0_3)全部为空闲状态的情况下,将更改序列order4发送至选择模块24_3;在更改序列order4按位或操作的结果为0,或存在至少一个存储单元为占用状态的情况下,将选择模块24_2的索引信息index3发送至索引存储模块26。
其中,K为下一选择模块24_3及其之前连接的选择模块24_1~选择模块24_2的数量和3。
举例来说,处理模块25_2收到更改序列order3和索引信息index3,可以对更改序列order3右侧起第index3位的1进行掩码处理,将第index3位的1更改为0,得到更改序列order4。
处理模块25_2可以判断更改序列order4按位或操作的结果是否为1,来确定本次除了由索引信息index2和索引信息index3选出的两个处理单元1发起了两个有效的请求信息,是否还有剩余的处理单元1发起有效的访问请求,如果更改序列order4为1,表示剩余处理单元1中还有处理单元1发起访问请求。
处理模块25_2还会判断存储单元0_1~存储单元0_3是否全部为空闲状态,以便除了由索引信息index2和索引信息index3选出的两个请求信息占用两个空闲状态的存储单元0,还会有剩余的空闲状态的存储单元0可以处理本次来自其它处理单元1的请求信息。
处理模块25_2在判断出满足了“更改序列order4按位或操作的结果为1”以及“三个存储单元0全部为空闲状态”这两个条件的情况下,则将更改序列order4发送给后级的选择模块24_3处理,若这两个条件有至少一个不满足,则停止后续计算,并且将索引信息index3发送给索引存储模块26进行存储。
在一种可能的实现方式中,选择模块24_3用于在更改序列order4中按照从低位至高位的方向进行按位寻1操作,根据第一个1所在的位置,确定选择模块24_3的索引信息index4,并将选择模块24_3的索引信息index4发送至索引存储模块26。其中,选择模块24_3可以进行下一轮的寻1操作,输出更改序列order4对应的索引信息index4,具体可参考选择模块24_1,此处不再赘述。
在一种可能的实现方式中,索引存储模块26用于记录本次存储的索引信息。
举例来说,如果存储单元0_1~存储单元0_3中存在一个存储单元0为空闲状态,索引存储模块26可根据其记录的历史索引信息index1和选择模块24_1的索引信息index2,确定本次存储的索引信息。例如,可以将历史索引信息index1和选择模块24_1的索引信息index2进行相加处理,如果相加结果index1+index2大于8,则将index1+index2-8的值作为本次存储的索引信息;如果相加结果index1+index2小于或等于8,则将index1+index2的值作为本次存储的索引信息。
如果存储单元0_1~存储单元0_3中存在两个存储单元0为空闲状态,索引存储模块26可根据其记录的历史索引信息index1和选择模块24_2的索引信息index3,确定本次存储的索引信息。例如,可以将历史索引信息index1和选择模块24_2的索引信息index3进行相加处理,如果相加结果index1+index3大于8,则将index1+index3-8的值作为本次存储的索引信息;如果相加结果index1+index3小于或等于8,则将index1+index3的值作为本次存储的索引信息。
如果存储单元0_1~存储单元0_3全部为空闲状态,索引存储模块26可根据其记录的历史索引信息index1和选择模块24_3的索引信息index4,确定本次存储的索引信息。例如,可以将历史索引信息index1和选择模块24_3的索引信息index4进行相加处理,如果相加结果index1+index4大于8,则将index1+index4-8的值作为本次存储的索引信息;如果相加结果index1+index4小于或等于8,则将index1+index4的值作为本次存储的索引信息。
在一种可能的实现方式中,第一选择器2可根据选择模块24_1的索引信息index2、选择模块24_2的索引信息index3、选择模块24_3的索引信息index4中的至少一者,以及索引存储模块26记录的历史索引信息index1,确定选出的Q个请求信息。
示例性地,如果存储单元0_1~存储单元0_3中存在一个存储单元0为空闲状态,可根据选择模块24_1的索引信息index2,以及索引存储模块26记录的历史索引信息index1,确定选出的1个(Q=1)请求信息。
其中,如果index1+index2的相加结果大于8,则令i=index1+index2-8;如果index1+index2的相加结果小于或等于8,则令i=index1+index2;第一选择器2本次选出的1个请求信息为来自处理单元1_i的请求信息。
示例性地,如果存储单元0_1~存储单元0_3中存在两个存储单元0为空闲状态,可根据选择模块24_1的索引信息index2、选择模块24_2的索引信息index3,以及索引存储模块26记录的历史索引信息index1,确定选出的2个(Q=2)请求信息。
其中,可根据选择模块24_1的索引信息index2和索引存储模块26记录的历史索引信息index1确定一个请求信息,根据选择模块24_2的索引信息index3和索引存储模块26记录的历史索引信息index1确定另一个请求信息。如果index1+index2的相加结果大于8,则令i=index1+index2-8;如果index1+index2的相加结果小于或等于8,则令i=index1+index2。如果index1+index3的相加结果大于8,则令j=index1+index3-8;如果index1+index3的相加结果小于或等于8,则令j=index1+index3。第一选择器2本次选出的两个请求信息为来自处理单元1_i的请求信息和来自处理单元1_j的请求信息。
示例性地,如果存储单元0_1~存储单元0_3全部为空闲状态,可根据选择模块24_1的索引信息index2、选择模块24_2的索引信息index3、选择模块24_3的索引信息index4,以及索引存储模块26记录的历史索引信息index1,确定选出的3个(Q=3)请求信息。
其中,可根据选择模块24_1的索引信息index2和索引存储模块26记录的历史索引信息index1确定一个请求信息,根据选择模块24_2的索引信息index3和索引存储模块26记录的历史索引信息index1确定一个请求信息,根据选择模块24_3的索引信息index4和索引存储模块26记录的历史索引信息index1确定一个请求信息。如果index1+index2的相加结果大于8,则令i=index1+index2-8;如果index1+index2的相加结果小于或等于8,则令i=index1+index2。如果index1+index3的相加结果大于8,则令j=index1+index3-8;如果index1+index3的相加结果小于或等于8,则令j=index1+index3。如果index1+index4的相加结果大于8,则令k=index1+index4-8;如果index1+index4的相加结果小于或等于8,则令k=index1+index4。第一选择器2本次选出的3个请求信息为来自处理单元1_i的请求信息、来自处理单元1_j的请求信息、来自处理单元1_k的请求信息。
下面以一个具体示例对如图4所示的第一选择器2进行说明,假设判断模块22根据收到的多个请求信息确定出的输入序列10010011,存储单元0_1~存储单元0_3均处于空闲状态,判断模块22判断通过,将从索引存储模块26读取的历史索引信息index1=3以及输入序列10010011发送至移位模块23。
移位模块23会先将输入序列10010011序列进行截位拼接操作,根据历史索引信息index1=3,将最右侧3比特序列011取出,拼接在序列10010最左侧,拼接后序列为01110010,将拼接后序列01110010确定为移位序列,并送至选择模块24_1进行下一步处理。
选择模块24_1对移位序列01110010进行寻1操作后,选出最右侧的第一个1,并且输出1所在的索引信息index2为2。
处理模块25_1获取到来自选择模块24_1的索引信息index2=2,以及移位序列01110010,会将位置2的1更改为0,得到更改序列01110000,将处理后的更改序列01110000按位或,结果为1,并且由于存储单元0_1~存储单元0_3均处于空闲状态,可以将更改序列01110000发送选择模块24_2模块进行处理。
选择模块24_2对收到的更改序列01110000进行寻1操作,选出最右侧的第一个1,并且输出1所在的索引信息index3为5。并且将更改序列01110000进一步发送给处理模块25_2模块。
处理模块25_2收到来自选择模块24_2的索引信息index3=5以及更改序列01110000,会将更改序列01110000中index3=5位置1更改为0,处理后的更改序列为01100000。将处理后的更改序列01100000按位或后,结果为1,表示还有处于空闲状态的存储单元0可以被占用,此时将处理后的更改序列01100000发送给选择模块24_3。
选择模块24_3对收到的更改序列01100000进行寻1操作后,选出最右侧的第一个1,并且输出1所在的索引信息index4为6。此时因为存储单元0_1~存储单元0_3均处于空闲状态,则将索引信息index4与历史索引信息index1结果相加,如相加结果大于8,则将相加结果减8,否则不变。本例中选择模块24_3输出索引信息index4结果为6,并且历史索引信息index1为3,相加结果为9,将相加结果做减8操作并进行存储,本次存储结果为1。
如图4所示,在存储单元0_1~存储单元0_3均处于空闲状态的情况下,考虑到索引存储模块26记录的历史索引信息index1=3,选择模块24_1选出的索引标识index2=2,则将2+3=5作为标识信息写入存储单元0_1对应的调度队列3_1中,表示本次将来自处理单元1_5的请求信息发送至存储单元0_1中;选择模块24_2选出的索引标识index3=5,则将5+3=8作为标识信息写入存储单元0_2对应的调度队列3_2中,表示将来自处理单元1_8的请求信息发送至存储单元0_2中;选择模块24_3选出的索引标识index4=6,则将6+3 -8=1作为标识信息写入存储单元0_3对应的调度队列3_3中,表示将来自处理单元1_1的请求信息写入存储单元0_3中。应当理解,本公开仅以图4为例,可以将选出的请求信息随机发送至各处于空闲状态的存储单元0,将用于指示处理单元1的标识信息写入随机选中的存储单元0对应的调度队列3,本公开对此不作限制。
对比相关技术中选择器实现多选一的轮询调度(round robin),本公开实施例的第一选择器2可实现多选多,提升了系统性能,将原有的延迟降低为1/M(M表示第一选择器2内选择模块24的数量),进一步,设置第一选择器2还可以自适应选择当前可以接收请求信息的存储单元0发送对应的请求信息,减少等待存储单元0的时间,从而提升性能整体性能。
图5示出根据本公开实施例的另一种存储器访问电路的示意图,如图5所示的存储访问电路用于解决多个不同的处理单元1访问多个不同的调度模块中的存储单元0。例如,部署在调度模块1中的存储单元0_1、部署在调度模块2中的存储单元0_2,以此类推,部署在调度模块M中的存储单元0_M。多个处理单元1分别为处理单元1_1~处理单元1_N。
所述存储器访问电路还包括至少一个第一缓冲器5、至少一个第二缓冲器6,所述第一选择器2的输出端分别通过至少一个第一缓冲器5连接对应的存储单元0的输入端,每个存储单元0的输出端通过至少一个第二缓冲器6连接所述第二选择器4的输入端。
示例性地,如图5所示,第一选择器2的输出端可通过一连多的方式,分别通过两个第一缓冲器5连接存储单元0_1的输入端~存储单元0_M的输入端。
在存储器访问电路中设置第一缓冲器5,增强了第一选择器2向存储单元0进行数据传输的驱动力,减少了在布线(floorplan)过程中因走线过长,导致信号驱动能力不足的概率。例如,在实际的应用中,在第一选择器2与存储单元0的连线比较长的场景下,如果不设置第一缓冲器5,信号会随着芯片(或电路板)上的走线而衰减,导致系统频率不能提高,性能下降的情况。通过在第一选择器2与存储单元0之间设置第一缓冲器5,可以为信号传输提供更强的驱动力,使第一选择器2发出的请求信息可以正确传输至存储单元0。
而且,在存储器访问电路中设置第一缓冲器5,还可以通过第一缓冲器5存储数据,将一次的访问请求(例如由第一选择器2选中的请求信息)进行缓存,其中,第一缓冲器5与第一选择器2之间可采用握手(Handshake)的方式进行数据交互。
示例性地,如图5所示,存储单元0_1通过两个第二缓冲器6连接对应的第二选择器4_1,存储单元0_2通过两个第二缓冲器6连接对应的第二选择器4_2,以此类推,存储单元0_M通过两个第二缓冲器6连接对应的第二选择器4_M。
在存储器访问电路中设置第二缓冲器6,增强了存储单元0向对应的第二选择器4进行数据传输的驱动力,减少了在布线(floorplan)过程中因走线过长,导致信号驱动能力不足的概率。例如,在实际的应用中,在存储单元0与第二选择器4的连线比较长的场景下,如果不设置第二缓冲器6,信号会随着芯片(或电路板)上的走线而衰减,导致系统频率不能提高,性能下降的情况。通过在存储单元0与第二选择器4之间设置第二缓冲器6,可以为信号传输提供更强的驱动力,使存储单元0发出的返回数据可以正确传输至对应的第二选择器4。
而且,在存储器访问电路中设置第二缓冲器6,还可以通过第二缓冲器6存储数据,将一次的返回数据(例如存储单元0响应请求信息所发送的返回数据)进行缓存,其中,第二缓冲器6与第二选择器4之间可采用握手(Handshake)的方式进行数据交互。
应当理解,图5中其他元件的连接方式及作用可参考上文,此处不再赘述。
综上所述,对比相关技术中选择器实现多选一的轮询调度(round robin),本公开实施例的第一选择器2可实现多选多,可以一次选出多个来自不同处理单元1的多个请求信息至多个存储单元0,大幅提升了系统性能。
并且,对比相关技术中需要请求信息携带调度标识(调度标识用于指示不同的存储单元0)的存储器访问方式,会存在某一个存储单元0处于占用状态,导致多个处理单元1同时访问一个已被占用的存储单元0而产生大量的等待时间,系统延时会比较长,降低了的存储器的访问效率。本公开的实施例可以在处理器芯片内设置多个相同的存储单元0,各处理单元1生成的请求信息不用携带调度标识,第一选择器2收到来自不同处理单元1的多个请求信息,可通过自适应的方式将选出的多个请求信息优先发送至空闲状态的存储单元0,减少了多个处理单元1对单个存储单元0的集中访问,降低了系统延时,提高了系统性能。
图6示出根据本公开实施例的存储器访问方法的流程图,所述存储器访问方法应用于存储器访问电路,例如图2所示的多个处理单元1访问多个存储单元0部分,所述存储器访问电路用于访问多个存储单元0,所述多个存储单元0存储的数据相同,所述存储器访问电路包括:多个处理单元1,第一选择器2,与每个存储单元0对应的调度队列3,其中,所述第一选择器2的输入端连接多个处理单元1的输出端,所述第一选择器2的输出端分别连接多个存储单元0的输入端以及每个存储单元0对应的调度队列3的输入端。
如图6所示,所述存储器访问方法包括:
在步骤S11中,每个处理单元1将生成的请求信息发送至所述第一选择器2。
在步骤S12中,所述第一选择器2对来自多个处理单元1的P个请求信息进行P选Q处理,将选出的Q个请求信息发送至多个存储单元0,其中,P小于或等于所述处理单元1的数量,Q小于或等于所述存储单元0的数量。
在步骤S13中,响应于每个存储单元收到来自处理单元1的请求信息的情况下,将所述处理单元1的标识信息写入每个存储单元0对应的调度队列3。
图7示出根据本公开实施例的存储器访问方法的流程图,所述存储器访问方法应用于如图2所示的多个存储单元0响应处理单元1的访问请求回传返回数据的部分,所述存储器访问电路还包括与每个存储单元0对应的第二选择器4,其中,任一第二选择器4的输入端连接对应的存储单元0的输出端、对应的所述调度队列3的输出端,任一第二选择器4的输出端分别连接每个处理单元1的输入端。
如图7所示,所述存储器访问方法包括:
在步骤S14中,所述存储单元0响应来自所述处理单元1的请求信息生成返回数据。
在步骤S15中,所述第二选择器4从所述调度队列3读取的标识信息,将所述存储单元0的返回数据传输至所述标识信息指示的处理单元1。
在一种可能的实现方式中,所述多个存储单元0存储的数据相同,Q小于或等于所述存储单元的数量。
在一种可能的实现方式中,所述第一选择器至少包括选择模块组和处理模块组,所述第一选择器2对来自多个处理单元1的P个请求信息进行P选Q处理,包括:所述处理模块组根据处于空闲状态的存储单元0的数量、处理单元1的请求信息的数量P,确定所述第一选择器2选出的请求信息的数量Q;所述选择模块组对来自多个处理单元1的P个请求信息进行P选Q处理,选出Q个请求信息。
在一种可能的实现方式中,所述选择模块组包括至少两个选择模块,所述处理模块组包括至少一个处理模块25,所述方法还包括:每个选择模块24在接收到的序列中按照预设方向检索标识符,根据首个标识符所在的位置,确定所述选择模块24的索引信息;在所述选择模块24之后连接有处理模块25的情况下,所述选择模块24将接收到的序列与所述选择模块25的索引信息发送至所述选择模块24连接的处理模块25;每个处理模块25在接收到的序列中,清除所述选择模块24的索引信息指示位置处的标识符,得到更改序列;在所述更改序列存在至少一个标识符,且存在至少K个存储单元0为空闲状态的情况下,将所述更改序列发送至下一选择模块24,其中K为下一选择模块24及其之前连接的选择模块24的数量。
在一种可能的实现方式中,所述第一选择器2还包括索引存储模块26,所述方法还包括:在所述选择模块24之后连接索引模块26的情况下,所述处理模块25将所述选择模块24的索引信息发送至所述索引存储模块26;或者,所述处理模块25在所述更改序列对标识符的检索结果为0,或存在至少K个存储单元0为占用状态的情况下,将所述选择模24块的索引信息发送至所述索引存储模块26;所述索引存储模块26根据选择模块24的索引信息,更新所述索引存储模块26记录的历史索引信息。
在一种可能的实现方式中,所述第一选择器2还包括:判断模块22、移位模块23;所述方法还包括:所述判断模块22根据来自多个处理单元1的P个请求信息确定输入序列;所述判断模块22在所述输入序列存在至少一个标识符,且存在至少一个存储单元0为空闲状态的情况下,将所述输入序列和所述索引存储模块26记录的历史索引信息发送至所述移位模块23;所述移位模块23根据所述历史索引信息,对所述输入序列进行移位操作,得到移位序列;所述移位模块23将所述移位序列发送至所述至少两个选择模块24中,与所述移位模块23连接的选择模块24。
在一种可能的实现方式中,所述方法还包括:根据各选择模块24的索引信息中的至少一者,以及所述索引存储模块26记录的历史索引信息,确定选出的Q个请求信息。
在一种可能的实现方式中,所述存储器访问电路还包括至少一个第一缓冲器5、至少一个第二缓冲器6,所述第一选择器2的输出端分别通过至少一个第一缓冲器5连接对应的存储单元0的输入端,每个存储单元0的输出端通过至少一个第二缓冲器6连接所述第二选择器4的输入端。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了封装了存储器访问电路的集成电路、电子设备、计算机程序产品,上述均可用来实现本公开提供的任一种存储器访问方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
本公开实施例还提出一种集成电路,所述集成电路包括如上所述的存储器访问电路。
本公开实施例还提出一种电子设备,所述电子设备包括如上所述的存储器访问电路。电子设备可以被提供为终端、服务器或其它形态的设备。例如,电子设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等,本公开对此不作限制。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (15)
1.一种存储器访问电路,其特征在于,所述存储器访问电路用于访问多个存储单元,所述存储器访问电路包括:多个处理单元,第一选择器;
所述第一选择器的输入端连接多个处理单元的输出端,所述第一选择器的输出端分别连接多个存储单元的输入端,所述第一选择器用于对来自多个处理单元的P个请求信息进行P选Q处理,将选出的Q个请求信息发送至多个存储单元,其中,Q为大于或等于2的整数,P为大于或等于Q的整数。
2.根据权利要求1所述的存储器访问电路,其特征在于,所述多个存储单元存储的数据相同,Q小于或等于所述存储单元的数量。
3.根据权利要求1或2所述的存储器访问电路,其特征在于,所述存储器访问电路还包括与每个存储单元对应的调度队列,所述第一选择器的输出端还分别连接每个存储单元对应的调度队列的输入端,每个调度队列用于在对应的存储单元收到来自处理单元的请求信息的情况下,将所述处理单元的标识信息写入调度队列。
4.根据权利要求3所述的存储器访问电路,其特征在于,所述存储器访问电路还包括与每个存储单元对应的第二选择器,任一第二选择器的输入端连接对应的存储单元的输出端、对应的所述调度队列的输出端,任一第二选择器的输出端分别连接每个处理单元的输入端,用于根据从所述调度队列读取的标识信息,将所述存储单元的返回数据传输至所述标识信息指示的处理单元。
5.根据权利要求1所述的存储器访问电路,其特征在于,所述第一选择器至少包括选择模块组和处理模块组,
所述处理模块组用于根据处于空闲状态的存储单元的数量、处理单元的请求信息的数量P,确定所述第一选择器选出的请求信息的数量Q;
所述选择模块组用于对来自多个处理单元的P个请求信息进行P选Q处理,选出Q个请求信息。
6.根据权利要求5所述的存储器访问电路,其特征在于,所述选择模块组包括至少两个选择模块,所述处理模块组包括至少一个处理模块,所述处理模块连接在相邻选择模块之间,
每个选择模块用于:在接收到的序列中按照预设方向检索标识符,根据首个标识符所在的位置,确定所述选择模块的索引信息;在所述选择模块之后连接有处理模块的情况下,将接收到的序列与所述选择模块的索引信息发送至所述选择模块连接的处理模块;
每个处理模块用于:在接收到的序列中,清除所述选择模块的索引信息指示位置处的标识符,得到更改序列;在所述更改序列存在至少一个标识符,且存在至少K个存储单元为空闲状态的情况下,将所述更改序列发送至下一选择模块,其中K为下一选择模块及其之前连接的选择模块的数量。
7.根据权利要求6所述的存储器访问电路,其特征在于,所述第一选择器还包括索引存储模块,
所述处理模块还用于:在所述选择模块之后连接索引模块的情况下,将所述选择模块的索引信息发送至所述索引存储模块;或者,在所述更改序列对标识符的检索结果为0,或存在至少K个存储单元为占用状态的情况下,将所述选择模块的索引信息发送至所述索引存储模块;
所述索引存储模块用于:根据选择模块的索引信息,更新所述索引存储模块记录的历史索引信息。
8.根据权利要求7所述的存储器访问电路,其特征在于,所述第一选择器还包括:判断模块、移位模块;
所述判断模块用于:根据来自多个处理单元的P个请求信息确定输入序列;在所述输入序列存在至少一个标识符,且存在至少一个存储单元为空闲状态的情况下,将所述输入序列和所述索引存储模块记录的历史索引信息发送至所述移位模块;
所述移位模块用于:根据所述历史索引信息,对所述输入序列进行移位操作,得到移位序列;将所述移位序列发送至所述至少两个选择模块中,与所述移位模块连接的选择模块。
9.根据权利要求8所述的存储器访问电路,其特征在于,所述第一选择器用于:根据各选择模块的索引信息中的至少一者,以及所述索引存储模块记录的历史索引信息,确定选出的Q个请求信息。
10.根据权利要求4所述的存储器访问电路,其特征在于,所述存储器访问电路还包括至少一个第一缓冲器、至少一个第二缓冲器,所述第一选择器的输出端分别通过至少一个第一缓冲器连接对应的存储单元的输入端,每个存储单元的输出端通过至少一个第二缓冲器连接所述第二选择器的输入端。
11.一种存储器访问方法,其特征在于,所述存储器访问方法应用于存储器访问电路,所述存储器访问电路用于访问多个存储单元,所述存储器访问电路包括:多个处理单元,第一选择器,与每个存储单元对应的调度队列,其中,所述第一选择器的输入端连接多个处理单元的输出端,所述第一选择器的输出端分别连接多个存储单元的输入端以及每个存储单元对应的调度队列的输入端;
所述存储器访问方法包括:
每个处理单元将生成的请求信息发送至所述第一选择器;
所述第一选择器对来自多个处理单元的P个请求信息进行P选Q处理,将选出的Q个请求信息发送至多个存储单元,其中,P小于或等于所述处理单元的数量,Q小于或等于所述存储单元的数量;
响应于每个存储单元收到来自处理单元的请求信息的情况下,将所述处理单元的标识信息写入每个存储单元对应的调度队列。
12.根据权利要求11所述的存储器访问方法,其特征在于,所述存储器访问电路还包括与每个存储单元对应的第二选择器,其中,任一第二选择器的输入端连接对应的存储单元的输出端、对应的所述调度队列的输出端,任一第二选择器的输出端分别连接每个处理单元的输入端;
所述存储器访问方法还包括:
所述存储单元响应来自所述处理单元的请求信息生成返回数据;
所述第二选择器从所述调度队列读取的标识信息,将所述存储单元的返回数据传输至所述标识信息指示的处理单元。
13.根据权利要求12所述的存储器访问方法,其特征在于,所述第一选择器至少包括选择模块组和处理模块组,所述第一选择器对来自多个处理单元的P个请求信息进行P选Q处理,包括:
所述处理模块组根据处于空闲状态的存储单元的数量、处理单元的请求信息的数量P,确定所述第一选择器选出的请求信息的数量Q;
所述选择模块组对来自多个处理单元的P个请求信息进行P选Q处理,选出Q个请求信息。
14.一种集成电路,其特征在于,所述集成电路包括如权利要求1至10中任一项所述的存储器访问电路。
15.一种电子设备,其特征在于,所述电子设备包括如权利要求1至10中任一项所述的存储器访问电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310808936.6A CN116820344B (zh) | 2023-07-03 | 2023-07-03 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310808936.6A CN116820344B (zh) | 2023-07-03 | 2023-07-03 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116820344A true CN116820344A (zh) | 2023-09-29 |
CN116820344B CN116820344B (zh) | 2024-04-26 |
Family
ID=88114308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310808936.6A Active CN116820344B (zh) | 2023-07-03 | 2023-07-03 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116820344B (zh) |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2286439A1 (fr) * | 1974-09-25 | 1976-04-23 | Data General Corp | Appareil de traitement de donnees a recouvrement et imbrication des operations de transfert de donnees |
JPH06195313A (ja) * | 1992-12-25 | 1994-07-15 | Hitachi Ltd | コンピュータシステムおよびそれに適した集積回路並びに要求選択回路 |
WO1999034294A1 (en) * | 1997-12-24 | 1999-07-08 | Creative Technology Ltd. | Optimal multi-channel memory controller system |
JP2001175530A (ja) * | 1999-12-22 | 2001-06-29 | Nec Ic Microcomput Syst Ltd | メモリアクセス調停装置およびメモリアクセス調停方法 |
US20020194435A1 (en) * | 1998-04-27 | 2002-12-19 | Hitachi, Ltd. | Multi-processor type storage control apparatus for performing access control through selector |
CN1484169A (zh) * | 2002-06-19 | 2004-03-24 | 阿尔卡塔尔加拿大公司 | 有共享程序存储器的多处理器计算设备 |
JP2007323113A (ja) * | 2006-05-30 | 2007-12-13 | Oki Electric Ind Co Ltd | メモリ制御回路 |
CN102667733A (zh) * | 2009-10-30 | 2012-09-12 | 株式会社Ntt数据 | 数据访问装置、数据访问方法以及数据访问程序 |
CN103325420A (zh) * | 2006-10-18 | 2013-09-25 | 佳能株式会社 | 存储器控制设备、存储器控制方法和存储器系统 |
JP2014241107A (ja) * | 2013-06-12 | 2014-12-25 | 富士通株式会社 | 半導体装置及び半導体装置の制御方法 |
CN105144128A (zh) * | 2013-04-23 | 2015-12-09 | Arm有限公司 | 存储器访问控制 |
US20190294355A1 (en) * | 2018-03-20 | 2019-09-26 | Kabushiki Kaisha Toshiba | Information processing device, information processing method, estimation device, estimation method, and computer program product |
CN112667354A (zh) * | 2020-12-30 | 2021-04-16 | 上海壁仞智能科技有限公司 | 计算机可读取存储介质、虚拟化寄存器装置及访问该装置的方法 |
CN114647363A (zh) * | 2020-12-17 | 2022-06-21 | 伊姆西Ip控股有限责任公司 | 用于数据处理的方法、电子设备和计算机程序产品 |
CN115033184A (zh) * | 2022-06-30 | 2022-09-09 | 上海阵量智能科技有限公司 | 访存处理装置、方法、处理器、芯片、板卡及电子设备 |
CN115113828A (zh) * | 2022-08-26 | 2022-09-27 | 瀚博半导体(上海)有限公司 | 存储器管理系统、方法、人工智能芯片、电子设备和介质 |
CN115357195A (zh) * | 2022-08-31 | 2022-11-18 | 无锡江南计算技术研究所 | 一种支持分区并发访问的软硬件协同存储器组织方法及装置 |
CN115686341A (zh) * | 2021-07-22 | 2023-02-03 | 华为技术有限公司 | 一种处理访问请求的方法、装置、存储设备及存储介质 |
CN115686746A (zh) * | 2022-10-25 | 2023-02-03 | 阿里巴巴(中国)有限公司 | 访问方法、任务处理方法、计算设备及计算机存储介质 |
CN115934168A (zh) * | 2022-12-26 | 2023-04-07 | 海光信息技术股份有限公司 | 处理器和内存访问方法 |
CN116204456A (zh) * | 2021-11-30 | 2023-06-02 | 华为技术有限公司 | 数据访问方法及计算设备 |
-
2023
- 2023-07-03 CN CN202310808936.6A patent/CN116820344B/zh active Active
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2286439A1 (fr) * | 1974-09-25 | 1976-04-23 | Data General Corp | Appareil de traitement de donnees a recouvrement et imbrication des operations de transfert de donnees |
JPH06195313A (ja) * | 1992-12-25 | 1994-07-15 | Hitachi Ltd | コンピュータシステムおよびそれに適した集積回路並びに要求選択回路 |
WO1999034294A1 (en) * | 1997-12-24 | 1999-07-08 | Creative Technology Ltd. | Optimal multi-channel memory controller system |
US20020194435A1 (en) * | 1998-04-27 | 2002-12-19 | Hitachi, Ltd. | Multi-processor type storage control apparatus for performing access control through selector |
JP2001175530A (ja) * | 1999-12-22 | 2001-06-29 | Nec Ic Microcomput Syst Ltd | メモリアクセス調停装置およびメモリアクセス調停方法 |
CN1484169A (zh) * | 2002-06-19 | 2004-03-24 | 阿尔卡塔尔加拿大公司 | 有共享程序存储器的多处理器计算设备 |
JP2007323113A (ja) * | 2006-05-30 | 2007-12-13 | Oki Electric Ind Co Ltd | メモリ制御回路 |
CN103325420A (zh) * | 2006-10-18 | 2013-09-25 | 佳能株式会社 | 存储器控制设备、存储器控制方法和存储器系统 |
CN102667733A (zh) * | 2009-10-30 | 2012-09-12 | 株式会社Ntt数据 | 数据访问装置、数据访问方法以及数据访问程序 |
CN105144128A (zh) * | 2013-04-23 | 2015-12-09 | Arm有限公司 | 存储器访问控制 |
JP2014241107A (ja) * | 2013-06-12 | 2014-12-25 | 富士通株式会社 | 半導体装置及び半導体装置の制御方法 |
US20190294355A1 (en) * | 2018-03-20 | 2019-09-26 | Kabushiki Kaisha Toshiba | Information processing device, information processing method, estimation device, estimation method, and computer program product |
CN114647363A (zh) * | 2020-12-17 | 2022-06-21 | 伊姆西Ip控股有限责任公司 | 用于数据处理的方法、电子设备和计算机程序产品 |
CN112667354A (zh) * | 2020-12-30 | 2021-04-16 | 上海壁仞智能科技有限公司 | 计算机可读取存储介质、虚拟化寄存器装置及访问该装置的方法 |
CN115686341A (zh) * | 2021-07-22 | 2023-02-03 | 华为技术有限公司 | 一种处理访问请求的方法、装置、存储设备及存储介质 |
CN116204456A (zh) * | 2021-11-30 | 2023-06-02 | 华为技术有限公司 | 数据访问方法及计算设备 |
CN115033184A (zh) * | 2022-06-30 | 2022-09-09 | 上海阵量智能科技有限公司 | 访存处理装置、方法、处理器、芯片、板卡及电子设备 |
CN115113828A (zh) * | 2022-08-26 | 2022-09-27 | 瀚博半导体(上海)有限公司 | 存储器管理系统、方法、人工智能芯片、电子设备和介质 |
CN115357195A (zh) * | 2022-08-31 | 2022-11-18 | 无锡江南计算技术研究所 | 一种支持分区并发访问的软硬件协同存储器组织方法及装置 |
CN115686746A (zh) * | 2022-10-25 | 2023-02-03 | 阿里巴巴(中国)有限公司 | 访问方法、任务处理方法、计算设备及计算机存储介质 |
CN115934168A (zh) * | 2022-12-26 | 2023-04-07 | 海光信息技术股份有限公司 | 处理器和内存访问方法 |
Non-Patent Citations (1)
Title |
---|
张宇弘, 王界兵, 严晓浪, 汪乐宇: "标志预访问和组选择历史相结合的低功耗指令cache", 电子学报, no. 08 * |
Also Published As
Publication number | Publication date |
---|---|
CN116820344B (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10922134B2 (en) | Method, device and computer program product for processing data | |
CN116578245B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116521096B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116431099B (zh) | 数据的处理方法、多输入输出队列电路及存储介质 | |
CN116661703B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN115495212A (zh) | 任务队列处理方法、装置、设备、存储介质及程序产品 | |
CN111566614B (zh) | 位宽匹配电路、数据写入装置、数据读出装置和电子设备 | |
CN116737083B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116820344B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN118034924A (zh) | 基于众核系统的数据处理方法、装置、电子设备和介质 | |
CN116483584B (zh) | Gpu的任务处理方法、装置、电子设备和存储介质 | |
CN117130663B (zh) | 一种指令读取方法及l2指令缓存、电子设备和存储介质 | |
CN116594570B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
JP4391464B2 (ja) | 2分木構造の情報を記憶する装置及びヒープ構造の情報を記憶する装置 | |
CN113553195A (zh) | 一种内存池资源共用的方法、装置、设备及可读介质 | |
CN116360708B (zh) | 数据写入方法及装置、电子设备和存储介质 | |
CN117675720B (zh) | 消息报文传输方法、装置、电子设备和存储介质 | |
CN116719479B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116009792B (zh) | 一种图像处理中的数据读取、写入装置及方法、电子设备 | |
CN113691434B (zh) | 数据传输系统、方法、电子设备及存储介质 | |
CN116521097B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN117454823B (zh) | 一种芯片验证多端口激励控制方法、代理器、设备及介质 | |
CN114443640A (zh) | 数据出块方法、装置、电子设备及计算机可读存储介质 | |
CN117453127A (zh) | 一种id资源存储系统、分配方法、回收方法及装置 | |
CN116703589A (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 |