CN116594570B - 存储器访问电路及存储器访问方法、集成电路和电子设备 - Google Patents
存储器访问电路及存储器访问方法、集成电路和电子设备 Download PDFInfo
- Publication number
- CN116594570B CN116594570B CN202310807723.1A CN202310807723A CN116594570B CN 116594570 B CN116594570 B CN 116594570B CN 202310807723 A CN202310807723 A CN 202310807723A CN 116594570 B CN116594570 B CN 116594570B
- Authority
- CN
- China
- Prior art keywords
- processing unit
- data
- queue
- scheduling
- module
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012545 processing Methods 0.000 claims abstract description 672
- 239000000872 buffer Substances 0.000 claims description 306
- 230000004044 response Effects 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 16
- 238000004590 computer program Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 241001522296 Erithacus rubecula Species 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 230000036961 partial effect Effects 0.000 description 4
- 230000002829 reductive effect Effects 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
- 238000004891 communication Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 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
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004321 preservation 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本公开涉及一种存储器访问电路及存储器访问方法、集成电路和电子设备,涉及电子技术领域,该存储器访问电路用于访问多个存储单元,包括配置模块、多个处理单元、与每个处理单元对应的状态选择模块,该状态选择模块用于根据配置信号选择配置模块用于以下方式中的一种:配置模块将来自处理单元的请求信息发送至存储单元,并记录处理单元访问存储单元的访问顺序,并根据记录的访问顺序,将来自存储单元的返回数据传输至处理单元;或者,配置模块将来自处理单元的请求信息发送至存储单元,并对来自存储单元的返回数据进行仲裁,按照仲裁顺序将返回数据传输至处理单元。本公开实施例可灵活配置存储器访问电路的工作模式,具有更强的适配性。
Description
技术领域
本公开涉及电子技术领域,尤其涉及一种存储器访问电路及存储器访问方法、集成电路和电子设备。
背景技术
随着集成电路产业的快速发展,各类处理器芯片在各行各业中的应用越来越广泛,可以应用到网络通信、手机、机顶盒、液晶电视、医疗设备、安防设备、工控设备、智能电表、智能穿戴、物联网、汽车电子等场景。
在各类处理器芯片中,处理单元会访问存储单元以实现各种目标任务,其中,处理器芯片内的存储器访问电路可用于管理处理单元与存储单元之间的通信,存储器访问电路会直接影响整个处理器芯片的运行效率和稳定性。
发明内容
本公开提出了一种存储器访问技术方案。
根据本公开的一方面,提供了一种存储器访问电路,所述存储器访问电路用于访问多个存储单元,所述存储器访问电路包括:配置模块、多个处理单元、与每个处理单元对应的状态选择模块;所述处理单元用于生成访问存储单元的请求信息,所述存储单元用于响应所述请求信息生成返回数据,所述状态选择模块用于根据配置信号选择所述配置模块用于以下方式中的一种:所述配置模块将来自所述处理单元的请求信息发送至存储单元,并记录所述处理单元访问存储单元的访问顺序;所述配置模块根据记录的所述访问顺序,将来自存储单元的返回数据传输至处理单元;或者,所述配置模块将来自所述处理单元的请求信息发送至存储单元;对来自存储单元的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
在一种可能的实现方式中,所述存储器访问电路用于访问多个调度模块,每个调度模块包括多个存储单元,所述处理单元用于生成访问调度模块中一个或多个存储单元的请求信息,所述请求信息包括用于指示调度模块中一个或多个存储单元的第一标识信息。
在一种可能的实现方式中,所述状态选择模块包括第一状态选择模块、所述配置模块包括与每个处理单元对应的第一队列;所述第一状态选择模块用于根据所述配置信号选择是否指示所述第一队列按照所述处理单元的访问顺序存储所述第一标识信息,所述第一队列存在的多个第一标识信息用于记录所述第一队列对应的所述处理单元访问存储单元的访问顺序。
在一种可能的实现方式中,所述状态选择模块包括第二状态选择模块,所述配置模块包括与每个处理单元对应的处理单元选择器、多个数据仲裁器、与每个存储单元对应的多个数据缓存器,其中,任一处理单元的任一数据仲裁器对应多个调度模块中的一个不同的存储单元,同一存储单元对应的多个数据缓存器分别对应不同的处理单元;所述多个数据缓存器用于存储所述存储单元返回给不同处理单元的返回数据,所述第二状态选择模块用于根据配置信号选择所述配置模块用于以下方式中的一种:所述处理单元选择器根据从所述第一队列读取的第一标识信息,将从所述第一标识信息指示的存储单元对应的数据缓存器中读取的返回数据传输至处理单元,或者,多个数据仲裁器分别对从数据缓存器中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
在一种可能的实现方式中,所述配置信号用于指示所述第一状态选择模块和所述第二状态选择模块,通过所述配置模块配置存储器访问电路的工作状态,在所述配置信号为高电平的情况下,所述第一状态选择模块指示所述第一队列按照所述处理单元的访问顺序存储所述第一标识信息,所述第二状态选择模块指示所述处理单元选择器根据从所述第一队列读取的第一标识信息,将从所述第一标识信息指示的存储单元对应的数据缓存器中读取的返回数据传输至处理单元;或者,在所述配置信号为低电平的情况下,所述第一状态选择模块指示所述第一队列停止工作,所述第二状态选择模块指示多个数据仲裁器分别对从数据缓存器中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
在一种可能的实现方式中,所述配置模块还包括:与每个处理单元对应的第一调度选择器,与每个调度模块对应的请求仲裁器、第二队列,与每个存储单元对应的第二调度选择器;所述第一调度选择器用于将从所述处理单元接收到的请求信息发送至所述第一标识信息指示的调度模块的请求仲裁器;所述请求仲裁器用于对来自多个处理单元的请求信息进行仲裁,按照请求信息的仲裁顺序向存储单元发送请求信息,以及按照请求信息的所述仲裁顺序将所述多个处理单元的第二标识信息写入第二队列,所述第二标识信息用于指示所述处理单元访问调度模块中一个或多个存储单元;所述第二调度选择器用于根据从所述第二队列读取的第二标识信息,将所述存储单元的返回数据传输至所述第二标识信息指示的数据缓存器。
在一种可能的实现方式中,任一第一状态选择模块的输入端分别连接对应的处理单元的输出端、所述配置信号,所述第一状态选择模块的输出端连接与所述处理单元对应的第一队列的输入端,所述处理单元的输出端还连接对应的第一调度选择器的输入端,所述第一调度选择器的输出端分别连接每个请求仲裁器的输入端;每个请求仲裁器的输出端连接对应的调度模块中每个存储单元的输入端、与所述调度模块对应的第二队列的输入端;任一第二调度选择器的输入端连接对应的存储单元的输出端、与所述存储单元所属的调度模块对应的所述第二队列的输出端,任一第二调度选择器的输出端分别连接多个数据缓存器的输入端;连接同一第二调度选择器的多个数据缓存器的输出端分别连接不同的处理单元选择器的输入端,每个处理单元选择器的输入端还连接第一队列的输出端,连接同一第二调度选择器的多个数据缓存器的输出端分别连接不同的处理单元对应的数据仲裁器的输入端;每个处理单元选择器的输出端、与每个处理单元对应的多个数据仲裁器的输出端、所述配置信号连接所述第二状态选择模块的输入端,所述第二状态选择模块的输出端连接对应的处理单元的输入端。
在一种可能的实现方式中,所述第一队列的位宽是根据所述调度模块的数量和每个调度模块中存储单元的数量确定的,所述第一队列存储第一标识信息的数量小于或等于所述第一队列的深度;所述第二队列的位宽是根据所述调度模块中存储单元的数量和处理单元的数量确定的,所述第二队列存储第二标识信息的数量小于或等于所述第二队列的深度;所述数据缓存器的数量是根据所述存储单元的数量和所述处理单元的数量确定的,所述数据缓存器存储返回数据的数量小于或等于所述数据缓存器的深度。
在一种可能的实现方式中,所述存储单元响应所述请求信息生成返回数据和用于指示调度模块的调度标识,所述多个数据缓存器用于存储所述存储单元返回给不同处理单元的返回数据和所述调度标识,所述第二调度选择器用于根据从所述第二队列读取的第二标识信息,将所述存储单元的返回数据和所述调度标识传输至所述第二标识信息指示的数据缓存器,在所述配置信号为低电平的情况下,所述第二状态选择模块指示多个数据仲裁器分别对从数据缓存器中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据、所述调度标识传输至处理单元。
在一种可能的实现方式中,在所述配置信号为高电平的情况下,所述第二状态选择模块生成保序标识,所述第二状态选择模块指示所述处理单元选择器根据从所述第一队列读取的第一标识信息,将从所述第一标识信息指示的存储单元对应的数据缓存器中读取的返回数据、所述保序标识传输至处理单元。
在一种可能的实现方式中,所述存储器访问电路还包括至少一个第一缓冲器、至少一个第二缓冲器,所述请求仲裁器的输出端分别通过至少一个第一缓冲器连接对应的存储单元的输入端,每个存储单元的输出端通过至少一个第二缓冲器连接所述第二调度选择器的输入端。
根据本公开的一方面,提供了一种存储器访问方法,所述存储器访问方法应用于存储器访问电路,所述存储器访问电路用于访问多个存储单元,所述存储器访问电路包括:配置模块、多个处理单元、与每个处理单元对应的状态选择模块;所述存储器访问方法包括:所述处理单元生成访问存储单元的请求信息;所述状态选择模块根据配置信号选择所述配置模块用于以下方式中的一种:所述配置模块将来自所述处理单元的请求信息发送至存储单元,并记录所述处理单元访问存储单元的访问顺序;或者,所述配置模块将来自所述处理单元的请求信息发送至存储单元。
在一种可能的实现方式中,所述存储器访问电路用于访问多个调度模块,每个调度模块包括多个存储单元,所述处理单元生成访问存储单元的请求信息,包括:所述处理单元生成访问调度模块中一个或多个存储单元的请求信息,所述请求信息包括用于指示调度模块中一个或多个存储单元的第一标识信息。
在一种可能的实现方式中,所述状态选择模块包括第一状态选择模块、所述配置模块包括与每个处理单元对应的第一队列;所述状态选择模块根据配置信号选择所述配置模块用于以下方式中的一种,包括:所述第一状态选择模块根据所述配置信号选择是否指示所述第一队列按照所述处理单元的访问顺序存储所述第一标识信息,所述第一队列存在的多个第一标识信息用于记录所述第一队列对应的所述处理单元访问存储单元的访问顺序。
在一种可能的实现方式中,所述配置模块还包括:与每个处理单元对应的第一调度选择器,与每个调度模块对应的请求仲裁器、第二队列;所述配置模块将来自所述处理单元的请求信息发送至存储单元,包括:所述第一调度选择器将从所述处理单元接收到的请求信息发送至所述第一标识信息指示的调度模块的请求仲裁器;所述请求仲裁器对来自多个处理单元的请求信息进行仲裁,按照请求信息的仲裁顺序向存储单元发送请求信息,以及按照请求信息的所述仲裁顺序将所述多个处理单元的第二标识信息写入第二队列,所述第二标识信息用于指示所述处理单元访问调度模块中一个或多个存储单元。
在一种可能的实现方式中,所述状态选择模块根据配置信号选择所述配置模块用于以下方式中的一种,包括:所述配置信号指示所述第一状态选择模块,通过所述配置模块配置存储器访问电路的工作状态;在所述配置信号为高电平的情况下,所述第一状态选择模块指示所述第一队列按照所述处理单元的访问顺序存储所述第一标识信息;或者,在所述配置信号为低电平的情况下,所述第一状态选择模块指示所述第一队列停止工作。
在一种可能的实现方式中,任一第一状态选择模块的输入端分别连接对应的处理单元的输出端、所述配置信号,所述第一状态选择模块的输出端连接与所述处理单元对应的第一队列的输入端,所述处理单元的输出端还连接对应的第一调度选择器的输入端,所述第一调度选择器的输出端分别连接每个请求仲裁器的输入端;每个请求仲裁器的输出端连接对应的调度模块中每个存储单元的输入端、与所述调度模块对应的第二队列的输入端。
在一种可能的实现方式中,所述第一队列的位宽是根据所述调度模块的数量和每个调度模块中存储单元的数量确定的,所述第一队列存储第一标识信息的数量小于或等于所述第一队列的深度;所述第二队列的位宽是根据所述调度模块中存储单元的数量和处理单元的数量确定的,所述第二队列存储第二标识信息的数量小于或等于所述第二队列的深度;所述数据缓存器的数量是根据所述存储单元的数量和所述处理单元的数量确定的,所述数据缓存器存储返回数据的数量小于或等于所述数据缓存器的深度。
根据本公开的一方面,提供了一种存储器访问方法,所述存储器访问方法应用于存储器访问电路,所述存储器访问电路用于访问多个存储单元,所述存储器访问电路包括:配置模块、多个处理单元、与每个处理单元对应的状态选择模块;所述存储器访问方法包括:所述存储单元响应来自处理单元的请求信息生成返回数据;所述状态选择模块根据配置信号选择所述配置模块用于以下方式中的一种:所述配置模块根据记录的访问顺序,将来自存储单元的返回数据传输至处理单元;或者,所述配置模块对来自存储单元的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
在一种可能的实现方式中,所述状态选择模块包括第二状态选择模块,所述配置模块包括与每个处理单元对应的第一队列、处理单元选择器、多个数据仲裁器,与每个存储单元对应的多个数据缓存器,其中,任一处理单元的任一数据仲裁器对应多个调度模块中的一个不同的存储单元,同一存储单元对应的多个数据缓存器分别对应不同的处理单元;所述配置模块根据记录的访问顺序,将来自存储单元的返回数据传输至处理单元,包括:所述多个数据缓存器存储所述存储单元返回给不同处理单元的返回数据;所述处理单元选择器根据从所述第一队列读取的第一标识信息,将从所述第一标识信息指示的存储单元对应的数据缓存器中读取的返回数据传输至处理单元;所述配置模块对来自存储单元的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元,包括:所述多个数据缓存器存储所述存储单元返回给不同处理单元的返回数据;多个数据仲裁器分别对从数据缓存器中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
在一种可能的实现方式中,所述配置模块还包括:与每个调度模块对应第二队列,与每个存储单元对应的第二调度选择器,在所述多个数据缓存器存储所述存储单元返回给不同处理单元的返回数据之前,所述方法还包括:所述第二调度选择器根据从所述第二队列读取的第二标识信息,将所述存储单元的返回数据传输至所述第二标识信息指示的数据缓存器。
在一种可能的实现方式中,所述状态选择模块根据配置信号选择所述配置模块用于以下方式中的一种,包括:所述配置信号指示所述第二状态选择模块,通过所述配置模块配置存储器访问电路的工作状态;在所述配置信号为高电平的情况下,所述第二状态选择模块指示所述处理单元选择器根据从所述第一队列读取的第一标识信息,将从所述第一标识信息指示的存储单元对应的数据缓存器中读取的返回数据传输至处理单元;或者,在所述配置信号为低电平的情况下,所述第二状态选择模块指示多个数据仲裁器分别对从数据缓存器中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
在一种可能的实现方式中,任一第二调度选择器的输入端连接对应的存储单元的输出端、与所述存储单元所属的调度模块对应的所述第二队列的输出端,任一第二调度选择器的输出端分别连接多个数据缓存器的输入端;连接同一第二调度选择器的多个数据缓存器的输出端分别连接不同的处理单元选择器的输入端,每个处理单元选择器的输入端还连接第一队列的输出端,连接同一第二调度选择器的多个数据缓存器的输出端分别连接不同的处理单元对应的数据仲裁器的输入端;每个处理单元选择器的输出端、与每个处理单元对应的多个数据仲裁器的输出端、所述配置信号连接所述第二状态选择模块的输入端,所述第二状态选择模块的输出端连接对应的处理单元的输入端。
在一种可能的实现方式中,所述第一队列的位宽是根据所述调度模块的数量和每个调度模块中存储单元的数量确定的,所述第一队列存储第一标识信息的数量小于或等于所述第一队列的深度;所述第二队列的位宽是根据所述调度模块中存储单元的数量和处理单元的数量确定的,所述第二队列存储第二标识信息的数量小于或等于所述第二队列的深度;所述数据缓存器的数量是根据所述存储单元的数量和所述处理单元的数量确定的,所述数据缓存器存储返回数据的数量小于或等于所述数据缓存器的深度。
在一种可能的实现方式中,所述存储器访问方法还包括:所述存储单元响应所述请求信息生成返回数据和用于指示调度模块的调度标识;所述多个数据缓存器存储所述存储单元返回给不同处理单元的返回数据和所述调度标识;所述第二调度选择器根据从所述第二队列读取的第二标识信息,将所述存储单元的返回数据和所述调度标识传输至所述第二标识信息指示的数据缓存器;在所述配置信号为低电平的情况下,所述第二状态选择模块指示多个数据仲裁器分别对从数据缓存器中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据、所述调度标识传输至处理单元,或者,在所述配置信号为高电平的情况下,所述第二状态选择模块生成保序标识,所述第二状态选择模块指示所述处理单元选择器根据从所述第一队列读取的第一标识信息,将从所述第一标识信息指示的存储单元对应的数据缓存器中读取的返回数据、所述保序标识传输至处理单元。
根据本公开的一方面,提供了一种集成电路,所述集成电路包括如上所述的存储器访问电路。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括如上所述的存储器访问电路。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
本公开实施例的存储器访问电路包括配置模块、多个处理单元、与每个处理单元对应的状态选择模块,该状态选择模块用于根据配置信号选择配置模块用于以下方式中的一种:配置模块将来自处理单元的请求信息发送至存储单元,并记录处理单元访问存储单元的访问顺序,并根据记录的访问顺序,将来自存储单元的返回数据传输至处理单元;或者,配置模块将来自处理单元的请求信息发送至存储单元,并对来自存储单元的返回数据进行仲裁,按照仲裁顺序将返回数据传输至处理单元。
本公开实施例的存储器访问电路,实现了多个处理单元访问多个存储单元,可通过设置各处理单元对应的状态选择模块的配置信号,选择配置模块对每个处理单元的工作模式(例如保序模式或不保序模式),在保序模式下,可以通过配置模块记录每个处理单元发起对各存储单元访问时的访问顺序,当存储单元回复返回数据时,每个处理单元按照配置模块记录的每个处理单元对应的访问顺序,将来自存储单元的返回数据发送至处理单元,使各处理单元获取到保序回复的返回数据;在非保序模式下,无需配置模块记录每个处理单元的访问顺序,支持返回数据的非保序返回,处理单元获取到非保序回复的返回数据。这样,本公开实施例的存储器访问电路通过配置信号(例如软件输出的信号)灵活配置每个处理单元对应的工作模式是保序模式或不保序模式,进而灵活配置存储器访问电路的工作模式,使其具有更强的适配性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出根据本公开实施例的一种存储器访问电路的示意图。
图2示出根据本公开实施例的另一种存储器访问电路的示意图。
图3示出根据本公开实施例的另一种存储器访问电路的示意图。
图4示出根据本公开实施例的一种存储器访问方法的流程图。
图5示出根据本公开实施例的另一种存储器访问方法的流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开实施例的存储器访问电路的示意图,如图1所示,所述存储器访问电路用于访问多个存储单元0,所述存储器访问电路包括:配置模块C、多个处理单元1、与每个处理单元1对应的状态选择模块D。
所述处理单元1用于生成访问存储单元0的请求信息,所述存储单元0用于响应所述请求信息生成返回数据,所述状态选择模块D用于根据配置信号选择所述配置模块C用于以下方式中的一种:所述配置模块C将来自所述处理单元1的请求信息发送至存储单元0,并记录所述处理单元1访问存储单元0的访问顺序;所述配置模块C根据记录的所述访问顺序,将来自存储单元0的返回数据传输至处理单元1;或者,所述配置模块C将来自所述处理单元1的请求信息发送至存储单元0;对来自存储单元0的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1。
在一种可能的实现方式中,本公开实施例的存储器访问电路可以集成到处理器芯片中,用于访问处理器芯片内的多个不同的存储单元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和多个调度模块,每个调度模块可包括多个存储单元,调度模块可用于执行调度任务(包括操作数据调度、操作程序调度)。在此情况下,调度模块可用于接收处理单元1的请求信息(例如读操作指令、写操作指令等),根据请求信息为处理单元1提供所需的资源(返回数据)。
在一种可能的实现方式中,如图1所示,所述存储器访问电路用于访问M个不同的存储单元0,所述存储器访问电路包括:N个处理单元1、与N个处理单元1对应的N个状态选择模块D、一个配置模块C,M、N为大于1的整数。
M个存储单元0可以分别为存储单元0_1~存储单元0_M,N个处理单元1可分别为处理单元1_1~处理单元1_N。
N个状态选择模块D可以分别为状态选择模块D_1~状态选择模块D_N,即:与处理单元1_1对应的状态选择模块D_1,与处理单元1_2对应的状态选择模块D_2,以此类推,与处理单元1_N对应的状态选择模块D_N。
在示例中,处理单元1_1可生成访问存储单元0_1~存储单元0_M中任意一个或多个存储单元0的请求信息,处理单元1_2可生成访问存储单元0_1~存储单元0_M中任意一个或多个存储单元0的请求信息,以此类推,处理单元1_N可生成访问存储单元0_1~存储单元0_M中任意一个或多个存储单元0的请求信息。
其中,请求信息可以包括请求类型(例如包括读请求和/或写请求)、访问地址(例如读请求的地址,或,写请求的地址)、使能信号(例如使当前请求信息具有某一存储单元的读写权限的信号)等,本公开对此不作具体限制。
在示例中,处理单元1_1对应的状态选择模块D_1,可用于根据输入的配置信号选择配置模块C针对处理单元1_1的工作模式,是保序模式还是非保序模式。
在保序模式中,配置模块C可以将来自处理单元1_1的请求信息发送至存储单元0_1~存储单元0_M中任意存储单元0,并记录处理单元1_1访问存储单元0的访问顺序;配置模块C根据记录的访问顺序,将来自存储单元0~存储单元0_M的返回数据传输至处理单元1。
或者,在非保序模式中,配置模块C可以将来自处理单元1的请求信息发送至存储单元0_1~存储单元0_M中任意存储单元0;以及,对来自存储单元0_1~存储单元0_M的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1_1。
类似的,处理单元1_2对应的状态选择模块D_2,可用于根据输入的配置信号选择配置模块C针对处理单元1_2的工作模式,是保序模式还是非保序模式。以此类推,处理单元1_N对应的状态选择模块D_N,可用于根据输入的配置信号选择配置模块C针对处理单元1_N的工作模式,是保序模式还是非保序模式。具体可参考上文,此处不再赘述。
本公开实施例的存储器访问电路中,实现了多个处理单元1访问多个存储单元0,可通过各处理单元1对应的状态选择模块D的配置信号,选择配置模块C对每个处理单元1的工作模式(例如保序模式或不保序模式),在保序模式下,可以通过配置模块C记录每个处理单元1发起对各存储单元0访问时的访问顺序,当存储单元0回复返回数据时,每个处理单元1按照配置模块C记录的每个处理单元1对应的访问顺序,将来自存储单元0的返回数据发送至处理单元1,使各处理单元1获取到保序回复的返回数据;在非保序模式下,无需配置模块C记录每个处理单元1的访问顺序,支持返回数据的非保序返回,处理单元1获取到非保序回复的返回数据。
图2示出根据本公开实施例的另一种存储器访问电路的示意图,如图2所示,所述存储器访问电路用于访问多个调度模块00,每个调度模块00包括多个存储单元0。
所述存储器访问电路包括:配置模块C(见图1标记,图2未标记),多个处理单元1,与每个处理单元1对应的所述状态选择模块D(见图1标记,图2未标记)。
所述状态选择模块D包括:第一状态选择模块2、第二状态选择模块3。
所述配置模块C包括:与每个处理单元1对应的第一队列4、处理单元选择器5、多个数据仲裁器6,与每个存储单元0对应的多个数据缓存器7,其中,任一处理单元1的任一数据仲裁器对应多个调度模块00中的一个不同的存储单元,同一存储单元0对应的多个数据缓存器7分别对应不同的处理单元1。
所述处理单元1用于生成访问调度模块00中一个或多个存储单元0的请求信息,所述请求信息包括用于指示调度模块00中一个或多个存储单元0的第一标识信息,所述第一状态选择模块2用于根据配置信号选择是否指示所述第一队列4按照所述处理单元1的访问顺序存储所述第一标识信息,所述第一队列4存在的多个第一标识信息用于记录所述第一队列4对应的所述处理单元1访问存储单元0的访问顺序。
所述存储单元0响应所述请求信息生成返回数据,所述多个数据缓存器7用于存储所述存储单元0返回给不同处理单元1的返回数据,所述第二状态选择模块3用于根据配置信号,选择所述配置模块C用于以下方式中的一种:所述处理单元选择器5根据从所述第一队列4读取的第一标识信息,将从所述第一标识信息指示的存储单元0对应的数据缓存器7中读取的返回数据传输至处理单元1。或者,多个数据仲裁器6分别对从数据缓存器7中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1。
其中,不同的调度模块00可用于执行不同的调度任务,如果每个调度模块00设置一个存储单元0,当多个处理单元1同时访问一个存储单元0会造成读写压力过大,性能降低,本公开的实施例可以在调度模块00中设置多个存储单元0,有利于提高系统硬件的读写效率。
在一种可能的实现方式中,如图2所示,存储器访问电路可用于访问K个(K≥1)不同调度模块00,例如:调度模块00_1~调度模块00_K。其中,每个调度模块00可包括M个(M≥1)存储单元0,例如:调度模块00_1可包括存储单元0_1_1~存储单元0_1_M,调度模块00_2可包括存储单元0_2_1~存储单元0_2_M,以此类推,调度模块00_K可包括存储单元0_K_1~存储单元0_K_M。
应当理解,不同调度模块00中的存储单元0的数量可以相同,也可以不同,本公开的实施例可实现调度模块中存储单元0数量不相同的混合工作,可根据实际的应用场景进行设置,本公开对此不作限制。
如图2所示,存储器访问电路可包括N个(N≥1)处理单元1,与N个处理单元1分别对应的N个第一状态选择模块2、N个第二状态选择模块3、N个第一队列4、N个处理单元选择器5、N×M个数据仲裁器6,与M×K个存储单元0分别对应的M×K×N个数据缓存器7。
在示例中,N个处理单元1可分别为处理单元1_1~处理单元1_N,N个第一状态选择模块2可分别为第一状态选择模块2_1~第一状态选择模块2_N,N个第一队列4可分别为第一队列4_1~第一队列4_N。其中,第一状态选择模块2_1和第一队列4_1对应处理单元1_1,第一状态选择模块2_2和第一队列4_2对应处理单元1_2,以此类推,第一状态选择模块2_N和第一队列4_N对应处理单元1_N。
处理单元1_1可生成访问调度模块00_1~调度模块00_K中一个或多个存储单元0的请求信息,该请求信息可包括用于指示调度模块00中一个或多个存储单元0的第一标识信息。例如,第一标识信息可以是位宽为M×K比特(bit)的二进制数据,每位可对应一个不同的存储单元0。
示例性地,假设在M和K均为3,也即存在调度模块00_1~调度模块00_3,调度模块00_1包括存储单元0_1_1、存储单元0_1_2和存储单元0_1_3,调度模块00_2包括存储单元0_2_1、存储单元0_2_2和存储单元0_2_3,调度模块00_3包括存储单元0_3_1、存储单元0_3_2和存储单元0_3_3。
在此情况下,第一标识信息的位宽可以为9,右侧起第一位可用于指示调度模块00_1中的存储单元0_1_1,1表示处理单元1_1生成的请求信息会访问调度模块00_1中的存储单元0_1_1,0表示处理单元1_1生成的请求信息不会访问调度模块00_1中的存储单元0_1_1。
类似的,右侧起第二位可用于指示调度模块00_1中的存储单元0_1_2,1表示处理单元1_1生成的请求信息会访问调度模块00_1中的存储单元0_1_2,0表示处理单元1_1生成的请求信息不会访问调度模块00_1中的存储单元0_1_2。
右侧起第三位可用于指示调度模块00_1中的存储单元0_1_3,1表示处理单元1_1生成的请求信息会访问调度模块00_1中的存储单元0_1_3,0表示处理单元1_1生成的请求信息不会访问调度模块00_1中的存储单元0_1_3。
右侧起第四位可用于指示调度模块00_2中的存储单元0_2_1,1表示处理单元1_1生成的请求信息会访问调度模块00_2中的存储单元0_2_1,0表示处理单元1_1生成的请求信息不会访问调度模块00_2中的存储单元0_2_1。
右侧起第五位可用于指示调度模块00_2中的存储单元0_2_2,1表示处理单元1_1生成的请求信息会访问调度模块00_2中的存储单元0_2_2,0表示处理单元1_1生成的请求信息不会访问调度模块00_2中的存储单元0_2_2。
右侧起第六位可用于指示调度模块00_2中的存储单元0_2_3,1表示处理单元1_1生成的请求信息会访问调度模块00_2中的存储单元0_2_3,0表示处理单元1_1生成的请求信息不会访问调度模块00_2中的存储单元0_2_3。
右侧起第七位可用于指示调度模块00_3中的存储单元0_3_1,1表示处理单元1_1生成的请求信息会访问调度模块00_3中的存储单元0_3_1,0表示处理单元1_1生成的请求信息不会访问调度模块00_3中的存储单元0_3_1。
右侧起第八位可用于指示调度模块00_3中的存储单元0_3_2,1表示处理单元1_1生成的请求信息会访问调度模块00_3中的存储单元0_3_2,0表示处理单元1_1生成的请求信息不会访问调度模块00_3中的存储单元0_3_2。
右侧起第九位可用于指示调度模块00_3中的存储单元0_3_3,1表示处理单元1_1生成的请求信息会访问调度模块00_3中的存储单元0_3_3,0表示处理单元1_1生成的请求信息不会访问调度模块00_3中的存储单元0_3_3。
例如假设第一标识信息为111000000,处理单元1_1生成的是访问调度模块00_3中存储单元0_3_1、存储单元0_3_2和存储单元0_3_3的请求信息。又例如,假设第一标识信息为000000101,处理单元1_1生成的是访问调度模块00_1中存储单元0_1_1和存储单元0_1_3的请求信息。又例如,假设第一标识信息为000001000,处理单元1_1生成的是访问调度模块00_2中存储单元0_2_1的请求信息。
应当理解,在第一标识信息中每位可分别对应一个不同的存储单元0的情况下,可根据实际的应用场景,确定第一标识信息的位宽,以及每位对应的存储单元0,本公开对此不作限制。
类似的,处理单元1_2~处理单元1_N同样可以生成访问调度模块00_1~调度模块00_K中一个或多个存储单元0的请求信息,具体可以参考处理单元1_1,此处不再赘述。
在示例中,第一队列4_1~第一队列4_N可以是先入先出(First Input FirstOutput,FIFO)队列,即第一个进入其内的数据第一个被移出。
第一状态选择模块2_1~第一状态选择模块2_N可以是与逻辑门。配置信号可以是软件配置的保序信号,当配置信号为高电平(例如信号1)时,表示配置信号所配置的处理单元1为保序模式;当配置信号为低电平(例如信号0)时,表示配置信号所配置的处理单元1为不保序模式。通过第一状态选择模块2,第一队列4的写入使能可以与配置信号做与操作,以实现保序模式时,按照所述处理单元1的访问顺序将该处理单元1对应的第一标识信息写入第一队列4中;以及在不保序模式时,不将处理单元1对应的第一标识信息写入第一队列4中。
在示例中,如果处理单元1_1对应的配置信号为高电平,处理单元1_1处于保序模式,处理单元1_1可以将生成的请求信息发送至任一调度模块00中的一个或多个存储单元0,并将该请求信息的第一标识信息写入第一队列4_1,第一队列4_1用于按照处理单元1_1的访问顺序存储第一标识信息,该访问顺序也即处理单元1_1生成请求信息的生成顺序。
例如,如果处理单元1_1连续生成了三个请求信息,其中,第一个请求信息包括第一标识信息K,第二个请求信息包括第一标识信息1,第三个请求信息包括第一标识信息2。
处理单元1_1将第一个请求信息,发送至第一标识信息K指示的调度模块00_K中的一个或多个存储单元0,可以同步将第一标识信息K写入第一队列4_1。
处理单元1_1将第二个请求信息,发送至第一标识信息1指示的调度模块00_1中的一个或多个存储单元0,可以同步将第一标识信息1写入第一队列4_1。
处理单元1_1将第三个请求信息,发送至第一标识信息2指示的调度模块00_2中的一个或多个存储单元0,可以同步将第一标识信息2写入第一队列4_1。
在此情况下,第一队列4_1按照处理单元1_1的访问顺序(例如先访问第一标识信息M指示的调度模块00_K,再访问第一标识信息1指示的调度模块00_1,然后访问第一标识信息2指示的调度模块00_2),在从队首至队尾的方向,依次存储了第一标识信息M、第一标识信息1、第一标识信息2。
类似的,处理单元1_2~处理单元1_N可以分别将各自生成的请求信息,发送至第一标识信息指示的任一调度模块00中的一个或多个存储单元0,并将各自的请求信息的第一标识信息分别写入对应的第一队列4_2~第一队列4_N,以使第一队列4_2~第一队列4_N按照各自负责的处理单元1_2~处理单元1_N的访问顺序存储第一标识信息,此处不再赘述。
在示例中,如果处理单元1_1对应的配置信号为低电平,处理单元1_1处于不保序模式,处理单元1_1可以直接将生成的请求信息发送至任一调度模块00中的一个或多个存储单元0,不用将该请求信息的第一标识信息写入第一队列4_1。类似的,处理单元1_2~处理单元1_N也可以直接将各自生成的请求信息,发送至任一调度模块00中的一个或多个存储单元0,不用并将各自的请求信息的第一标识信息分别写入对应的第一队列4_2~第一队列4_N。
在一种可能的实现方式中,所述第一队列4的位宽是根据所述调度模块00的数量和每个调度模块00中存储单元0的数量确定的,所述第一队列4存储第一标识信息的数量小于或等于所述第一队列4的深度。通过这种方式,可根据不同的应用场景,高效快速地确定第一队列4的位宽和深度。
示例性地,第一队列4的位宽可以与第一标识信息的位宽相同,如图2所示,存储器访问电路用于访问K个调度模块00,每个调度模块包括M个存储单元,可以将第一队列4的位宽设置为K×M。
示例性地,第一队列4的深度与处理单元1的并发度相关联,其中,并发度表示处理单元1在不需要等待存储单元0的返回数据的情况下,最大可以连续发送出请求信息的数量。假设第一队列4的深度为4,则表示一个处理单元1最大的并发度是4,每个处理单元1最大可以连续发送出4笔请求信息而不需要等待存储单元0的返回数据。本公开对第一队列4的深度不作限制,可以根据具体的应用场景进行设置。
上面介绍了多个处理单元1访问多个存储单元0的过程,下面介绍多个存储单元0响应处理单元1的访问请求,回传返回数据的过程。
在一种可能的实现方式中,所述存储器访问电路还包括多个数据缓存器,所述数据缓存器7的数量是根据所述存储单元0的数量和所述处理单元1的数量确定的,所述数据缓存器7存储返回数据的数量小于或等于所述数据缓存器7的深度。通过这种方式,可根据不同的应用场景,高效快速地确定数据缓存器7的数量和深度。
示例性地,如图2所示的存储器访问电路包括了N个处理单元1,可用于访问K个调度模块00,每个调度模块包括M个存储单元,也即K×M个存储单元0。数据缓存器7的数量可以是存储单元0的数量M×K和处理单元1的数量N的乘积结果M×K×N。
数据缓存器7的深度表示数据缓存器7可以缓存的返回数据的最大数量,数据缓存器7存储的返回数据的数量小于或等于数据缓存器7的深度。其中,数据缓存器7的深度可以与第一队列4的深度保持一致,本公开对数据缓存器7的深度不作限制。
如图2所示,每个存储单元0可分别对应一组数据缓存器7,每组数据缓存器7可分别对应不同的处理单元1,例如,在与存储单元0_1_1对应的数据缓存器7_11_1~数据缓存器7_11_N中,数据缓存器7_11_1对应处理单元1_1,数据缓存器7_11_2对应处理单元1_2,以此类推,数据缓存器7_11_N对应处理单元1_N。
其中,数据缓存器7_11_1~数据缓存器7_11_N可用于存储存储单元0_1_1返回给处理单元1_0~处理单元1_N的返回数据。在数据缓存器7_11_1~数据缓存器7_11_N中,数据缓存器7_11_1用于存储存储单元0_1_1返回给处理单元1_1的返回数据,数据缓存器7_11_2用于存储存储单元0_1_1返回给处理单元1_2的返回数据,以此类推,数据缓存器7_11_N用于存储存储单元0_1_1返回给处理单元1_N的返回数据。
在与存储单元0_1_2对应的数据缓存器7_12_1~数据缓存器7_12_N中,数据缓存器7_12_1对应处理单元1_1,数据缓存器7_12_2对应处理单元1_2,以此类推,数据缓存器7_12_N对应处理单元1_N。
其中,数据缓存器7_12_1~数据缓存器7_12_N可用于存储存储单元0_1_2返回给处理单元1_0~处理单元1_N的返回数据。在数据缓存器7_12_1~数据缓存器7_12_N中,数据缓存器7_12_1用于存储存储单元0_1_2返回给处理单元1_1的返回数据,数据缓存器7_12_2用于存储存储单元0_1_2返回给处理单元1_2的返回数据,以此类推,数据缓存器7_12_N用于存储存储单元0_1_2返回给处理单元1_N的返回数据。
在与存储单元0_1_M对应的数据缓存器7_1M_1~数据缓存器7_1M_N中,数据缓存器7_1M_1对应处理单元1_1,数据缓存器7_1M_2对应处理单元1_2,以此类推,数据缓存器7_1M_N对应处理单元1_N。
其中,数据缓存器7_1M_1~数据缓存器7_1M_N可用于存储存储单元0_1_M返回给处理单元1_0~处理单元1_N的返回数据。在数据缓存器7_1M_1~数据缓存器7_1M_N中,数据缓存器7_1M_1用于存储存储单元0_1_M返回给处理单元1_1的返回数据,数据缓存器7_1M_2用于存储存储单元0_1_M返回给处理单元1_2的返回数据,以此类推,数据缓存器7_1M_N用于存储存储单元0_1_M返回给处理单元1_N的返回数据。
又例如,在与存储单元0_2_1对应的数据缓存器7_21_1~数据缓存器7_21_N中,数据缓存器7_21_1对应处理单元1_1,数据缓存器7_21_2对应处理单元1_2,以此类推,数据缓存器7_21_N对应处理单元1_N。
其中,数据缓存器7_21_1~数据缓存器7_21_N可用于存储存储单元0_2_1返回给处理单元1_0~处理单元1_N的返回数据。在数据缓存器7_21_1~数据缓存器7_21_N中,数据缓存器7_21_1用于存储存储单元0_2_1返回给处理单元1_1的返回数据,数据缓存器7_21_2用于存储存储单元0_2_1返回给处理单元1_2的返回数据,以此类推,数据缓存器7_21_N用于存储存储单元0_2_1返回给处理单元1_N的返回数据。
在与存储单元0_2_2对应的数据缓存器7_22_1~数据缓存器7_22_N中,数据缓存器7_22_1对应处理单元1_1,数据缓存器7_22_2对应处理单元1_2,以此类推,数据缓存器7_22_N对应处理单元1_N。
其中,数据缓存器7_22_1~数据缓存器7_22_N可用于存储存储单元0_2_2返回给处理单元1_0~处理单元1_N的返回数据。在数据缓存器7_22_1~数据缓存器7_22_N中,数据缓存器7_22_1用于存储存储单元0_2_2返回给处理单元1_1的返回数据,数据缓存器7_22_2用于存储存储单元0_2_2返回给处理单元1_2的返回数据,以此类推,数据缓存器7_22_N用于存储存储单元0_2_2返回给处理单元1_N的返回数据。
在与存储单元0_2_M对应的数据缓存器7_2M_1~数据缓存器7_2M_N中,数据缓存器7_2M_1对应处理单元1_1,数据缓存器7_2M_2对应处理单元1_2,以此类推,数据缓存器7_2M_N对应处理单元1_N。
其中,数据缓存器7_2M_1~数据缓存器7_2M_N可用于存储存储单元0_2_M返回给处理单元1_0~处理单元1_N的返回数据。在数据缓存器7_2M_1~数据缓存器7_2M_N中,数据缓存器7_2M_1用于存储存储单元0_2_M返回给处理单元1_1的返回数据,数据缓存器7_2M_2用于存储存储单元0_2_M返回给处理单元1_2的返回数据,以此类推,数据缓存器7_2M_N用于存储存储单元0_2_M返回给处理单元1_N的返回数据。
以此类推,在与存储单元0_K_1对应的数据缓存器7_K1_1~数据缓存器7_K1_N中,数据缓存器7_K1_1对应处理单元1_1,数据缓存器7_K1_2对应处理单元1_2,以此类推,数据缓存器7_K1_N对应处理单元1_N。
其中,数据缓存器7_K1_1~数据缓存器7_K1_N可用于存储存储单元0_K_1返回给处理单元1_0~处理单元1_N的返回数据。在数据缓存器7_K1_1~数据缓存器7_K1_N中,数据缓存器7_K1_1用于存储存储单元0_K_1返回给处理单元1_1的返回数据,数据缓存器7_K1_2用于存储存储单元0_K_1返回给处理单元1_2的返回数据,以此类推,数据缓存器7_K1_N用于存储存储单元0_K_1返回给处理单元1_N的返回数据。
在与存储单元0_K_2对应的数据缓存器7_K2_1~数据缓存器7_K2_N中,数据缓存器7_K2_1对应处理单元1_1,数据缓存器7_K2_2对应处理单元1_2,以此类推,数据缓存器7_K2_N对应处理单元1_N。
其中,数据缓存器7_K2_1~数据缓存器7_K2_N可用于存储存储单元0_K_2返回给处理单元1_0~处理单元1_N的返回数据。在数据缓存器7_K2_1~数据缓存器7_K2_N中,数据缓存器7_K2_1用于存储存储单元0_K_2返回给处理单元1_1的返回数据,数据缓存器7_K2_2用于存储存储单元0_K_2返回给处理单元1_2的返回数据,以此类推,数据缓存器7_K2_N用于存储存储单元0_K_2返回给处理单元1_N的返回数据。
在与存储单元0_K_M对应的数据缓存器7_KM_1~数据缓存器7_KM_N中,数据缓存器7_KM_1对应处理单元1_1,数据缓存器7_KM_2对应处理单元1_2,以此类推,数据缓存器7_KM_N对应处理单元1_N。
其中,数据缓存器7_KM_1~数据缓存器7_KM_N可用于存储存储单元0_K_M返回给处理单元1_0~处理单元1_N的返回数据。在数据缓存器7_KM_1~数据缓存器7_KM_N中,数据缓存器7_KM_1用于存储存储单元0_K_M返回给处理单元1_1的返回数据,数据缓存器7_KM_2用于存储存储单元0_K_M返回给处理单元1_2的返回数据,以此类推,数据缓存器7_KM_N用于存储存储单元0_K_M返回给处理单元1_N的返回数据。
这样,当各存储单元0响应来自不同处理单元1的请求信息生成返回数据,可以将返回数据发送至对应各自处理单元1的数据缓存器7,此处不再赘述。
如图2所示,在存储器访问电路中,N个第二状态选择模块3可分别为第二状态选择模块3_1~第二状态选择模块3_N。N个第一队列4可分别为第一队列4_1~第一队列4_N。N个处理单元选择器5可分别为处理单元选择器5_1~处理单元选择器5_1。N组数据仲裁器6分别为:数据仲裁器6_1_1~数据仲裁器6_1_M,数据仲裁器6_2_1~数据仲裁器6_2_M,以此类推,数据仲裁器6_N_1~数据仲裁器6_N_M。
其中,第二状态选择模块3_1、第一队列4_1、处理单元选择器5_1、数据仲裁器6_1_1~数据仲裁器6_1_M对应处理单元1_1,第二状态选择模块3_2、第一队列4_2、处理单元选择器5_2、数据仲裁器6_2_1~数据仲裁器6_2_M对应处理单元1_2,以此类推,第二状态选择模块3_N、第一队列4_N、处理单元选择器5_N、数据仲裁器6_N_1~数据仲裁器6_N_M对应处理单元1_N。
第二状态选择模块3_1~第二状态选择模块3_N可以是多路选择器。第二状态选择模块3可用于根据配置信号选择存储器访问电路是处于保序模式还是非保序模式。
当配置信号为高电平(例如信号1)时,表示软件配置当前处理器访问电路为保序模式;配置信号可指示第二状态选择模块3选择处理单元选择器5工作,数据仲裁器6暂停工作,以使处理单元选择器5根据从第一队列4读取的第一标识信息,将从第一标识信息指示的存储单元0对应的数据缓存器7中读取的返回数据传输至处理单元。
在示例中,当处理单元1_1对应的配置信号为高电平(例如信号1)时,处理单元选择器5_1可以根据从第一队列4_1读取的第一标识信息,将从第一标识信息指示的数据缓存器7中读取的返回数据传输至处理单元1_1。
例如,假设第一队列4_1按照从队首至队尾的方向,依次存储了第一标识信息K、第一标识信息1、第一标识信息2。处理单元选择器5_1可以根据从第一队列4_1的队首取出的第一标识信息K,从第一标识信息K指示的调度模块00_K中一个或多个存储单元0对应的一个或多个数据缓存器7中(例如存储单元0_K_1对应的数据缓存器7_K1_1、存储单元0_K_2对应的数据缓存器7_K2_1、存储单元0_K_M对应的数据缓存器7_KM_1等),取出返回数据并传输至处理单元1_1。此时,在第一队列4_1中,第一标识信息K出队,第一标识信息1会变为第一队列4_1的队首。
然后,处理单元选择器5_1可以继续根据从第一队列4_1的队首取出的第一标识信息1,从第一标识信息1指示的调度模块00_1中一个或多个存储单元0所对应的一个或多个数据缓存器7中(例如存储单元0_1_1对应的数据缓存器7_11_1、存储单元0_1_2对应的数据缓存器7_12_1、存储单元0_1_M对应的数据缓存器7_1M_1等),取出返回数据并传输至处理单元1_1。此时,在第一队列4_1中,第一标识信息1出队,第一标识信息2会变为第一队列4_1的队首。
接下来,处理单元选择器5_1可以继续根据从第一队列4_1的队首取出的第一标识信息2,从第一标识信息2指示的调度模块00_2中一个或多个存储单元0所对应的一个或多个数据缓存器7中(例如存储单元0_2_1对应的数据缓存器7_21_1、存储单元0_2_2对应的数据缓存器7_22_1、存储单元0_2_M对应的数据缓存器7_2M_1等),取出返回数据并传输至处理单元1_1。
类似的,处理单元选择器5_2~处理单元选择器5_2可以根据各自从对应的第一队列4_2~第一队列4_N读取的第一标识信息,将从第一标识信息指示的数据缓存器7中读取的返回数据分别传输至处理单元1_2~处理单元1_N,此处不再赘述。
或者,当配置信号为低电平(例如信号0)时,表示软件配置当前处理单元1为不保序模式。配置信号可指示第二状态选择模块3选择处理单元选择器5暂停工作,数据仲裁器6工作,每个数据仲裁器6可对从数据缓存器7中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1。
其中,任一处理单元1的任一数据仲裁器6对应多个调度模块00中的一个不同的存储单元0。
例如,处理单元1_1的数据仲裁器6_1_1对应调度模块00_1中存储单元0_1_1、调度模块00_2中存储单元0_2_1,以此类推,调度模块00_K中存储单元0_K_1。数据仲裁器6_1_1用于对数据缓存器7_11_1缓存的调度模块00_1中存储单元0_1_1的返回数据、数据缓存器7_21_1缓存的调度模块00_2中存储单元0_2_1的返回数据,以此类推,数据缓存器7_K1_1缓存的调度模块00_K中存储单元0_K_1的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1_1。
处理单元1_1的数据仲裁器6_1_2对应调度模块00_1中存储单元0_1_2、调度模块00_2中存储单元0_2_2,以此类推,调度模块00_K中存储单元0_K_2。数据仲裁器6_1_2用于对数据缓存器7_12_1缓存的调度模块00_1中存储单元0_1_2的返回数据、数据缓存器7_22_1缓存的调度模块00_2中存储单元0_2_2的返回数据,以此类推,数据缓存器7_K2_1缓存的调度模块00_K中存储单元0_K_2的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1_1。
以此类推,处理单元1_1的数据仲裁器6_1_M对应调度模块00_1中存储单元0_1_M、调度模块00_2中存储单元0_2_M,以此类推,调度模块00_K中存储单元0_K_M。数据仲裁器6_1_M用于对数据缓存器7_1M_1缓存的调度模块00_1中存储单元0_1_M的返回数据、数据缓存器7_2M_1缓存的调度模块00_2中存储单元0_2_M的返回数据,以此类推,数据缓存器7_KM_1缓存的调度模块00_K中存储单元0_K_M的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1_1。
应当理解,处理单元1_2~处理单元1~N分别对应的多个数据仲裁器6的工作方式可参考处理单元1_1的数据仲裁器的工作方式,此处不再赘述。
示例性地,假设在M和K均为3,也即存在调度模块00_1~调度模块00_3,调度模块00_1包括存储单元0_1_1、存储单元0_1_2和存储单元0_1_3,调度模块00_2包括存储单元0_2_1、存储单元0_2_2和存储单元0_2_3,调度模块00_3包括存储单元0_3_1、存储单元0_3_2和存储单元0_3_3。
当数据缓存器7中非空时,在保序模式下,可根据第一队列4中存储的访问调度模块00的信息,将对应返回数据返回给对应的处理单元1中,例如:当处理单元1_1顺序访问调度模块00_1、调度模块00_3、调度模块00_2,则3次请求信息的第一标识信息写入第一队列4_1的顺序为000000111、101000000、000001000;那么保序处理,会按照调度模块00_1的存储单元0_1_1、存储单元0_1_2和存储单元0_1_3;调度模块00_3的存储单元0_3_1和存储单元0_3_3;调度模块00_2的存储单元0_2_1的顺序依次返回给处理单元1_1。
在非保序模式下,数据仲裁器6可以将返回数据从数据缓存器7中读出,读出方式采用轮询仲裁(round robin),其中当任意一个数据缓存器7非空,则进行轮询仲裁选出,其中,可按照来自不同调度模块00的一个存储单元0为粒度进行选择。
本公开实施例的存储器访问电路中,实现了多个处理单元1访问不同调度模块00中的一个或多个存储单元0,可通过各处理单元1的配置信号选择每个处理单元1的工作模式(例如保序模式或不保序模式),在保序模式下,当多个处理单元1访问存储单元0时,可以通过第一队列4记录处理单元1发起对各存储单元0访问时的访问顺序,当存储单元0回复返回数据时,可通过多个数据缓存器7对各存储单元0的返回数据进行缓存,每个处理单元1按照第一队列4记录的访问顺序从多个数据缓存器7读取各存储单元0的返回数据,使得处理单元1后发送的请求信息的返回数据先缓存在数据缓存器7中,等待先发起请求信息的返回数据,处理单元1获取到保序回复的返回数据;在非保序模式下,无需第一队列4记录处理单元1的访问顺序,支持返回数据的非保序返回,处理单元1获取到非保序回复的返回数据。
在一种可能的实现方式中,所述配置信号用于指示所述第一状态选择模块2和所述第二状态选择模块3,通过所述配置模块C配置存储器访问电路的工作状态。
在所述配置信号为高电平的情况下,所述第一状态选择模块2指示所述第一队列4按照所述处理单元1的访问顺序存储所述第一标识信息,所述第二状态选择模块3指示所述处理单元选择器5根据从所述第一队列4读取的第一标识信息,将从所述第一标识信息指示的存储单元0对应的数据缓存器7中读取的返回数据传输至处理单元1。
这样,处理单元1工作在保序模式,当多个处理单元1访问存储单元0时,可以通过第一队列4记录处理单元1发起对各存储单元0访问时的访问顺序,当存储单元0回复返回数据时,可通过多个数据缓存器7对各存储单元0的返回数据进行缓存,每个处理单元1按照第一队列4记录的访问顺序从多个数据缓存器7读取各存储单元0的返回数据,使得处理单元1后发送的请求信息的返回数据先缓存在数据缓存器7中,等待先发起请求信息的返回数据,处理单元1获取到保序回复的返回数据。
或者,在所述配置信号为低电平的情况下,所述第一状态选择模块2指示所述第一队列4停止工作,所述第二状态选择模块3指示多个数据仲裁器6分别对从数据缓存器7中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1。
这样,处理单元1工作在非保序模式,无需第一队列4记录处理单元1的访问顺序,可通过数据仲裁器6从数据缓存器7中读取返回数据至对应的处理单元1,处理单元1获取到非保序回复的返回数据。
在示例中,可以通过设置每个处理单元1的配置信号,选择每个处理单元1的工作模式是保序模式或不保序模式,提高存储器访问电路的扩展性和适配性,便于兼容更多的应用场景。
如图2所示,可以将处理单元1_1的配置信号~处理单元1_N的配置信号全部设置为高电平,使N个处理单元1全部处于保序模式。
或者,可以将处理单元1_1的配置信号~处理单元1_N的配置信号全部设置为低电平,使N个处理单元1全部处于非保序模式。
或者,在处理单元1_1的配置信号~处理单元1_N的配置信号中,可以将部分处理单元1的配置信号设置为高电平,可以将另一部分处理单元1的配置信号设置为低电平,使部分处理单元1处于保序模式,另一部分处理单元1处于非保序模式。例如,可以将处理单元1_1的配置信号设置为高电平,将处理单元1_2的配置信号~处理单元1_N的配置信号设置为低电平,使得处理单元1_1的处于保序模式,处理单元1_2~处理单元1_N处于非保序模式,实现保序模式和非保序模式的混合工作。
下面对本公开实施例的存储器访问电路进行展开说明。
图3示出根据本公开实施例的另一种存储器访问电路的示意图,如图3所示,所述存储器访问电路用于访问多个调度模块00,每个调度模块00包括多个存储单元0,所述存储器访问电路在包括了多个处理单元1,与每个处理单元1对应的所述状态选择模块D(见图1标记,图3未标记),配置模块C(见图1标记,图3未标记)。
所述状态选择模块D包括第一状态选择模块2和第二状态选择模块3。
所述配置模块C除了包括与每个处理单元1对应的第一队列4、处理单元选择器5、数据仲裁器6、与每个存储单元0对应的多个数据缓存器7,所述配置模块还可以包括:与每个处理单元1对应的第一调度选择器8,与每个调度模块00对应的请求仲裁器9、第二队列A,与每个存储单元0对应的第二调度选择器B。
任一第一状态选择模块2的输入端分别连接对应的处理单元1的输出端、所述配置信号,所述第一状态选择模块2的输出端连接与所述处理单元1对应的第一队列4的输入端,所述处理单元1的输出端还连接对应的一个第一调度选择器8的输入端,所述第一调度选择器8的输出端分别连接每个请求仲裁器9的输入端;所述第一调度选择器8用于将从所述处理单元1接收到的请求信息发送至所述第一标识信息指示的调度模块00的请求仲裁器9;每个请求仲裁器9的输出端连接对应的调度模块00中每个存储单元0的输入端、与所述调度模块00对应的第二队列A的输入端;所述请求仲裁器9用于对来自多个处理单元1的请求信息进行仲裁,按照请求信息的仲裁顺序向存储单元0发送请求信息,以及按照请求信息的所述仲裁顺序将所述多个处理单元1的第二标识信息写入第二队列A,所述第二标识信息用于指示所述处理单元1访问调度模块00中一个或多个存储单元0。
任一第二调度选择器B的输入端连接对应的存储单元0的输出端、与所述存储单元0所属的调度模块00对应的所述第二队列A的输出端,任一第二调度选择器B的输出端分别连接多个数据缓存器7的输入端;所述第二调度选择器B用于根据从所述第二队列A读取的第二标识信息,将所述存储单元0的返回数据传输至所述第二标识信息指示的数据缓存器7。连接同一第二调度选择器B的多个数据缓存器7的输出端分别连接不同的处理单元1选择器的输入端,每个处理单元选择器5的输入端还连接一个第一队列4的输出端,连接同一第二调度选择器B的多个数据缓存器7的输出端分别连接不同的处理单元1对应的一个数据仲裁器6的输入端;每个处理单元选择器5的输出端、与每个处理单元1对应的多个数据仲裁器6的输出端、所述配置信号连接所述第二状态选择模块3的输入端,所述第二状态选择模块3的输出端连接对应的处理单元1的输入端。
通过设置第一调度选择器8、请求仲裁器9、第二队列A、第二调度选择器B,有利于更高效更精准的实现多个处理单元1访问不同的存储单元0。
如图3所示,第一状态选择模块2_1的输入端分别连接处理单元1_1的输出端、处理单元1_1对应的配置信号,第一状态选择模块2_1的输出端连接第一队列4_1的输入端;处理单元1_1的输出端连接第一调度选择器8_1的输入端,第一调度选择器8_1的输出端分别连接请求仲裁器9_1的输入端~请求仲裁器9_K的输入端;
第一状态选择模块2_2的输入端分别连接处理单元1_2的输出端、处理单元1_2对应的配置信号,第一状态选择模块2_2的输出端连接第一队列4_2的输入端;处理单元1_2的输出端连接第一调度选择器8_2的输入端,第一调度选择器8_2的输出端分别连接请求仲裁器9_1的输入端~请求仲裁器9_K的输入端;
以此类推,第一状态选择模块2_N的输入端分别连接处理单元1_N的输出端、处理单元1_N对应的配置信号,第一状态选择模块2_N的输出端连接第一队列4_N的输入端;处理单元1_N的输出端连接第一调度选择器8_N的输入端,第一调度选择器8_N的输出端分别连接请求仲裁器9_1的输入端~请求仲裁器9_K的输入端。
示例性地,如果处理单元1_1对应的配置信号为高电平,处理单元1_1处于保序模式,处理单元1_1可以将生成的请求信息发送至第一调度选择器8_1,并将该请求信息的第一标识信息写入第一队列4_1,第一队列4_1用于按照处理单元1_1的访问顺序存储第一标识信息,该访问顺序也即处理单元1_1生成请求信息的生成顺序。如果处理单元1_1对应的配置信号为低电平,处理单元1_1处于不保序模式,第一队列4_1暂停工作,处理单元1_1可以直接将生成的请求信息发送至第一调度选择器8_1。
类似的,处理单元1_2~处理单元1_N可以将各自生成的请求信息,发送至对应的第一调度选择器8_2~第一调度选择器8_N,并根据各自的配置信号确定是否将第一标识信息写入第一队列4_2~第一队列4_N,具体可参考处理单元1_1,此处不再赘述。
第一调度选择器8_1接收到由处理单元1_1发送的请求信息,可以根据请求信息中第一标识信息的指示,从请求仲裁器9_1~请求仲裁器9_K中确定一个目标仲裁器,将请求信息发送至目标仲裁器,该目标仲裁器也即第一标识信息指示的调度模块00所对应的请求仲裁器9。例如,如果第一调度选择器8_1接收到包括第一标识信息1的请求信息,可以将该请求信息发送至第一标识信息1指示的调度模块00_1所对应的请求仲裁器9_1;如果第一调度选择器8_1接收到包括第一标识信息2的请求信息,可以将该请求信息发送至第一标识信息2指示的调度模块00_2所对应的请求仲裁器9_2;以此类推,如果第一调度选择器8_1接收到包括第一标识信息M的请求信息,可以将该请求信息发送至第一标识信息M指示的调度模块00_K所对应的请求仲裁器9_K。
类似的,处理单元1_2~处理单元1_N同样可以生成访问调度模块00_1~调度模块00_K中任一调度模块00中一个或多个存储单元0的请求信息,处理单元1_2~处理单元1_N可以将各自生成的包含第一标识信息的请求信息发送至对应的第一调度选择器8_2~第一调度选择器8_N,第一调度选择器8_2~第一调度选择器8_N响应于各自接收到的请求信息,可以根据请求信息中第一标识信息的指示,将该请求信息发送至第一标识信息指示的调度模块00所对应的请求仲裁器9,具体可以参考上文,此处不再赘述。
每个请求仲裁器9的输出端连接对应的调度模块00中各存储单元0的输入端、对应的第二队列A的输入端,用于对来自多个处理单元1的请求信息进行仲裁,按照仲裁顺序向存储单元0发送请求信息,以及按照所述仲裁顺序将所述多个处理单元1的第二标识信息写入所述第二队列A,该第二标识信息用于指示处理单元1访问调度模块00中一个或多个存储单元0。
在一种可能的实现方式中,所述第二队列A的位宽是根据所述调度模块00中存储单元0的数量和处理单元1的数量确定的,所述第二队列A存储第二标识信息的数量小于或等于所述第二队列A的深度。通过这种方式,可根据不同的应用场景,高效快速地确定第二队列A的位宽和深度。
示例性地,第二队列A的位宽可以与第二标识信息的位宽相同,如图3所示,存储器访问电路包括了N个处理单元1,用于访问K个调度模块00,每个调度模块包括M个存储单元,可以将第二队列A的位宽设置为N×M。
第二队列A的深度表示第二队列A存储第二标识信息的最大数量,第二队列A存储的第二标识信息的数量小于或等于第二队列A的深度。其中,第二队列A的深度可以与第一队列4的深度保持一致,本公开对第二队列A的深度不作限制。
如图3所示,请求仲裁器9_1的输出端分别连接第二队列A_1的输入端、调度模块00_1中存储单元0_1_1~存储单元0_1_M的输入端;请求仲裁器9_2的输出端分别连接第二队列A_2的输入端、调度模块00_2中存储单元0_2_1~存储单元0_2_M的输入端;以此类推,请求仲裁器9_K的输出端分别连接第二队列A_K的输入端、调度模块00_K中存储单元0_K_1~存储单元0_K_M的输入端。
这样,请求仲裁器9_1可以对访问调度模块00_1的、来自处理单元1_1~处理单元1_N的不同的请求信息进行轮询仲裁(round robin),从N个请求信息中选出当前轮的一个目标请求信息发送至调度模块00_1,并将当前轮的目标请求信息对应的第二标识信息写入第二队列A_1。由于在每轮仲裁中,第二队列A_1可记录一个第二标识信息,经过多轮仲裁,第二队列A_1可记录请求仲裁器9_1的仲裁顺序,也即不同处理单元访问同一调度模块00_1的访问顺序。
其中,第二队列A_1写入的机制是:请求仲裁器9_1选出一个第二标识信息时再进行第二队列A_1的写入。例如,请求仲裁器9_1可以持续对来自处理单元1_1~处理单元1_N的请求信息进行轮询仲裁,第一轮选出来自处理单元1_N的请求信息,可以将其对应的第二标识信息1写入第二队列A_1;第二轮选出来自处理单元1_2的请求信息,可以将其对应的第二标识信息2写入第二队列A_1;第三轮选出来自处理单元1_1的请求信息,可以将其对应的第二标识信息3,写入第二队列A_1。在此情况下,第二队列A_1按照了请求仲裁器9_1的仲裁顺序(例如第二标识信息1指示的处理单元1_N先访问调度模块00_1,第二标识信息2指示的处理单元1_2再访问调度模块00_1,然后第二标识信息3指示的处理单元1_1访问调度模块00_1),在从队首至队尾的方向,依次存储了第二标识信息1、第二标识信息2、第二标识信息3。
类似的,请求仲裁器9_2~请求仲裁器9_K同样可以对来自处理单元1_1~处理单元1_N的请求信息进行轮询仲裁(round robin),按照各自的仲裁顺序分别向对应的调度模块00_2~调度模块00_K发送请求信息,以及按照各自的仲裁顺序分别将第二标识信息写入对应的第二队列A_2~第二队列A_K,此处不再赘述。
在一种可能实现的方式中,第二标识信息可以是多位的二进制数据,可以根据调度模块00中存储单元0的数量M和处理单元的数量N,将第二标识信息的位宽确定为M×N。
假设以调度模块00_1为例,在M和N均为3的情况下,也即存在3个处理单元1_1~处理单元1_3访问调度模块00_1,调度模块00_1包括存储单元0_1_1、存储单元0_1_2和存储单元0_1_3。
第二标识信息的位宽可以为9,右侧起第一位可用于指示处理单元1_1访问调度模块00中的存储单元0_1_1,1表示处理单元1_1生成的请求信息访问调度模块00_1中的存储单元0_1_1,0表示处理单元1_1生成的请求信息没有访问调度模块00_1中的存储单元0_1_1。
类似的,右侧起第二位可用于指示处理单元1_1访问调度模块00_1中的存储单元0_1_2,1表示处理单元1_1生成的请求信息访问调度模块00_1中的存储单元0_1_2,0表示处理单元1_1生成的请求信息没有访问调度模块00_1中的存储单元0_1_2。
右侧起第三位可用于指示处理单元1_1访问调度模块00_1中的存储单元0_1_3,1表示处理单元1_1生成的请求信息访问调度模块00_1中的存储单元0_1_3,0表示处理单元1_1生成的请求信息没有访问调度模块00_1中的存储单元0_1_3。
右侧起第四位可用于指示处理单元1_2访问调度模块00中的存储单元0_1_1,1表示处理单元1_2生成的请求信息访问调度模块00_1中的存储单元0_1_1,0表示处理单元1_2生成的请求信息没有访问调度模块00_1中的存储单元0_1_1。
类似的,右侧起第五位可用于指示处理单元1_2访问调度模块00_1中的存储单元0_1_2,1表示处理单元1_2生成的请求信息访问调度模块00_1中的存储单元0_1_2,0表示处理单元1_2生成的请求信息没有访问调度模块00_1中的存储单元0_1_2。
右侧起第六位可用于指示处理单元1_2访问调度模块00_1中的存储单元0_1_3,1表示处理单元1_2生成的请求信息访问调度模块00_1中的存储单元0_1_3,0表示处理单元1_2生成的请求信息没有访问调度模块00_1中的存储单元0_1_3。
右侧起第七位可用于指示处理单元1_3访问调度模块00中的存储单元0_1_1,1表示处理单元1_3生成的请求信息访问调度模块00_1中的存储单元0_1_1,0表示处理单元1_3生成的请求信息没有访问调度模块00_1中的存储单元0_1_1。
类似的,右侧起第八位可用于指示处理单元1_3访问调度模块00_1中的存储单元0_1_2,1表示处理单元1_3生成的请求信息访问调度模块00_1中的存储单元0_1_2,0表示处理单元1_3生成的请求信息没有访问调度模块00_1中的存储单元0_1_2。
右侧起第九位可用于指示处理单元1_3访问调度模块00_1中的存储单元0_1_3,1表示处理单元1_3生成的请求信息访问调度模块00_1中的存储单元0_1_3,0表示处理单元1_3生成的请求信息没有访问调度模块00_1中的存储单元0_1_3。
例如假设第二标识信息为111000000,说明处理单元1_3访问调度模块00_1中存储单元0_1_1、存储单元0_1_2和存储单元0_1_3的请求信息。又例如,假设第二标识信息为000000101,处理单元1_1访问调度模块00_1中存储单元0_1_1和存储单元0_1_3的请求信息。又例如,假设第二标识信息为000001000,处理单元1_2生成访问调度模块00_1中存储单元0_1_1的请求信息。
应当理解,在第二标识信息中每M位可分别对应一个不同的处理单元1,在对应同一处理单元1的M位信息中,每位可对应一个不同的存储单元0,可根据实际的应用场景,确定第二标识信息的位宽,以及每位对应的处理单元1和存储单元0,本公开对此不作限制。
通过这种方式,在多个不同的处理单元1访问同一调度模块00时,可以通过相应的请求仲裁器9按照仲裁顺序确定访问调度模块00的顺序,并可以通过第二队列A记录该仲裁顺序,也即多个处理单元1访问所述存储单元0的访问顺序。并且,第二队列A还按照访问顺序记录了每个处理单元1对应的第二标识信息,有利于在存储单元0向处理单元1反馈返回数据的情况下,通过第二标识信息将返回数据送入对应的数据缓存器7。
如图3所示,调度模块00_1中存储单元0_1_1的输出端和第二队列A_1的输出端,分别连接第二调度选择器B_1_1的输入端,第二调度选择器B_1_1的输出端按照一连多的方式,分别连接数据缓存器7_11_1的输入端~数据缓存器7_11_N的输入端;调度模块00_1中存储单元0_1_2的输出端和第二队列A_1的输出端,分别连接第二调度选择器B_1_2的输入端,第二调度选择器B_1_2的输出端按照一连多的方式,分别连接数据缓存器7_12_1的输入端~数据缓存器7_12_N的输入端;以此类推,调度模块00_1中存储单元0_1_M的输出端和第二队列A_1的输出端,分别连接第二调度选择器B_1_M的输入端,第二调度选择器B_1_M的输出端按照一连多的方式,分别连接数据缓存器7_1M_1的输入端~数据缓存器7_1M_N的输入端。
其中,第二队列A_1的输出端按照一连多的方式,分别连接第二调度选择器B_1_1输入端~第二调度选择器B_1_M的输入端,第二调度选择器B_1_1~第二调度选择器B_1_M可以从第二队列A_1的队首读出的第二标识信息,将接收到的返回数据发送至第二标识信息指示的数据缓存器。并且,当调度模块00_1中存储单元0响应请求信息向对应的第二调度选择器B发送返回数据之后,第二调度选择器B会将第二队列A_1队首记录的第二标识信息中对应存储单元0的标识位置0,当队首的第二标识信息中所有比特位全为0,可以将第二标识信息出队。
例如,在M和N均为3的情况下,也即存在3个处理单元1_1~处理单元1_3访问调度模块00_1,调度模块00_1包括存储单元0_1_1、存储单元0_1_2和存储单元0_1_3。
假设第二队列A_1队首记录的第二标识信息为000000101,说明处理单元1_1访问调度模块00_1中存储单元0_1_1和存储单元0_1_3的请求信息。当存储单元0_1_3响应请求信息生成返回数据,存储单元0_1_3对应的第二调度选择器B_1_3会根据第二标识信息左侧第三位的1,将该返回数据发送至数据缓存器7_11_3,并将第二队列A_1队首的第二标识信息中左侧第三位的1清除。同步地,当存储单元0_1_1响应请求信息生成返回数据,存储单元0_1_1对应的第二调度选择器B_1_1会根据第二标识信息左侧第一位的1,将该返回数据发送至数据缓存器7_11_1,并将第二队列A_1队首的第二标识信息中左侧第一位的1清除。当队首的第二标识信息中所有比特位全为0,可以将第二标识信息出队。
假设第二队列A_1队首记录的第二标识信息为000010000,说明处理单元1_2访问调度模块00_1中存储单元0_1_2的请求信息。当存储单元0_1_2响应请求信息生成返回数据,存储单元0_1_2对应的第二调度选择器B_1_2会根据第二标识信息左侧第五位的1,将该返回数据发送至数据缓存器7_11_2,并将第二队列A_1队首的第二标识信息中左侧第五位的1清除。当队首的第二标识信息中所有比特位全为0,可以将第二标识信息出队。
调度模块00_2中存储单元0_2_1的输出端和第二队列A_2的输出端,分别连接第二调度选择器B_2_1的输入端,第二调度选择器B_2_1的输出端按照一连多的方式,分别连接数据缓存器7_21_1的输入端~数据缓存器7_21_N的输入端;调度模块00_2中存储单元0_2_2的输出端和第二队列A_2的输出端,分别连接第二调度选择器B_2_2的输入端,第二调度选择器B_2_2的输出端按照一连多的方式,分别连接数据缓存器7_22_1的输入端~数据缓存器7_22_N的输入端;以此类推,调度模块00_2中存储单元0_2_M的输出端和第二队列A_2的输出端,分别连接第二调度选择器B_2_M的输入端,第二调度选择器B_2_M的输出端按照一连多的方式,分别连接数据缓存器7_2M_1的输入端~数据缓存器7_2M_N的输入端。
其中,第二队列A_2的输出端按照一连多的方式,分别连接第二调度选择器B_2_1输入端~第二调度选择器B_2_M的输入端,第二调度选择器B_2_1~第二调度选择器B_2_M可以从第二队列A_2的队首读出的第二标识信息,将接收到的返回数据发送至第二标识信息指示的数据缓存器。并且,当调度模块00_2中存储单元0响应请求信息向对应的第二调度选择器B发送返回数据之后,第二调度选择器B会将第二队列A_2队首记录的第二标识信息中对应存储单元0的标识位置0,当队首的第二标识信息中所有比特位全为0,可以将第二标识信息出队。
以此类推,调度模块00_K中存储单元0_K_1的输出端和第二队列A_K的输出端,分别连接第二调度选择器B_K_1的输入端,第二调度选择器B_K_1的输出端按照一连多的方式,分别连接数据缓存器7_K1_1的输入端~数据缓存器7_K1_N的输入端。调度模块00_K中存储单元0_K_2的输出端和第二队列A_K的输出端,分别连接第二调度选择器B_K_2的输入端,第二调度选择器B_K_2的输出端按照一连多的方式,分别连接数据缓存器7_K2_1的输入端~数据缓存器7_K2_N的输入端。以此类推,调度模块00_K中存储单元0_K_M的输出端和第二队列A_K的输出端,分别连接第二调度选择器B_K_M的输入端,第二调度选择器B_K_M的输出端按照一连多的方式,分别连接数据缓存器7_KM_1的输入端~数据缓存器7_KM_N的输入端。
其中,第二队列A_K的输出端按照一连多的方式,分别连接第二调度选择器B_K_1输入端~第二调度选择器B_K_M的输入端,第二调度选择器B_K_1~第二调度选择器B_K_M可以从第二队列A_K的队首读出的第二标识信息,将接收到的返回数据发送至第二标识信息指示的数据缓存器。并且,当调度模块00_K中存储单元0响应请求信息向对应的第二调度选择器B发送返回数据之后,第二调度选择器B会将第二队列A_K队首记录的第二标识信息中对应存储单元0的标识位置0,当队首的第二标识信息中所有比特位全为0,可以将第二标识信息出队。
如图3所示,对应调度模块00_1中M个存储单元0的M个数据缓存器7_11_1~数据缓存器7_1M_1的输出端,对应调度模块00_2中M个存储单元0的M个数据缓存器7_21_1~数据缓存器7_2M_1的输出端,直至对应调度模块00_K中M个存储单元0的M个数据缓存器7_K1_1~数据缓存器7_KM_1的输出端,这M×K个数据缓存器7的输出端,以及第一队列4_1的输出端,连接处理单元选择器5_1的输入端。
对应K个调度模块00_1~调度模块00_K中的K个存储单元0_1_1~存储单元0_K_1的K个数据缓存器7_11_1~数据缓存器7_K1_1的输出端连接数据仲裁器6_1_1;对应K个调度模块00_1~调度模块00_K中的K个存储单元0_1_2~存储单元0_K_2的K个数据缓存器7_12_1~数据缓存器7_K2_1的输出端连接数据仲裁器6_1_2;以此类推,对应K个调度模块00_1~调度模块00_K中的K个存储单元0_1_M~存储单元0_K_M的K个数据缓存器7_1M_1~数据缓存器7_KM_1的输出端连接数据仲裁器6_1_M。
处理单元选择器5_1的输出端、M个数据仲裁器6_1_1~数据仲裁器6_1_M的输出端、配置信号连接第二状态选择模块3_1的输入端,第二状态选择模块3_1的输出端连接处理单元1_1的输入端。
类似地,对应调度模块00_1中M个存储单元0的M个数据缓存器7_11_2~数据缓存器7_1M_2的输出端,对应调度模块00_2中M个存储单元0的M个数据缓存器7_21_2~数据缓存器7_2M_2的输出端,直至对应调度模块00_K中M个存储单元0的M个数据缓存器7_K1_2~数据缓存器7_KM_2的输出端,这M×K个数据缓存器7的输出端,以及第一队列4_2的输出端,连接处理单元选择器5_2的输入端。
对应K个调度模块00_1~调度模块00_K中的K个存储单元0_1_1~存储单元0_K_1的K个数据缓存器7_11_2~数据缓存器7_K1_2的输出端连接数据仲裁器6_2_1;对应K个调度模块00_1~调度模块00_K中的K个存储单元0_1_2~存储单元0_K_2的K个数据缓存器7_12_2~数据缓存器7_K2_2的输出端连接数据仲裁器6_2_2;以此类推,对应K个调度模块00_1~调度模块00_K中的K个存储单元0_1_M~存储单元0_K_M的K个数据缓存器7_1M_2~数据缓存器7_KM_2的输出端连接数据仲裁器6_2_M。
处理单元选择器5_2的输出端、M个数据仲裁器6_2_1~数据仲裁器6_2_M的输出端、配置信号连接第二状态选择模块3_2的输入端,第二状态选择模块3_2的输出端连接处理单元1_2的输入端。
以此类推,对应调度模块00_1中M个存储单元0的M个数据缓存器7_11_N~数据缓存器7_1M_N的输出端,对应调度模块00_2中M个存储单元0的M个数据缓存器7_21_N~数据缓存器7_2M_N的输出端,直至对应调度模块00_K中M个存储单元0的M个数据缓存器7_K1_N~数据缓存器7_KM_N的输出端,这M×K个数据缓存器7的输出端,以及第一队列4_N的输出端按照多连一的方式,连接处理单元选择器5_N的输入端。
对应K个调度模块00_1~调度模块00_K中的K个存储单元0_1_1~存储单元0_K_1的K个数据缓存器7_11_N~数据缓存器7_K1_N的输出端连接数据仲裁器6_N_1;对应K个调度模块00_1~调度模块00_K中的K个存储单元0_1_2~存储单元0_K_2的K个数据缓存器7_12_N~数据缓存器7_K2_N的输出端连接数据仲裁器6_N_2;以此类推,对应K个调度模块00_1~调度模块00_K中的K个存储单元0_1_M~存储单元0_K_M的K个数据缓存器7_1M_N~数据缓存器7_KM_N的输出端连接数据仲裁器6_N_M。
处理单元选择器5_N的输出端、M个数据仲裁器6_N_1~数据仲裁器6_N_M的输出端、配置信号连接第二状态选择模块3_N的输入端,第二状态选择模块3_N的输出端连接处理单元1_1的输入端。
应当理解,所述第二状态选择模块3可根据配置信号,选择处理单元选择器5工作(保序模式),或者选择多个数据仲裁器6工作(对应不保序模式),其中,处理单元选择器5可根据从第一队列4读取的第一标识信息,将从第一标识信息指示的存储单元0对应的数据缓存器7中读取的返回数据传输至处理单元1;或者,多个数据仲裁器6分别对从数据缓存器7中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1。具体可参考上文,此处不再赘述。
在一种可能的实现方式中,所述存储单元0响应所述请求信息生成返回数据和用于指示调度模块00的调度标识,所述多个数据缓存器7用于存储所述存储单元0返回给不同处理单元1的返回数据和所述调度标识,所述第二调度选择器B用于根据从所述第二队列A读取的第二标识信息,将所述存储单元0的返回数据和所述调度标识传输至所述第二标识信息指示的数据缓存器7。
其中,所述调度标识可以根据请求信息中的第一标识信息确定,例如,第一标识信息可以是位宽为M×K比特(bit)的二进制数据,每M位信息可对应一个不同的调度模块00。假设调度标识1用于指示调度模块00_1,调度标识2用于指示调度模块00_2,以此类推,调度标识K用于指示调度模块00_K。在此情况下,如果在第一标识信息中对应调度模块00_1的M位信息中任一位为1,可以确定出该请求信息对应调度标识1;如果在第一标识信息中对应调度模块00_2的M位信息中任一位为1,可以确定出该请求信息对应调度标识2;以此类推,如果在第一标识信息中对应调度模块00_K的M位信息中任一位为1,可以确定出该请求信息对应调度标识K。
在所述配置信号为低电平的情况下,所述第二状态选择模块指示多个数据仲裁器6分别对从数据缓存器7中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据、所述调度标识传输至处理单元1。
在所述配置信号为高电平的情况下,所述第二状态选择模块生成保序标识,所述第二状态选择模块指示所述处理单元选择器5根据从所述第一队列4读取的第一标识信息,将从所述第一标识信息指示的存储单元0对应的数据缓存器7中读取的返回数据、所述保序标识传输至处理单元1。
应当理解,将各存储单元0的返回数据和调度标识(或保序标识)发送至处理单元1的过程,可参考上文中将各存储单元0的返回数据发送至处理单元1的过程,此处不再赘述。
这样,在非保序模式下(对应配置信号为高电平),可支持返回数据的非保序返回,并且返回每个返回数据对应的调度标识,使处理单元1获取当前返回数据相关的调度信息,便于处理单元1后续操作(例如基于返回数据的调试操作、校验操作等)。
在保序模式下(配置信号为高电平),可以返回每个返回数据对应的保序标识(区别与用于指示调度模块00的调度标识),处理单元1检测到保序标识,就可以将当前收到的返回数据确定为保序模式下的返回数据。
在一种可能的实现方式中,其特征在于,所述存储器访问电路还包括至少一个第一缓冲器、至少一个第二缓冲器,所述请求仲裁器9的输出端分别通过至少一个第一缓冲器连接对应的存储单元0的输入端,每个存储单元0的输出端通过至少一个第二缓冲器连接所述第二调度选择器B的输入端。
在存储器访问电路中设置第一缓冲器,增强了请求仲裁器9向存储单元0进行数据传输的驱动力,减少了在布线(floorplan)过程中因走线过长,导致信号驱动能力不足的概率。例如,在实际的应用中,在请求仲裁器9与存储单元0的连线比较长的场景下,如果不设置第一缓冲器,信号会随着芯片(或电路板)上的走线而衰减,导致系统频率不能提高,性能下降的情况。通过在请求仲裁器9与存储单元0之间设置第一缓冲器,可以为信号传输提供更强的驱动力,使请求仲裁器9发出的请求信息可以正确传输至存储单元0。而且,在存储器访问电路中设置第一缓冲器,还可以通过第一缓冲器存储数据,将一次的访问请求(例如由请求仲裁器9仲裁后的请求信息)进行缓存,其中,第一缓冲器与请求仲裁器9之间可采用握手(Handshake)的方式进行数据交互。
在存储器访问电路中设置第二缓冲器,增强了存储单元0向对应的第二调度选择器B进行数据传输的驱动力,减少了在布线(floorplan)过程中因走线过长,导致信号驱动能力不足的概率。例如,在实际的应用中,在存储单元0与第二调度选择器B的连线比较长的场景下,如果不设置第二缓冲器,信号会随着芯片(或电路板)上的走线而衰减,导致系统频率不能提高,性能下降的情况。通过在存储单元0与第二调度选择器B之间设置第二缓冲器,可以为信号传输提供更强的驱动力,使存储单元0发出的返回数据可以正确传输至对应的第二调度选择器B。
而且,在存储器访问电路中设置第二缓冲器,还可以通过第二缓冲器存储数据,将一次的返回数据(例如存储单元0响应请求信息所发送的返回数据)进行缓存,其中,第二缓冲器与第二调度选择器B之间可采用握手(Handshake)的方式进行数据交互。
本公开实施例的存储器访问电路中,实现了多个处理单元1访问不同调度模块00中的一个或多个存储单元0,可通过各处理单元1的配置信号选择每个处理单元1的工作模式(例如保序模式或不保序模式),使存储器访问电路具有更强的适配性。在保序模式下,当多个处理单元1访问存储单元0时,可以通过第一队列4记录处理单元1发起对各存储单元0访问时的访问顺序,当存储单元0回复返回数据时,可通过多个数据缓存器7对各存储单元0的返回数据进行缓存,每个处理单元1按照第一队列4记录的访问顺序从多个数据缓存器7读取各存储单元0的返回数据,使得处理单元1后发送的请求信息的返回数据先缓存在数据缓存器7中,等待先发起请求信息的返回数据,处理单元1获取到保序回复的返回数据;在非保序模式下,无需第一队列4记录处理单元1的访问顺序,支持返回数据的非保序返回,处理单元1获取到非保序回复的返回数据。
图4示出根据本公开实施例的存储器访问方法的流程图,所述存储器访问方法应用于如1所示的存储器访问电路,所述存储器访问电路用于访问多个存储单元0,所述存储器访问电路包括:配置模块C、多个处理单元1、与每个处理单元1对应的状态选择模块D。
如图4所示,所述存储器访问方法包括:在步骤S11中,所述处理单元1生成访问存储单元0的请求信息;在步骤S12中,所述状态选择模块D根据配置信号选择所述配置模块C用于以下方式中的一种:所述配置模块C将来自所述处理单元1的请求信息发送至存储单元0,并记录所述处理单元1访问存储单元0的访问顺序;或者,所述配置模块C将来自所述处理单元1的请求信息发送至存储单元0。
在一种可能的实现方式中,结合图2,所述存储器访问电路用于访问多个调度模块00,每个调度模块00包括多个存储单元0,步骤S11可包括:所述处理单元1生成访问调度模块00中一个或多个存储单元0的请求信息,所述请求信息包括用于指示调度模块00中一个或多个存储单元0的第一标识信息。
在一种可能的实现方式中,结合图2,所述状态选择模块D包括第一状态选择模块2、所述配置模块C包括与每个处理单元1对应的第一队列4;步骤S12可包括:所述第一状态选择模块2根据所述配置信号选择是否指示所述第一队列4按照所述处理单元1的访问顺序存储所述第一标识信息,所述第一队列4存在的多个第一标识信息用于记录所述第一队列4对应的所述处理单元1访问存储单元0的访问顺序。
在一种可能的实现方式中,结合图3,所述配置模块C还包括:与每个处理单元1对应的第一调度选择器8,与每个调度模块00对应的请求仲裁器9、第二队列A;步骤S12可包括:所述第一调度选择器8将从所述处理单元1接收到的请求信息发送至所述第一标识信息指示的调度模块00的请求仲裁器9;所述请求仲裁器9对来自多个处理单元1的请求信息进行仲裁,按照请求信息的仲裁顺序向存储单元0发送请求信息,以及按照请求信息的所述仲裁顺序将所述多个处理单元1的第二标识信息写入第二队列A,所述第二标识信息用于指示所述处理单元1访问调度模块00中一个或多个存储单元0。
在一种可能的实现方式中,结合图2或图3,步骤S12可包括:所述配置信号指示所述第一状态选择模块2,通过所述配置模块C配置存储器访问电路的工作状态;在所述配置信号为高电平的情况下,所述第一状态选择模块2指示所述第一队列4按照所述处理单元1的访问顺序存储所述第一标识信息,或者,在所述配置信号为低电平的情况下,所述第一状态选择模块2指示所述第一队列4停止工作。
在一种可能的实现方式中,结合图3,任一第一状态选择模块2的输入端分别连接对应的处理单元1的输出端、所述配置信号,所述第一状态选择模块2的输出端连接与所述处理单元1对应的第一队列4的输入端,所述处理单元1的输出端还连接对应的第一调度选择器8的输入端,所述第一调度选择器8的输出端分别连接每个请求仲裁器9的输入端;每个请求仲裁器9的输出端连接对应的调度模块00中每个存储单元0的输入端、与所述调度模块00对应的第二队列A的输入端。
在一种可能的实现方式中,所述第一队列4的位宽是根据所述调度模块00的数量和每个调度模块00中存储单元0的数量确定的,所述第一队列4存储第一标识信息的数量小于或等于所述第一队列4的深度;所述第二队列A的位宽是根据所述调度模块00中存储单元0的数量和处理单元1的数量确定的,所述第二队列A存储第二标识信息的数量小于或等于所述第二队列A的深度;所述数据缓存器7的数量是根据所述存储单元0的数量和所述处理单元1的数量确定的,所述数据缓存器7存储返回数据的数量小于或等于所述数据缓存器7的深度。
图5示出根据本公开实施例的存储器访问方法的流程图,所述存储器访问方法应用于如图1所示的存储器访问电路,所述存储器访问电路用于访问多个存储单元0,所述存储器访问电路包括:配置模块C、多个处理单元1、与每个处理单元1对应的状态选择模块D。
如图5所示,所述存储器访问方法包括:在步骤S13中,所述存储单元0响应来自处理单元1的请求信息生成返回数据;在步骤S14中,所述状态选择模块D用于根据配置信号选择所述配置模块C用于以下方式中的一种:所述配置模块C根据记录的访问顺序,将来自存储单元0的返回数据传输至处理单元1;或者,所述配置模块C对来自存储单元0的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1。
在一种可能的实现方式中,结合图2或图3,所述状态选择模块D包括第二状态选择模块3,所述配置模块C包括与每个处理单元1对应的第一队列4、处理单元选择器5、多个数据仲裁器6,与每个存储单元0对应的多个数据缓存器7,其中,任一处理单元1的任一数据仲裁器6对应多个调度模块00中的一个不同的存储单元0,同一存储单元0对应的多个数据缓存器7分别对应不同的处理单元1;所述配置模块C根据记录的访问顺序,将来自存储单元0的返回数据传输至处理单元1,包括:所述多个数据缓存器7存储所述存储单元0返回给不同处理单元1的返回数据;所述处理单元选择器5根据从所述第一队列4读取的第一标识信息,将从所述第一标识信息指示的存储单元0对应的数据缓存器7中读取的返回数据传输至处理单元1;所述配置模块C对来自存储单元0的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1,包括:所述多个数据缓存器7存储所述存储单元0返回给不同处理单元1的返回数据;多个数据仲裁器6分别对从数据缓存器7中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1。
在一种可能的实现方式中,结合图3,所述配置模块C还包括:与每个调度模块00对应第二队列A,与每个存储单元0对应的第二调度选择器B,在所述多个数据缓存器7存储所述存储单元0返回给不同处理单元1的返回数据之前,所述方法还包括:所述第二调度选择器B根据从所述第二队列A读取的第二标识信息,将所述存储单元0的返回数据传输至所述第二标识信息指示的数据缓存器7。
在一种可能的实现方式中,结合图3,步骤S14可包括:所述配置信号指示所述第二状态选择模块3,通过所述配置模块C配置存储器访问电路的工作状态;在所述配置信号为高电平的情况下,所述第二状态选择模块3指示所述处理单元选择器5根据从所述第一队列4读取的第一标识信息,将从所述第一标识信息指示的存储单元0对应的数据缓存器7中读取的返回数据传输至处理单元1;或者,在所述配置信号为低电平的情况下,所述第二状态选择模块3指示多个数据仲裁器6分别对从数据缓存器7中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元1。
在一种可能的实现方式中,结合图3,任一第二调度选择器B的输入端连接对应的存储单元0的输出端、与所述存储单元0所属的调度模块00对应的所述第二队列A的输出端,任一第二调度选择器B的输出端分别连接多个数据缓存器7的输入端;连接同一第二调度选择器B的多个数据缓存器7的输出端分别连接不同的处理单元选择器5的输入端,每个处理单元选择器5的输入端还连接第一队列4的输出端,连接同一第二调度选择器B的多个数据缓存器7的输出端分别连接不同的处理单元1对应的数据仲裁器6的输入端;每个处理单元选择器5的输出端、与每个处理单元1对应的多个数据仲裁器6的输出端、所述配置信号连接所述第二状态选择模块3的输入端,所述第二状态选择模块3的输出端连接对应的处理单元1的输入端。
在一种可能的实现方式中,所述第一队列4的位宽是根据所述调度模块00的数量和每个调度模块00中存储单元0的数量确定的,所述第一队列4存储第一标识信息的数量小于或等于所述第一队列4的深度;所述第二队列A的位宽是根据所述调度模块00中存储单元0的数量和处理单元1的数量确定的,所述第二队列A存储第二标识信息的数量小于或等于所述第二队列A的深度;所述数据缓存器7的数量是根据所述存储单元0的数量和所述处理单元1的数量确定的,所述数据缓存器7存储返回数据的数量小于或等于所述数据缓存器7的深度。
在一种可能的实现方式中,结合图3,所述存储器访问方法还包括:所述存储单元0响应所述请求信息生成返回数据和用于指示调度模块00的调度标识;所述多个数据缓存器7存储所述存储单元0返回给不同处理单元1的返回数据和所述调度标识;所述第二调度选择器B根据从所述第二队列A读取的第二标识信息,将所述存储单元0的返回数据和所述调度标识传输至所述第二标识信息指示的数据缓存器7;在所述配置信号为低电平的情况下,所述第二状态选择模块3指示多个数据仲裁器6分别对从数据缓存器7中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据、所述调度标识传输至处理单元1,或者,在所述配置信号为高电平的情况下,所述第二状态选择模块3生成保序标识,所述第二状态选择模块3指示所述处理单元选择器5根据从所述第一队列4读取的第一标识信息,将从所述第一标识信息指示的存储单元0对应的数据缓存器7中读取的返回数据、所述保序标识传输至处理单元1。
根据本公开的一方面,提供了一种集成电路,所述集成电路包括如上所述的存储器访问电路。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括如上所述的存储器访问电路。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(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 (19)
1.一种存储器访问电路,其特征在于,所述存储器访问电路用于访问多个存储单元,所述存储器访问电路包括:配置模块、多个处理单元、与每个处理单元对应的状态选择模块;所述配置模块包括与每个处理单元对应的第一队列,所述状态选择模块包括第一状态选择模块、第二状态选择模块;
所述处理单元用于生成访问存储单元的请求信息,所述存储单元用于响应所述请求信息生成返回数据,所述状态选择模块用于根据配置信号选择所述配置模块用于以下方式中的一种配置存储器访问电路的工作状态:
所述配置模块将来自所述处理单元的请求信息发送至存储单元,并记录所述处理单元访问存储单元的访问顺序;所述配置模块根据记录的所述访问顺序,将来自存储单元的返回数据传输至处理单元;所述第一状态选择模块指示所述第一队列按照所述处理单元的访问顺序存储第一标识信息,所述第二状态选择模块指示所述配置模块根据从所述第一队列读取的第一标识信息,将所述第一标识信息指示的存储单元的返回数据传输至处理单元;
或者,
所述配置模块将来自所述处理单元的请求信息发送至存储单元;对来自存储单元的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元;所述第一状态选择模块指示所述第一队列停止工作,所述第二状态选择模块指示所述配置模块对返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
2.根据权利要求1所述的存储器访问电路,其特征在于,所述存储器访问电路包括多个调度模块,每个调度模块包括多个存储单元,所述处理单元用于生成访问调度模块中一个或多个存储单元的请求信息,所述请求信息包括用于指示调度模块中一个或多个存储单元的第一标识信息。
3.根据权利要求2所述的存储器访问电路,其特征在于,所述第一状态选择模块用于根据所述配置信号选择是否指示所述第一队列按照所述处理单元的访问顺序存储所述第一标识信息,所述第一队列存在的多个第一标识信息用于记录所述第一队列对应的所述处理单元访问存储单元的访问顺序。
4.根据权利要求3所述的存储器访问电路,其特征在于,所述配置模块包括与每个处理单元对应的处理单元选择器、多个数据仲裁器、与每个存储单元对应的多个数据缓存器,其中,任一处理单元的任一数据仲裁器对应多个调度模块中的一个不同的存储单元,同一存储单元对应的多个数据缓存器分别对应不同的处理单元;
所述多个数据缓存器用于存储所述存储单元返回给不同处理单元的返回数据,所述第二状态选择模块用于根据配置信号选择所述配置模块用于以下方式中的一种:
所述处理单元选择器根据从所述第一队列读取的第一标识信息,将从所述第一标识信息指示的存储单元对应的数据缓存器中读取的返回数据传输至处理单元,或者,
多个数据仲裁器分别对从数据缓存器中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
5.根据权利要求4所述的存储器访问电路,其特征在于,所述配置信号用于指示所述第一状态选择模块和所述第二状态选择模块,通过所述配置模块配置存储器访问电路的工作状态,
在所述配置信号为高电平的情况下,所述第一状态选择模块指示所述第一队列按照所述处理单元的访问顺序存储所述第一标识信息,所述第二状态选择模块指示所述处理单元选择器根据从所述第一队列读取的第一标识信息,将从所述第一标识信息指示的存储单元对应的数据缓存器中读取的返回数据传输至处理单元;
或者,在所述配置信号为低电平的情况下,所述第一状态选择模块指示所述第一队列停止工作,所述第二状态选择模块指示多个数据仲裁器分别对从数据缓存器中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
6.根据权利要求4所述的存储器访问电路,其特征在于,所述配置模块还包括:与每个处理单元对应的第一调度选择器,与每个调度模块对应的请求仲裁器、第二队列,与每个存储单元对应的第二调度选择器;
所述第一调度选择器用于将从所述处理单元接收到的请求信息发送至所述第一标识信息指示的调度模块的请求仲裁器;
所述请求仲裁器用于对来自多个处理单元的请求信息进行仲裁,按照请求信息的仲裁顺序向对应的调度模块的存储单元发送请求信息,以及按照请求信息的所述仲裁顺序将所述多个处理单元的第二标识信息写入第二队列,所述第二标识信息用于指示所述处理单元访问调度模块中一个或多个存储单元;
所述第二调度选择器用于根据从所述第二队列读取的第二标识信息,将所述存储单元的返回数据传输至数据缓存器。
7.根据权利要求6所述的存储器访问电路,其特征在于,任一第一状态选择模块的输入端分别连接对应的处理单元的输出端、所述配置信号,所述第一状态选择模块的输出端连接与所述处理单元对应的第一队列的输入端,
所述处理单元的输出端还连接对应的第一调度选择器的输入端,所述第一调度选择器的输出端分别连接每个请求仲裁器的输入端;
每个请求仲裁器的输出端连接对应的调度模块中每个存储单元的输入端、与所述调度模块对应的第二队列的输入端;
任一第二调度选择器的输入端连接对应的存储单元的输出端、与所述存储单元所属的调度模块对应的所述第二队列的输出端,任一第二调度选择器的输出端分别连接多个数据缓存器的输入端;
连接同一第二调度选择器的多个数据缓存器的输出端分别连接不同的处理单元选择器的输入端,每个处理单元选择器的输入端还连接第一队列的输出端,
连接同一第二调度选择器的多个数据缓存器的输出端分别连接不同的处理单元对应的数据仲裁器的输入端;
每个处理单元选择器的输出端、与每个处理单元对应的多个数据仲裁器的输出端、所述配置信号连接所述第二状态选择模块的输入端,所述第二状态选择模块的输出端连接对应的处理单元的输入端。
8.根据权利要求6所述的存储器访问电路,其特征在于,所述第一队列的位宽是根据所述调度模块的数量和每个调度模块中存储单元的数量确定的,所述第一队列存储第一标识信息的数量小于或等于所述第一队列的深度;
所述第二队列的位宽是根据所述调度模块中存储单元的数量和处理单元的数量确定的,所述第二队列存储第二标识信息的数量小于或等于所述第二队列的深度;
所述数据缓存器的数量是根据所述存储单元的数量和所述处理单元的数量确定的,所述数据缓存器存储返回数据的数量小于或等于所述数据缓存器的深度。
9.根据权利要求6所述的存储器访问电路,其特征在于,所述存储单元响应所述请求信息生成返回数据和用于指示调度模块的调度标识,所述多个数据缓存器用于存储所述存储单元返回给不同处理单元的返回数据和所述调度标识,所述第二调度选择器用于根据从所述第二队列读取的第二标识信息,将所述存储单元的返回数据和所述调度标识传输至所述第二标识信息指示的数据缓存器,
在所述配置信号为低电平的情况下,所述第二状态选择模块指示多个数据仲裁器分别对从数据缓存器中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据、所述调度标识传输至处理单元。
10.根据权利要求6所述的存储器访问电路,其特征在于,在所述配置信号为高电平的情况下,所述第二状态选择模块生成保序标识,所述第二状态选择模块指示所述处理单元选择器根据从所述第一队列读取的第一标识信息,将从所述第一标识信息指示的存储单元对应的数据缓存器中读取的返回数据、所述保序标识传输至处理单元。
11.根据权利要求6所述的存储器访问电路,其特征在于,所述存储器访问电路还包括至少一个第一缓冲器、至少一个第二缓冲器,所述请求仲裁器的输出端分别通过至少一个第一缓冲器连接对应的存储单元的输入端,每个存储单元的输出端通过至少一个第二缓冲器连接所述第二调度选择器的输入端。
12.一种存储器访问方法,其特征在于,所述存储器访问方法应用于存储器访问电路,所述存储器访问电路用于访问多个存储单元,所述存储器访问电路包括:配置模块、多个处理单元、与每个处理单元对应的状态选择模块;所述配置模块包括与每个处理单元对应的第一队列,所述状态选择模块包括第一状态选择模块、第二状态选择模块;
所述存储器访问方法包括:
所述处理单元生成访问存储单元的请求信息,所述存储单元响应所述请求信息生成返回数据;
所述状态选择模块根据配置信号选择所述配置模块用于以下方式中的一种配置存储器访问电路的工作状态:
所述配置模块将来自所述处理单元的请求信息发送至存储单元,并记录所述处理单元访问存储单元的访问顺序;所述配置模块根据记录的所述访问顺序,将来自存储单元的返回数据传输至处理单元;所述第一状态选择模块指示所述第一队列按照所述处理单元的访问顺序存储第一标识信息,所述第二状态选择模块指示所述配置模块根据从所述第一队列读取的第一标识信息,将所述第一标识信息指示的存储单元的返回数据传输至处理单元;
或者,
所述配置模块将来自所述处理单元的请求信息发送至存储单元;对来自存储单元的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元;所述第一状态选择模块指示所述第一队列停止工作,所述第二状态选择模块指示所述配置模块对返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
13.根据权利要求12所述的存储器访问方法,其特征在于,所述存储器访问电路包括多个调度模块,每个调度模块包括多个存储单元,
所述处理单元生成访问存储单元的请求信息,包括:
所述处理单元生成访问调度模块中一个或多个存储单元的请求信息,所述请求信息包括用于指示调度模块中一个或多个存储单元的第一标识信息。
14.根据权利要求13所述的存储器访问方法,其特征在于,所述状态选择模块根据配置信号选择所述配置模块用于以下方式中的一种,包括:
所述第一状态选择模块根据所述配置信号选择是否指示所述第一队列按照所述处理单元的访问顺序存储所述第一标识信息,所述第一队列存在的多个第一标识信息用于记录所述第一队列对应的所述处理单元访问存储单元的访问顺序。
15.根据权利要求14所述的存储器访问方法,其特征在于,所述配置模块还包括:与每个处理单元对应的第一调度选择器,与每个调度模块对应的请求仲裁器、第二队列;
所述配置模块将来自所述处理单元的请求信息发送至存储单元,包括:
所述第一调度选择器将从所述处理单元接收到的请求信息发送至所述第一标识信息指示的调度模块的请求仲裁器;
所述请求仲裁器对来自多个处理单元的请求信息进行仲裁,按照请求信息的仲裁顺序向对应的调度模块的存储单元发送请求信息,以及按照请求信息的所述仲裁顺序将所述多个处理单元的第二标识信息写入第二队列,所述第二标识信息用于指示所述处理单元访问调度模块中一个或多个存储单元。
16.根据权利要求12所述的存储器访问方法,其特征在于,所述配置模块包括与每个处理单元对应的处理单元选择器、多个数据仲裁器,与每个存储单元对应的多个数据缓存器,其中,任一处理单元的任一数据仲裁器对应多个调度模块中的一个不同的存储单元,同一存储单元对应的多个数据缓存器分别对应不同的处理单元;
所述配置模块根据记录的访问顺序,将来自存储单元的返回数据传输至处理单元,包括:
所述多个数据缓存器存储所述存储单元返回给不同处理单元的返回数据;
所述处理单元选择器根据从所述第一队列读取的第一标识信息,将从所述第一标识信息指示的存储单元对应的数据缓存器中读取的返回数据传输至处理单元;
所述配置模块对来自存储单元的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元,包括:
所述多个数据缓存器存储所述存储单元返回给不同处理单元的返回数据;
多个数据仲裁器分别对从数据缓存器中读取的返回数据进行仲裁,按照返回数据的仲裁顺序将返回数据传输至处理单元。
17.根据权利要求16所述的存储器访问方法,其特征在于,所述配置模块还包括:与每个调度模块对应第二队列,与每个存储单元对应的第二调度选择器,在所述多个数据缓存器存储所述存储单元返回给不同处理单元的返回数据之前,所述存储器访问方法还包括:
所述第二调度选择器根据从所述第二队列读取的第二标识信息,将所述存储单元的返回数据传输至数据缓存器。
18.一种集成电路,其特征在于,所述集成电路包括如权利要求1-11中任一项所述的存储器访问电路。
19.一种电子设备,其特征在于,所述电子设备包括如权利要求1-11中任一项所述的存储器访问电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310807723.1A CN116594570B (zh) | 2023-07-03 | 2023-07-03 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310807723.1A CN116594570B (zh) | 2023-07-03 | 2023-07-03 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116594570A CN116594570A (zh) | 2023-08-15 |
CN116594570B true CN116594570B (zh) | 2024-03-01 |
Family
ID=87611892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310807723.1A Active CN116594570B (zh) | 2023-07-03 | 2023-07-03 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116594570B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667733A (zh) * | 2009-10-30 | 2012-09-12 | 株式会社Ntt数据 | 数据访问装置、数据访问方法以及数据访问程序 |
CN105144128A (zh) * | 2013-04-23 | 2015-12-09 | Arm有限公司 | 存储器访问控制 |
CN108369562A (zh) * | 2015-12-01 | 2018-08-03 | 华为技术有限公司 | 具有增强型访问调度器的智能编码存储器架构 |
CN111258769A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据传输装置和方法 |
CN115033184A (zh) * | 2022-06-30 | 2022-09-09 | 上海阵量智能科技有限公司 | 访存处理装置、方法、处理器、芯片、板卡及电子设备 |
CN115113828A (zh) * | 2022-08-26 | 2022-09-27 | 瀚博半导体(上海)有限公司 | 存储器管理系统、方法、人工智能芯片、电子设备和介质 |
-
2023
- 2023-07-03 CN CN202310807723.1A patent/CN116594570B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667733A (zh) * | 2009-10-30 | 2012-09-12 | 株式会社Ntt数据 | 数据访问装置、数据访问方法以及数据访问程序 |
CN105144128A (zh) * | 2013-04-23 | 2015-12-09 | Arm有限公司 | 存储器访问控制 |
CN108369562A (zh) * | 2015-12-01 | 2018-08-03 | 华为技术有限公司 | 具有增强型访问调度器的智能编码存储器架构 |
CN111258769A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据传输装置和方法 |
CN115033184A (zh) * | 2022-06-30 | 2022-09-09 | 上海阵量智能科技有限公司 | 访存处理装置、方法、处理器、芯片、板卡及电子设备 |
CN115113828A (zh) * | 2022-08-26 | 2022-09-27 | 瀚博半导体(上海)有限公司 | 存储器管理系统、方法、人工智能芯片、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116594570A (zh) | 2023-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825436B (zh) | 应用于人工智能芯片的计算方法和人工智能芯片 | |
US11853767B2 (en) | Inter-core data processing method, system on chip and electronic device | |
CN115033184A (zh) | 访存处理装置、方法、处理器、芯片、板卡及电子设备 | |
WO2020147253A1 (zh) | 一种数据读写方法及装置、交换芯片及存储介质 | |
CN111400212A (zh) | 一种基于远程直接数据存取的传输方法、设备 | |
CN116737083B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116521096B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116661703B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN115827506A (zh) | 数据写入方法、数据读取方法、装置、处理核和处理器 | |
CN116578245B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN114691595A (zh) | 多核电路、数据交换方法、电子设备及存储介质 | |
CN116483584B (zh) | Gpu的任务处理方法、装置、电子设备和存储介质 | |
CN114035967A (zh) | 一种基于服务器的资源共享渲染方法和装置 | |
CN116594570B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116303126B (zh) | 缓存、数据的处理方法及电子设备 | |
CN102170401B (zh) | 一种数据的处理方法和设备 | |
CN116719479B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN111857546A (zh) | 用于处理数据的方法、网络适配器和计算机程序产品 | |
CN116521097B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116820344B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN109862044B (zh) | 一种转换装置、网络设备及数据传输方法 | |
CN117454823B (zh) | 一种芯片验证多端口激励控制方法、代理器、设备及介质 | |
CN116991593B (zh) | 操作指令处理方法、装置、设备及存储介质 | |
US11537457B2 (en) | Low latency remoting to accelerators | |
WO2018156379A1 (en) | Power aware arbitration for bus access |
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 |