CN116661703B - 存储器访问电路及存储器访问方法、集成电路和电子设备 - Google Patents
存储器访问电路及存储器访问方法、集成电路和电子设备 Download PDFInfo
- Publication number
- CN116661703B CN116661703B CN202310806900.4A CN202310806900A CN116661703B CN 116661703 B CN116661703 B CN 116661703B CN 202310806900 A CN202310806900 A CN 202310806900A CN 116661703 B CN116661703 B CN 116661703B
- Authority
- CN
- China
- Prior art keywords
- queue
- scheduling
- identifier
- request information
- schedule
- 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 49
- 238000012545 processing Methods 0.000 claims abstract description 542
- 239000000872 buffer Substances 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 23
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 6
- 238000004321 preservation Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008054 signal transmission Effects 0.000 description 3
- 230000002238 attenuated effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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
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)
- Bus Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及一种存储器访问电路及存储器访问方法、集成电路和电子设备,涉及电子技术领域,该存储器访问电路用于访问多个不同的存储单元,包括:调度管理模块、多个处理单元、与每个存储单元对应的仲裁器;处理单元将生成的请求信息发送至调度标识指示的存储单元的仲裁器,仲裁器对来自多个处理单元的请求信息进行仲裁,按照仲裁顺序向存储单元发送请求信息;调度管理模块按照多个仲裁器的仲裁顺序记录多个处理单元访问多个存储单元的请求顺序、存储来自多个存储单元的返回数据,以及根据记录的请求顺序取出返回数据至对应的处理单元。本公开实施例的存储器访问电路结构简单,实现了将存储单元的返回数据高效地准确地传输至处理单元。
Description
技术领域
本公开涉及电子技术领域,尤其涉及一种存储器访问电路及存储器访问方法、集成电路和电子设备。
背景技术
随着集成电路产业的快速发展,各类处理器芯片在各行各业中的应用越来越广泛,可以应用到网络通信、手机、机顶盒、液晶电视、医疗设备、安防设备、工控设备、智能电表、智能穿戴、物联网、汽车电子等场景。
在各类处理器芯片中,处理单元会访问存储单元以实现各种目标任务,其中,处理器芯片内的存储器访问电路可用于管理处理单元与存储单元之间的通信,存储器访问电路会直接影响整个处理器芯片的运行效率和稳定性。
发明内容
本公开提出了一种存储器访问技术方案。
根据本公开的一方面,提供了一种存储器访问电路,所述存储器访问电路用于访问多个不同的存储单元,所述存储器访问电路包括:调度管理模块、多个处理单元、与每个存储单元对应的仲裁器;所述处理单元用于将生成的请求信息发送至调度标识指示的存储单元的仲裁器,所述请求信息包括用于指示存储单元的调度标识;所述仲裁器用于对来自多个处理单元的请求信息进行仲裁,按照仲裁顺序向存储单元发送请求信息;所述调度管理模块用于:按照多个仲裁器的仲裁顺序记录多个处理单元访问多个存储单元的请求顺序;存储来自多个存储单元的返回数据,以及根据记录的所述请求顺序取出返回数据至对应的处理单元。
在一种可能的实现方式中,所述调度管理模块包括:调度管理单元、调度队列,每个仲裁器的输出端连接对应的存储单元的输入端,多个仲裁器的输出端连接所述调度管理单元的输入端,所述调度管理单元的输出端连接所述调度队列的输入端;所述调度管理单元用于根据多个仲裁器每次仲裁出的请求信息,指示所述调度队列按照仲裁顺序,记录每个请求信息的标识信息,所述调度队列记录的多个标识信息用于指示多个处理单元访问多个存储单元的请求顺序。
在一种可能的实现方式中,所述调度管理模块还包括数据队列,多个存储单元的输出端、所述调度管理单元的输出端连接所述调度队列的输入端,所述调度队列的输出端、多个存储单元的输出端连接所述数据队列的输入端,所述数据队列的输出端连接多个处理单元的输入端,所述调度队列用于响应于所述数据队列接收到任一存储单元的返回数据,根据记录的标识信息,指示所述数据队列存储多个存储单元的返回数据,以及所述调度队列响应于所述调度管理单元的指示,根据记录的标识信息从所述数据队列取出返回数据至所述标识信息指示的处理单元。
在一种可能的实现方式中,所述存储器访问电路还包括与每个处理单元对应的一个调度选择器,任一调度选择器的输入端连接对应的处理单元的输出端,任一调度选择器的输出端分别连接多个仲裁器的输入端;所述调度选择器用于将从所述处理单元接收到的请求信息发送至所述调度标识指示的存储单元的仲裁器。
在一种可能的实现方式中,所述调度管理单元包括与每个处理单元分别对应的一个读指针,所述调度管理单元用于:按照仲裁顺序,根据多个仲裁器每次仲裁出的请求信息,以及每次仲裁出的每个请求信息分别对应的处理单元的优先级,对来自不同处理单元的请求信息对应的读指针执行自加操作;根据每个自加操作后的读指针,确定每个请求信息的索引标识;将每次仲裁出的每个请求信息的所述调度标识、所述索引标识,发送至所述调度队列。
在一种可能的实现方式中,所述调度队列包括多组,每组分别用于记录同一处理单元访问不同存储单元的标识信息,每组包括多行,每行用于记录一个存储单元的标识信息,所述标识信息包括读标识、写标识、索引标识、调度标识,所述调度队列用于:响应于接收到仲裁出的来自不同处理单元的每个请求信息的所述调度标识、所述索引标识,分别在所述调度队列对应所述处理单元的组中,对每个请求信息的所述索引标识、所述调度标识执行入队操作,以及将每个请求信息的所述索引标识、所述调度标识所属的所述标识信息的写标识进行置位操作。
在一种可能的实现方式中,所述调度管理单元包括与每个处理单元分别对应的一个写指针,每个处理单元的写指针用于根据每个处理单元对多个存储单元的访问次数进行自加操作,其中,每个处理单元的写指针指示在所述调度队列中所述处理单元对应组中写入所述标识信息的当前行。
在一种可能的实现方式中,所述数据队列包括一列多行,每行用于存储一个返回数据;所述调度队列用于:响应于所述数据队列接收到任一存储单元的返回数据,按照从所述调度队列首行至尾行的方向,在每行中按照处理单元的优先级顺序,对每组记录的每个标识信息的所述调度标识进行检索,确定检索到的所述调度标识;在所述数据队列中,根据所述检索到的所述调度标识所属的所述标识信息的所述索引标识指示的位置,写入返回数据;对所述检索到的所述调度标识所属的所述标识信息的读标识进行置位操作。
在一种可能的实现方式中,所述调度队列还用于:在每组首行的所述标识信息中的读标识和写标识均为预设标识的情况下,从所述数据队列中每组首行的所述标识信息中所述索引标识指示的位置处,取出返回数据至对应的处理单元,以及对所述每组首行的标志信息执行出队操作。
在一种可能的实现方式中,所述存储器访问电路还包括至少一个第一缓冲器、至少一个第二缓冲器,每个仲裁器的输出端通过至少一个第一缓冲器连接对应的存储单元的输入端,每个存储单元的输出端通过至少一个第二缓冲器分别连接所述数据队列的输入端和所述调度队列的输入端。
根据本公开的一方面,提供了一种存储器访问方法,所述存储器访问方法应用于存储器访问电路,所述存储器访问电路用于访问多个不同的存储单元,所述存储器访问电路包括:调度管理模块、多个处理单元、与每个存储单元对应的仲裁器;所述存储器访问方法包括:每个处理单元生成用于访问存储单元的请求信息,所述请求信息包括用于指示存储单元的调度标识;每个处理单元将生成的请求信息发送至所述调度标识指示的存储单元的仲裁器;所述仲裁器对来自多个处理单元的请求信息进行仲裁,按照仲裁顺序向存储单元发送请求信息;所述调度管理模块按照多个仲裁器的仲裁顺序记录多个处理单元访问多个存储单元的请求顺序。
在一种可能的实现方式中,所述调度管理模块包括:调度管理单元、调度队列,每个仲裁器的输出端连接对应的存储单元的输入端,多个仲裁器的输出端连接所述调度管理单元的输入端,所述调度管理单元的输出端连接所述调度队列的输入端;所述调度管理模块按照多个仲裁器的仲裁顺序记录多个处理单元访问多个存储单元的请求顺序,包括:所述调度管理单元根据多个仲裁器每次仲裁出的请求信息,指示所述调度队列按照仲裁顺序,记录每个请求信息的标识信息;根据所述调度队列记录的多个标识信息,确定多个处理单元访问多个存储单元的请求顺序。
在一种可能的实现方式中,所述存储器访问电路还包括与每个处理单元对应的一个调度选择器,任一调度选择器的输入端连接对应的处理单元的输出端,任一调度选择器的输出端分别连接多个仲裁器的输入端;每个处理单元将生成的请求信息发送至所述调度标识指示的存储单元的仲裁器,包括:每个处理单元将生成的用于访问存储单元的请求信息发送至对应的调度选择器;所述调度选择器将从所述处理单元接收到的请求信息发送至所述调度标识指示的存储单元的仲裁器。
在一种可能的实现方式中,所述调度管理单元包括与每个处理单元分别对应的一个读指针,所述调度队列包括多组,每组分别用于记录同一处理单元访问不同存储单元的标识信息,每组包括多行,每行用于记录一个存储单元的标识信息,所述标识信息包括读标识、写标识、索引标识、调度标识;所述调度管理单元根据多个仲裁器每次仲裁出的请求信息,指示所述调度队列按照仲裁顺序,记录每个请求信息的标识信息,包括:所述调度管理单元按照仲裁顺序,根据多个仲裁器每次仲裁出的请求信息,以及每次仲裁出的每个请求信息分别对应的处理单元的优先级,对来自不同处理单元的请求信息对应的读指针执行自加操作;所述调度管理单元根据每个自加操作后的读指针,确定每个请求信息的索引标识;所述调度管理单元将每次仲裁出的每个请求信息的所述调度标识、所述索引标识,发送至所述调度队列;所述调度队列响应于接收到仲裁出的来自不同处理单元的每个请求信息的所述调度标识、所述索引标识,分别在所述调度队列对应所述处理单元的组中,对每个请求信息的所述索引标识、所述调度标识执行入队操作,以及将每个请求信息的所述索引标识、所述调度标识所属的所述标识信息的写标识进行置位操作。
在一种可能的实现方式中,所述调度管理单元包括与每个处理单元分别对应的一个写指针,每个处理单元的写指针用于根据每个处理单元对多个存储单元的访问次数进行自加操作,其中,每个处理单元的写指针指示在所述调度队列中所述处理单元对应组中写入所述标识信息的当前行。
根据本公开的一方面,提供了一种存储器访问方法,所述存储器访问方法应用于存储器访问电路,所述存储器访问电路用于访问多个不同的存储单元,所述存储器访问电路包括:调度管理模块、多个处理单元;所述存储器访问方法包括:所述调度管理模块存储来自多个存储单元的返回数据;所述调度管理模块根据记录的多个处理单元访问多个存储单元的请求顺序,取出返回数据至对应的处理单元。
在一种可能的实现方式中,所述调度管理模块包括:调度管理单元、调度队列、数据队列,多个存储单元的输出端、所述调度管理单元的输出端连接所述调度队列的输入端,所述调度队列的输出端、多个存储单元的输出端连接所述数据队列的输入端,所述数据队列的输出端连接多个处理单元的输入端;其中,所述调度队列记录的多个标识信息用于指示多个处理单元访问多个存储单元的请求顺序,所述调度管理模块存储来自多个存储单元的返回数据,包括:所述调度队列响应于所述数据队列接收到任一存储单元的返回数据,所述调度队列根据记录的标识信息,指示所述数据队列存储多个存储单元的返回数据;所述调度队列响应于所述调度管理单元的指示,根据记录的标识信息从所述数据队列取出返回数据至所述标识信息指示的处理单元。
在一种可能的实现方式中,所述调度队列根据记录的标识信息,指示所述数据队列存储多个存储单元的返回数据,包括:响应于所述数据队列接收到任一存储单元的返回数据,所述调度队列按照从所述调度队列首行至尾行的方向,在每行中按照处理单元的优先级顺序,对每组记录的每个标识信息的调度标识进行检索,确定检索到的所述调度标识;在所述数据队列中,根据所述检索到的所述调度标识所属的所述标识信息的索引标识指示的位置,写入返回数据;所述调度队列对所述检索到的所述调度标识所属的所述标识信息的读标识进行置位操作。
在一种可能的实现方式中,所述调度管理模块根据记录的多个处理单元访问多个存储单元的请求顺序,取出返回数据至对应的处理单元,包括:在所述调度队列每组首行的所述标识信息中的读标识和写标识均为预设标识的情况下,从所述数据队列中每组首行的所述标识信息中所述索引标识指示的位置处,取出返回数据至对应的处理单元;所述调度队列中每组首行的标志信息执行出队操作。
在一种可能的实现方式中,所述调度管理单元包括与每个处理单元分别对应的一个写指针,每个处理单元的写指针用于根据每个处理单元对多个存储单元的访问次数进行自加操作,其中,每个处理单元的写指针指示在所述调度队列中所述处理单元对应组中写入所述标识信息的当前行。
在一种可能的实现方式中,所述调度队列响应于所述调度管理单元的指示,根据记录的标识信息从所述数据队列取出返回数据至所述标识信息指示的处理单元,包括:在每组首行的所述标识信息中的读标识和写标识均为预设标识的情况下,从所述数据队列中每组首行的所述标识信息中所述索引标识指示的位置处,取出返回数据至对应的处理单元,以及对所述每组首行的标志信息执行出队操作。
根据本公开的一方面,提供了一种集成电路,所述集成电路包括如上所述的存储器访问电路。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括如上所述的存储器访问电路。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
本公开实施例提供了一种存储器访问电路,所述存储器访问电路用于访问多个不同的存储单元,所述存储器访问电路包括:调度管理模块、多个处理单元、与每个存储单元对应的仲裁器;所述处理单元用于将生成的请求信息发送至调度标识指示的存储单元的仲裁器,所述请求信息包括用于指示存储单元的调度标识;所述仲裁器用于对来自多个处理单元的请求信息进行仲裁,按照仲裁顺序向存储单元发送请求信息;所述调度管理模块用于:按照多个仲裁器的仲裁顺序记录多个处理单元访问多个存储单元的请求顺序;存储来自多个存储单元的返回数据,以及根据记录的所述请求顺序取出返回数据至对应的处理单元。
本公开实施例实现了多个处理单元访问不同的存储单元(例如包括部署在不同调度模块中的存储单元),当多个处理单元访问存储单元时,调度管理模块可以按照多个仲裁器的仲裁顺序记录多个处理单元访问多个存储单元的请求顺序;当存储单元回复返回数据时,调度管理模块可以存储来自多个存储单元的返回数据,以及根据记录的请求顺序取出返回数据至对应的处理单元,实现了按照各处理单元的访问顺序,依序将存储单元的返回数据高效地准确地传输至处理单元,进一步提高处理器芯片的运行效率。并且,本公开实施例的存储器访问电路结构简单,减少了对硬件资源的消耗。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出根据本公开实施例的一种存储器访问电路的示意图。
图2示出根据本公开实施例的另一种存储器访问电路的示意图。
图3示出根据本公开实施例的另一种存储器访问电路的示意图。
图4示出根据本公开实施例的调度队列的示意图。
图5示出根据本公开实施例的数据队列的示意图。
图6示出根据本公开实施例的调度队列记录的标识信息的示意图。
图7示出根据本公开实施例的一种存储器访问方法的流程图。
图8示出根据本公开实施例的另一种存储器访问方法的流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开实施例的一种存储器访问电路的示意图,如图1所示,所述存储器访问电路用于访问多个不同的存储单元0,所述存储器访问电路包括:调度管理模块9、多个处理单元1、与每个存储单元0对应的仲裁器3。
所述处理单元1用于将生成的请求信息发送至调度标识指示的存储单元0的仲裁器3,所述请求信息包括用于指示存储单元0的调度标识;所述仲裁器3用于对来自多个处理单元1的请求信息进行仲裁,按照仲裁顺序向存储单元0发送请求信息;所述调度管理模块9用于:按照多个仲裁器3的仲裁顺序记录多个处理单元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和多个调度模块,不同的存储单元0部署在不同的调度模块,调度模块可用于执行调度任务(包括操作数据调度、操作程序调度)。在此情况下,调度模块可用于接收处理单元1的请求信息(例如操作指令),根据请求信息为处理单元1提供所需的资源(返回数据)。
在一种可能的实现方式中,存储器访问电路可用于访问M个(M≥1)不同的存储单元0,该存储器访问电路可包括:一个调度管理模块9、N个(N≥1)处理单元1、与M个存储单元0对应的M个仲裁器3。应当理解,本公开的实施例对存储单元0的数量M和处理单元1的数量N不作限制,可根据实际的应用场景,设置M和N的取值。
其中,M个存储单元0可以分别为存储单元0_1~存储单元0_M,N个处理单元1可分别为处理单元1_1~处理单元1_N。M个仲裁器3可以分别为仲裁器3_1~仲裁器3_M,即:与存储单元0_1对应的仲裁器3_1,与存储单元0_2对应的仲裁器3_2,以此类推,与存储单元0_M对应的仲裁器3_M。
在示例中,处理单元1_1可生成访问存储单元0_1~访问存储单元0_M中任一存储单元0的请求信息,该请求信息可包括用于指示存储单元0的调度标识。例如,假设存在调度标识1~M,调度标识1可用于指示存储单元0_1,调度标识2可用于指示存储单元0_2,以此类推,调度标识M可用于指示存储单元0_M。通过在请求信息中设置调度标识,有利于将请求信息更准确的传输至调度标识指示的存储单元0。
在示例中,假设M为3,即存在3个存储单元0,调度标识可以是位宽为2比特(bit)的二进制数据,其中,调度标识为00,表示访问存储单元0_1;调度标识为01,表示访问存储单元0_2;调度标识10,表示访问存储单元0_3。本公开对调度标识的位宽不作限制,可以根据存储单元0的数量确定调度标识的位宽。例如,假设存储单元0的数量为M,调度标识的位宽为W,可以通过求解不等式2^W≥M,确定调度标识的位宽W,其中,2^W表示W个2相乘。
在示例中,请求信息还可以包括请求类型(例如包括读请求和/或写请求)、访问地址(例如读请求的地址,或,写请求的地址)、使能信号(例如使当前请求信息具有某一存储单元的读写权限的信号)等,本公开对此不作具体限制。
在此情况下,处理单元1_1可以根据请求信息中调度标识的指示,从仲裁器3_1~仲裁器3_M中确定一个目标仲裁器,将请求信息发送至目标仲裁器,该目标仲裁器也即调度标识指示的存储单元0所对应的仲裁器3。例如,对于包括调度标识1的请求信息,处理单元1_1可以将该请求信息发送至调度标识1指示的存储单元0_1所对应的仲裁器3_1;对于包括调度标识2的请求信息,处理单元1_1可以将该请求信息发送至调度标识2指示的存储单元0_2所对应的仲裁器3_2;以此类推,对于包括调度标识M的请求信息,处理单元1_1可以将该请求信息发送至调度标识M指示的存储单元0_M所对应的仲裁器3_M。
类似的,处理单元1_2~处理单元1_N同样可以生成访问存储单元0_1~访问存储单元0_M中任一存储单元0的请求信息,处理单元1_2~处理单元1_N可以根据请求信息中调度标识的指示,将该请求信息发送至调度标识指示的存储单元0所对应的仲裁器3,具体可以参考上文,此处不再赘述。
在示例中,仲裁器3_1可以对访问存储单元0_1的、来自处理单元1_1~处理单元1_N的不同的请求信息进行固定优先级仲裁(Fixed-Priority),从N个请求信息中选出当前轮的一个目标请求信息发送至存储单元0_1。其中,在仲裁器3_1同时收到来自处理单元1_1~处理单元1_N的多个请求信息情况下,可以按照预设的优先级顺序进行仲裁。例如,预设的优先级顺序可以按照处理单元1_1~处理单元1_N的顺序,即来自处理单元1_1的请求信息的优先级最高,来自处理单元1_N的请求信息的优先级最低。在此优先级顺序下,仲裁器3_1同时收到来自处理单元1_1~处理单元1_N的多个请求信息,会先响应来自处理单元1_1的请求信息,将来自处理单元1_1的请求信息发送至存储单元0_1。
类似的,仲裁器3_2~仲裁器3_M同样可以对来自处理单元1_1~处理单元1_N的请求信息进行固定优先级仲裁(Fixed-Priority),按照各自的仲裁顺序分别向对应的存储单元0_2~存储单元0_M发送请求信息,此处不再赘述。
在上述过程中,每当有仲裁器3_1~仲裁器3_M向对应的存储单元0_1~存储单元0_M发送请求信息,调度管理模块9可以同步收到来自仲裁器3_1~仲裁器3_M的请求信息,并按照自仲裁器3_1~仲裁器3_M各自的仲裁顺序,记录处理单元1_1~处理单元1_N访问存储单元0_1~存储单元0_M的请求顺序。在各存储单元0响应各处理单元1的访问请求,向各处理单元1回传返回数据的阶段,调度管理模块9还可以用于存储来自存储单元0_1~存储单元0_M的返回数据,以及根据调度管理模块9记录的请求顺序,取出返回数据至对应的处理单元1。
在示例中,在各处理单元1向各存储单元0发送访问请求的阶段,调度管理模块9可以分组记录各处理单元1访问存储单元0_1~存储单元0_M的请求顺序。例如,第一组可对应处理单元1_1,用于记录处理单元1_1访问存储单元0_1~存储单元0_M的请求顺序,第二组可对应处理单元1_2,用于记录处理单元1_2访问存储单元0_1~存储单元0_M的请求顺序,依次类推,第N组可对应处理单元1_N,用于记录处理单元1_N访问存储单元0_1~存储单元0_M的请求顺序。
在各存储单元0响应各处理单元1的访问请求,向各处理单元1回传返回数据的阶段,调度管理模块9还可以用于存储来自存储单元0_1~存储单元0_M的返回数据,调度管理模块9可以一次存储一个存储单元0的返回数据,也可以一次同时存储来自多个存储单元0的返回数据,本公开对此不作限制。
以及根据调度管理模块9记录的请求顺序,取出返回数据至对应的处理单元1。
在示例中,如果调度管理模块9是分组记录各处理单元1访问存储单元0_1~存储单元0_M的请求顺序,调度管理模块9也可以根据每组分别记录的请求顺序,取出返回数据至各组对应的处理单元1。例如,在调度管理模块9中,如果第一组记录了处理单元1_1访问存储单元0_1~存储单元0_M的请求顺序,调度管理模块9可以根据第一组记录的请求顺序,取出返回数据至处理单元1_1;如果第二组记录了处理单元1_2访问存储单元0_1~存储单元0_M的请求顺序,调度管理模块9可以根据第二组记录的请求顺序,取出返回数据至处理单元1_2;以此类推,如果第N组记录了处理单元1_N访问存储单元0_1~存储单元0_M的请求顺序,调度管理模块9可以根据第N组记录的请求顺序,取出返回数据至处理单元1_N。
本公开实施例的存储器访问电路,实现了多个处理单元1访问不同的存储单元0(例如包括部署在不同调度模块中的存储单元0),当多个处理单元1访问存储单元0时,调度管理模块9可以按照多个仲裁器3的仲裁顺序记录多个处理单元1访问多个存储单元0的请求顺序;当存储单元0回复返回数据时,调度管理模块9可以存储来自多个存储单元0的返回数据,以及根据记录的请求顺序取出返回数据至对应的处理单元1,实现了按照各处理单元1的访问顺序,依序将存储单元0的返回数据高效地准确地传输至处理单元1,进一步提高处理器芯片的运行效率。
并且,本公开实施例的存储器访问电路,不在处理单元1的内部作保序设置,而是通过调度管理模块9在存储单元0与处理单元1之间添加保序机制,多个处理单元1可共用一个调度管理模块9,结构上更加简单,在处理单元1的数量越多的情况下,或者在处理单元1的并发度(即各处理单元1在不等待请求信息的返回数据的情况下,最多可以发出的请求信息的数量)越大的情况下,其节省的资源优势就越明显。
图2示出根据本公开实施例的一种存储器访问电路的示意图,如图2所示,所述存储器访问电路用于访问多个不同的存储单元0,所述存储器访问电路包括:所述调度管理模块9、多个处理单元1、与每个处理单元1对应的一个调度选择器2、与每个存储单元0对应的一个仲裁器3。其中,所述调度管理模块9可以包括调度管理单元4、调度队列5、数据队列6。
任一调度选择器2的输入端连接对应的一个处理单元1的输出端,任一调度选择器2的输出端分别连接多个仲裁器3的输入端,所述处理单元1用于生成访问存储单元0的请求信息,所述请求信息包括用于指示存储单元0的调度标识,所述调度选择器2用于将从所述处理单元1接收到的请求信息发送至所述调度标识指示的存储单元0的仲裁器3。
每个仲裁器3的输出端连接对应的存储单元0的输入端,多个仲裁器3的输出端连接所述调度管理单元4的输入端,所述调度管理单元4的输出端连接所述调度队列5的输入端,所述仲裁器3用于对来自多个处理单元1的请求信息进行仲裁,按照仲裁顺序向存储单元0发送请求信息,所述调度管理单元4用于根据多个仲裁器3每次仲裁出的请求信息,指示所述调度队列5按照仲裁顺序,记录每个请求信息的标识信息,所述调度队列5记录的多个标识信息用于指示多个处理单元1访问多个存储单元0的请求顺序。
多个存储单元0的输出端、所述调度管理单元4的输出端连接所述调度队列5的输入端,所述调度队列5的输出端、多个存储单元0的输出端连接所述数据队列6的输入端,所述数据队列6的输出端连接多个处理单元1的输入端,所述调度队列5用于响应于所述数据队列6接收到任一存储单元0的返回数据,根据记录的标识信息,指示所述数据队列6存储多个存储单元0的返回数据,以及所述调度队列5响应于所述调度管理单元4的指示,根据记录的标识信息从所述数据队列6取出返回数据至所述标识信息指示的处理单元1。
在一种可能的实现方式中,存储器访问电路可用于访问M个(M≥1)不同的存储单元0,该存储器访问电路可包括:一个调度管理单元4、一个调度队列5、一个数据队列6、N个处理单元1、与N个(N≥1)处理单元1对应的N个调度选择器2、与M个存储单元0对应的M个仲裁器3。应当理解,本公开的实施例对存储单元0的数量M和处理单元1的数量N不作限制,可根据实际的应用场景,设置M和N的取值。
如图2所示,M个存储单元0可以分别为存储单元0_1~存储单元0_M,N个处理单元1可分别为处理单元1_1~处理单元1_N。
N个调度选择器2可分别为调度选择器2_1~调度选择器2_N,即:与处理单元1_1对应的调度选择器2_1,与处理单元1_2对应的调度选择器2_2,以此类推,与处理单元1_N对应的调度选择器2_N。
M个仲裁器3可以分别为仲裁器3_1~仲裁器3_M,即:与存储单元0_1对应的仲裁器3_1,与存储单元0_2对应的仲裁器3_2,以此类推,与存储单元0_M对应的仲裁器3_M。
如图2所示,任一调度选择器2的输入端连接对应的一个处理单元1的输出端,任一调度选择器2的输出端分别连接M个仲裁器3的输入端。
例如,处理单元1_1的输出端连接调度选择器2_1的输入端,调度选择器2_1的输出端分别连接仲裁器3_1的输入端~仲裁器3_M的输入端;处理单元1_2的输出端连接调度选择器2_2的输入端,调度选择器2_2的输出端分别连接仲裁器3_1的输入端~仲裁器3_M的输入端;以此类推,处理单元1_N的输出端连接调度选择器2_N的输入端,调度选择器2_N的输出端分别连接仲裁器3_1的输入端~仲裁器3_M的输入端。
在示例中,调度选择器2_1接收到由处理单元1_1发送的请求信息,可以根据请求信息中调度标识的指示,从仲裁器3_1~仲裁器3_M中确定一个目标仲裁器,将请求信息发送至目标仲裁器,该目标仲裁器也即调度标识指示的存储单元0所对应的仲裁器3。例如,如果调度选择器2_1接收到包括调度标识1的请求信息,可以将该请求信息发送至调度标识1指示的存储单元0_1所对应的仲裁器3_1;如果调度选择器2_1接收到包括调度标识2的请求信息,可以将该请求信息发送至调度标识2指示的存储单元0_2所对应的仲裁器3_2;以此类推,如果调度选择器2_1接收到包括调度标识M的请求信息,可以将该请求信息发送至调度标识M指示的存储单元0_M所对应的仲裁器3_M。
类似的,处理单元1_2~处理单元1_N同样可以生成访问存储单元0_1~访问存储单元0_M中任一存储单元0的请求信息,处理单元1_2~处理单元1_N可以将各自生成的包含调度标识的请求信息发送至对应的调度选择器2_2~调度选择器2_N,调度选择器2_2~调度选择器2_N响应于各自接收到的请求信息,可以根据请求信息中调度标识的指示,将该请求信息发送至调度标识指示的存储单元0所对应的仲裁器3,具体可以参考上文,此处不再赘述。
如图2所示,每个仲裁器3的输出端连接对应的存储单元0的输入端,M个仲裁器3的输出端连接所述调度管理单元4的输入端,所述调度管理单元4的输出端连接所述调度队列5的输入端。
例如,仲裁器3_1的输出端连接存储单元0_1的输入端,仲裁器3_2的输出端连接存储单元0_2的输入端,以此类推,仲裁器3_M的输出端连接存储单元0_M的输入端。并且,仲裁器3_1~仲裁器3_M的输出端还按照多连一的方式,连接调度管理单元4的输入端,该调度管理单元4的输出端连接调度队列5的输入端。
在示例中,仲裁器3_1可以对访问存储单元0_1的、来自处理单元1_1~处理单元1_N的不同的请求信息进行固定优先级仲裁(Fixed-Priority),从N个请求信息中选出当前轮的一个目标请求信息发送至存储单元0_1。其中,在仲裁器3_1同时收到来自处理单元1_1~处理单元1_N的多个请求信息情况下,可以按照预设的优先级顺序进行仲裁。例如,预设的优先级顺序可以按照处理单元1_1~处理单元1_N的顺序,即来自处理单元1_1的请求信息的优先级最高,来自处理单元1_N的请求信息的优先级最低。在此优先级顺序下,仲裁器3_1同时收到来自处理单元1_1~处理单元1_N的多个请求信息,会先响应来自处理单元1_1的请求信息,将来自处理单元1_1的请求信息发送至存储单元0_1。
类似的,仲裁器3_2~仲裁器3_M同样可以对来自处理单元1_1~处理单元1_N的请求信息进行固定优先级仲裁(Fixed-Priority),按照各自的仲裁顺序分别向对应的存储单元0_2~存储单元0_M发送请求信息,此处不再赘述。
在上述过程中,每当有仲裁器3_1~仲裁器3_M向对应的存储单元0_1~存储单元0_M发送请求信息,调度管理单元4可以同步收到来自仲裁器3_1~仲裁器3_M的请求信息,并响应于收到的各请求信息,指示调度队列5记录每个请求信息对应的标识信息。由于M个仲裁器3执行的每轮仲裁中,调度队列5可记录一次当前轮各请求信息的标识信息,经过多轮仲裁,调度队列5可记录M个仲裁器3的仲裁顺序,也即N个处理单元1访问M个存储单元0的请求顺序。
在一种可能的实现方式中,所述调度管理单元4包括与每个处理单元1分别对应的一个读指针,所述调度管理单元4用于:按照仲裁顺序,根据多个仲裁器3每次仲裁出的请求信息,以及每次仲裁出的每个请求信息分别对应的处理单元1的优先级,对来自不同处理单元1的请求信息对应的读指针执行自加操作;根据每个自加操作后的读指针,确定每个请求信息的索引标识;将每次仲裁出的每个请求信息的所述调度标识、所述索引标识,发送至所述调度队列5。通过这种方式,有利于多个处理单元1共用一个调度队列5和数据队列6,结构上更加简单,减少了对硬件资源的消耗。
示例性地,假设处理单元1_1对应读指针wr_ptr1,处理单元1_2对应读指针wr_ptr2,以此类推,处理单元1_N对应读指针wr_ptrN;处理单元1的优先级按照从处理单元1_1至处理单元1_N的顺序,优先级递减,例如,来自处理单元1_1的请求信息的优先级为1,来自处理单元1_2的请求信息的优先级为2,以此类推,来自处理单元1_N的请求信息的优先级为N。
每当调度管理单元4同时收到i个(1≤i≤M)由仲裁器3发送的来自不同处理单元1的请求信息,可以根据这i个请求信息进行优先级排序,并根据优先级排序,对来自不同处理单元1的请求信息对应的读指针执行自加操作,其中,优先级排序第1的请求信息对应的读指针执行加1操作,优先级排序第2的请求信息对应的读指针执行加2操作,以此类推,优先级排序第i的请求信息对应的读指针执行加i操作。例如,在调度管理单元4同时收到来自处理单元1_1~处理单元1_N的请求信息,处理单元1_1的读指针wr_ptr1执行加1操作,处理单元1_2对应读指针wr_ptr2执行加2操作,以此类推,处理单元1_N对应读指针wr_ptr2执行加N操作。应当理解,若有多个处理单元1同时发起请求信息时,则来自不同处理单元1的读指针会根据预设的优先级顺序,递增相加,可根据实际的应用场景,设置优先级顺序,本公开对此不作限制。
对来自不同处理单元1的请求信息执行自加操作后,针对任一自加操作后的读指针,可以将其确定为请求信息的索引标识,并同该请求信息的调度标识,发送至调度队列5。其中,调度标识用于指示存储单元0,不同的调度标识可指示不同的存储单元0。索引标识用于指示数据队列6的存储位置。
调度管理单元4可以按照仲裁顺序,将每轮的来自不同处理单元1的各请求信息的索引标识和调度标识发送至调度队列5,以利于调度队列5按照仲裁顺序记录每轮来自不同处理单元1的各请求信息的索引标识和调度标识。这样,不仅可以使调度队列5可以准确记录多个处理单元1访问多个存储单元0的请求顺序,还可以使调度队列5后续收到各存储单元0响应请求信息所返回的返回数据,可以通过检索调度队列5记录的调度标识,确定返回数据对应的请求信息的索引标识,从而可以在数据队列6中索引标识指示的位置处,存储返回数据。
在一种可能的实现方式中,所述调度队列5包括多组,每组分别用于记录同一处理单元1访问不同存储单元0的标识信息,每组包括多行,每行用于记录一个存储单元0的标识信息,所述标识信息包括读标识、写标识、索引标识、调度标识。
在示例中,调度队列5的组数是根据处理单元1的数量N确定的,调度队列5可包括N组,第1组用于按照仲裁顺序记录处理单元1_1访问存储单元0_1~存储单元0_M的标识信息,其中,第1组的每行可以记录一个存储单元0的标识信息;第2组用于按照仲裁顺序记录处理单元1_2访问存储单元0_1~存储单元0_M的标识信息,其中,第2组的每行可以记录一个存储单元0的标识信息;以此类推,第N组用于按照仲裁顺序记录处理单元1_N访问存储单元0_1~存储单元0_M的标识信息,其中,第N组的每行可以记录一个存储单元0的标识信息。
调度队列5的行数(深度)与处理单元1的并发度(即在不等待请求信息的返回数据的情况下,最多可以发出的请求信息的数量)相关,处理单元1的并发度越多,需要调度队列5具有越多的行数,本公开对此不作限制。
调度队列5每组的位宽也即标识信息的位宽,该标识信息的位宽是读标识、写标识、索引标识、调度标识的位宽和。
其中,读标识和写标识的位宽可以设置为1比特(bit)。写标识用于标记处理单元1是否已经将请求信息发送至存储单元0,写标识为1表示由处理单元1发出的请求信息已经到达存储单元0,否则,写标识为0;读标识用于标记存储单元0返回的返回数据是否已经存入数据队列6,读标识为1表示存储单元0返回的返回数据已经存入数据队列6,否则,读标识为0。
索引标识的位宽可以根据数据队列6的深度(行数)设置,数据队列6的深度用于表示数据队列6最多可存储的返回数据的数量,例如,假设数据队列6的行数为P,索引标识的位宽为Q,可以通过求解不等式2^Q≥P,确定索引标识的位宽Q,其中,2^Q表示Q个2相乘。
调度标识的位宽可以根据存储单元0的数量M设置,例如,假设存储单元0的数量为M,调度标识的位宽为W,可以通过求解不等式2^W≥M,确定调度标识的位宽W,其中,2^W表示W个2相乘。
在一种可能的实现方式中,所述调度队列5用于:响应于接收到仲裁出的来自不同处理单元1的每个请求信息的所述调度标识、所述索引标识,分别在所述调度队列5对应所述处理单元1的组中,对每个请求信息的所述索引标识、所述调度标识执行入队操作,以及将每个请求信息的所述索引标识、所述调度标识所属的所述标识信息的写标识进行置位操作(例如包括置1操作)。
在示例中,假设调度队列5包括N组,第1组用于按照仲裁顺序记录处理单元1_1访问存储单元0_1~存储单元0_M的标识信息,第2组用于按照仲裁顺序记录处理单元1_2访问存储单元0_1~存储单元0_M的标识信息,以此类推,第N组用于按照仲裁顺序记录处理单元1_N访问存储单元0_1~存储单元0_M的标识信息。
调度管理单元4可以按照仲裁顺序,将每轮的来自不同处理单元1的各请求信息的索引标识和调度标识发送至调度队列5。调度队列5响应于接收到每轮的来自不同处理单元1的各请求信息的索引标识和调度标识,各组可按照仲裁顺序,记录各自对应的处理单元1的请求信息的索引标识和调度标识,以及将索引标识和调度标识对应的写标识置1,以说明当前的请求信息已经发送至调度标识指示的存储单元0,等待该存储单元0的返回数据。
通过对调度队列5的标识信息的写标识进行置1操作,有利于与后续结合读标识,更精准地判断存储单元0是否已经返回响应于请求信息的返回数据。
通过在调度队列5中不同域存储(例如分组存储)不同处理单元1的标识信息,有利于多个处理单元1共用一个调度队列5,结构上更加简单,减少了对硬件资源的消耗。
在一种可能的实现方式中,所述调度管理单元4还包括与每个处理单元1分别对应的一个写指针,每个处理单元1的写指针用于根据每个处理单元1对多个存储单元的访问次数进行自加操作,其中,每个处理单元1的写指针指示在所述调度队列5中所述处理单元1对应组中写入所述标识信息的当前行。
示例性地,假设处理单元1_1对应写指针rd_ptr1,处理单元1_2对应写指针rd_ptr2,以此类推,处理单元1_N对应写指针rd_ptrN。
写指针rd_ptr1可根据处理单元1_1对存储单元0_1~存储单元0_M的访问次数进行自加操作。例如,处理单元1_1当前次访问存储单元0_1~存储单元0_M中某一存储单元0,写指针rd_ptr1的值可以为X,指向调度队列5中第1组的第X行位置,调度管理单元4可以指示调度队列5,在调度队列5中第1组的第X行位置记录处理单元1_1访问这个存储单元0的请求信息的索引标识、调度标识和写标识。处理单元1_1下一次访问存储单元0_1~存储单元0_M中某一存储单元0,写指针rd_ptr1的值可以为X+1,指向调度队列5中第1组的第X+1行位置,调度管理单元4可以指示调度队列5,在调度队列5中第1组的第X+1行位置记录处理单元1_1访问这个存储单元0的请求信息的索引标识、调度标识和写标识。
写指针rd_ptr2可根据处理单元1_2对存储单元0_1~存储单元0_M的访问次数进行自加操作,写指针rd_ptr2可以指向调度队列5中第2组的当前行。例如,处理单元1_2当前次访问存储单元0_1~存储单元0_M中某一存储单元0,写指针rd_ptr2的值可以为X,指向调度队列5中第2组的第X行位置,调度管理单元4可以指示调度队列5,在调度队列5中第2组的第X行位置记录处理单元1_2访问这个存储单元0的请求信息的索引标识、调度标识和写标识。处理单元1_2下一次访问存储单元0_1~存储单元0_M中某一存储单元0,写指针rd_ptr2的值可以为X+1,指向调度队列5中第2组的第X+1行位置,调度管理单元4可以指示调度队列5,在调度队列5中第2组的第X+1行位置记录处理单元1_2访问这个存储单元0的请求信息的索引标识、调度标识和写标识。
以此类推,写指针rd_ptrN可根据处理单元1_N对存储单元0_1~存储单元0_M的访问次数进行自加操作,写指针rd_ptrN可以指向调度队列5中第N组的当前行。例如,处理单元1_N当前次访问存储单元0_1~存储单元0_M中某一存储单元0,写指针rd_ptrN的值可以为X,指向调度队列5中第N组的第X行位置,调度管理单元4可以指示调度队列5,在调度队列5中第N组的第X行位置记录处理单元1_N访问这个存储单元0的请求信息的索引标识、调度标识和写标识。处理单元1_N下一次访问存储单元0_1~存储单元0_M中某一存储单元0,写指针rd_ptrN的值可以为X+1,指向调度队列5中第N组的第X+1行位置,调度管理单元4可以指示调度队列5,在调度队列5中第N组的第X+1行位置记录处理单元1_N访问这个存储单元0的请求信息的索引标识、调度标识和写标识。
如图2所示,M个存储单元0的输出端、调度管理单元4的输出端连接调度队列5的输入端,调度队列5的输出端、M个存储单元0的输出端连接数据队列6的输入端,数据队列6的输出端连接N个处理单元1的输入端。
例如,存储单元0_1的输出端~存储单元0_M的输出端、调度管理单元4的输出端按照多连一的方式,连接调度队列5的输入端。调度队列5的输出端、存储单元0_1的输出端~存储单元0_M的输出端按照多连一的方式,连接数据队列6的输入端,该数据队列6的输出端按照一连多的方式,分别连接处理单元1_1的输入端~处理单元1_N的输入端。
在一种可能的实现方式中,所述数据队列6包括一列多行,每行用于存储一个返回数据。其中,数据队列6的位宽可根据返回数据的位宽确定,例如可以直接将返回数据的位宽作为数据队列6的位宽。数据队列6的行数(深度)与处理单元1的数量和并发度(即各处理单元1在不等待请求信息的返回数据的情况下,最多可以发出的请求信息的数量)相关,例如数据队列6的行数可以是处理单元1的数量和并发度的乘积,处理单元1的数量和并发度越多,需要数据队列6具有越多的行数,本公开对此不作限制。
在一种可能的实现方式中,所述调度队列5用于:响应于所述数据队列6接收到任一存储单元0的返回数据,按照从所述调度队列5首行至尾行的方向,在每行中按照处理单元1的优先级顺序,对每组记录的每个标识信息的所述调度标识进行检索,确定检索到的所述调度标识;在所述数据队列6中,根据所述检索到的所述调度标识所属的所述标识信息的所述索引标识指示的位置,写入返回数据;对所述检索到的所述调度标识所属的所述标识信息的读标识进行置位操作(例如置1操作)。通过这种方式,数据队列6可以更高效更准确地确定当前返回数据在数据队列6中的存储位置。
示例性地,假设调度队列5包括N组,每组包括K行,任一组的任一行可记录一个标志信息,例如,第1组按照仲裁顺序记录了处理单元1_1访问存储单元0_1~存储单元0_M的标识信息,第2组按照仲裁顺序记录了处理单元1_2访问存储单元0_1~存储单元0_M的标识信息,以此类推,第N组按照仲裁顺序记录了处理单元1_N访问存储单元0_1~存储单元0_M的标识信息。
每当存储单元0_1~存储单元0_M中任一存储单元0向数据队列6发送返回数据的同时,会向调度队列5发送一个触发信息(例如包括调度标识),以使调度队列5获取到生成返回数据的存储单元0的调度标识。调度队列5可以按照从首行至尾行的方向,在每行中按照处理单元1的优先级顺序(例如从第1组至第N组的顺序),对每组记录的每个标识信息的调度标识进行检索,在检索到与生成返回数据的存储单元0的调度标识相同的第一个调度标识的情况下,确定该调度标识所属的标识信息的索引标识(也即该调度标识所在行所在组记录的索引标识)。
其中,处理单元1的优先级顺序与仲裁器3进行固定优先级仲裁的优先级顺序一致,例如,优先级顺序可以按照处理单元1_1~处理单元1_N的顺序,也即从第1组至第N的顺序。
调度队列5可以根据确定的索引标识,指示数据队列6在索引标识指示的位置处,存储数据队列6接收到的返回数据。然后,调度队列5为了标记该返回数据已经写入数据队列6,调度队列5可以将确定的调度标识所属的标识信息的读标识(调度标识所在行所在组记录的读标识)进行置1操作。
在一种可能的实现方式中,所述调度队列5还用于:在每组首行的所述标识信息中的读标识和写标识均为预设标识(例如数字1)的情况下,从所述数据队列6中每组首行的所述标识信息中所述索引标识指示的位置处,取出返回数据至对应的处理单元1,以及对所述每组首行的标志信息执行出队操作。其中,预设标识可以与上午置位操作写入的标识相同,预设标识可以是任意数字、字母、符合等,本公开对预设标识的形似不作具体限制。
其中,每组按照发送请求信息的先后顺序,从每组的队首至队尾的方向依次记录,每组首行记录的是最先发出请求信息的标识信息,首行记录的标识信息中的读标识和写标识均为1,说明最先发出的请求信息已经送达存储单元0,并且存储单元0反馈的返回数据也已经存入数据队列6。
示例性地,假设调度队列5包括N组,每组包括K行,任一组的任一行可记录一个标志信息,例如,第1组用于按照仲裁顺序记录处理单元1_1访问存储单元0_1~存储单元0_M的标识信息,第2组用于按照仲裁顺序记录处理单元1_2访问存储单元0_1~存储单元0_M的标识信息,以此类推,第N组用于按照仲裁顺序记录处理单元1_N访问存储单元0_1~存储单元0_M的标识信息。
在第1组首行的标识信息中的读标识和写标识均为1的情况下,说明处理单元1_1最先发出的请求信息对应的返回数据已经存储在数据队列6中,可以按照第1组首行的索引标识的指示,从数据队列6取出返回数据至处理单元1_1,将第1组首行的标识信息执行出队操作。
在第2组首行的标识信息中的读标识和写标识均为1的情况下,说明处理单元1_2最先发出的请求信息对应的返回数据已经存储在数据队列6中,可以按照第2组首行的索引标识的指示,从数据队列6取出返回数据至处理单元1_2,将第2组首行的标识信息执行出队操作。
以此类推,在第N组首行的标识信息中的读标识和写标识均为1的情况下,说明处理单元1_N最先发出的请求信息对应的返回数据已经存储在数据队列6中,可以按照第N组首行的索引标识的指示,从数据队列6取出返回数据至处理单元1_N,将第N组首行的标识信息执行出队操作。
这样,处理单元1后发送的请求信息的返回数据先缓存在数据队列6中,等待先发起请求信息的返回数据,实现了返回数据的保序处理。
本公开实施例的存储器访问电路,实现了多个处理单元1访问不同的存储单元0(例如包括部署在不同调度模块中的存储单元0),当多个处理单元1访问存储单元0时,调度管理单元4可以指示调度队列5按照仲裁顺序,记录每个请求信息的标识信息,通过调度队列5记录的多个标识信息记录多个处理单元1访问多个存储单元0的请求顺序;当存储单元0回复返回数据时,调度队列5可通过检索记录的标识信息,指示数据队列6存储多个存储单元0的返回数据,并且,调度队列5可响应于调度管理单元4的指示,根据记录的标识信息从数据队列6取出返回数据至标识信息指示的处理单元1,实现了按照各处理单元1的访问顺序,依序将存储单元0的返回数据高效地准确地传输至处理单元1,进一步提高处理器芯片的运行效率。
并且,本公开实施例的存储器访问电路,不通过在处理单元1的内部作保序设置,而是通过指针的方式在存储单元0与处理单元1之间添加保序机制,即利用调度管理单元4、调度队列5和数据队列6之间的配合实现保序,多个处理单元1可共用一个调度管理单元4、调度队列5和数据队列6,结构上更加简单,节省与处理单元1直接接口资源,在处理单元1的数量越多的情况下,或者在处理单元1的并发度(即各处理单元1在不等待请求信息的返回数据的情况下,最多可以发出的请求信息的数量)越大的情况下,其节省的资源优势就越明显。
下面以存储单元0的数量和处理单元1的数量均为3作为一个示例,对本公开实施例的存储器访问电路进行展开说明。应当理解,本公开对存储单元0和处理单元1的数量不作具体限制,可根据实际的应用场景进行设置。
图3示出根据本公开实施例的存储器访问电路的示意图,如图3所示的存储访问电路用于解决3个不同的处理单元1访问3个不同的调度模块中的存储单元0。其中,3个处理单元1可以分别为:处理单元1_1、处理单元1_2,以及处理单元1_3;3个存储单元0可以分别为:部署在调度模块1中的存储单元0_1、部署在调度模块2中的存储单元0_2,以及部署在调度模块3中的存储单元0_3。
如图3所示,处理单元1_1的输出端连接调度选择器2_1的输入端,调度选择器2_1的输出端可以按照一连多的方式,分别连接仲裁器3_1的输入端~仲裁器3_3的输入端;处理单元1_2的输出端连接调度选择器2_2的输入端,调度选择器2_2的输出端可以按照一连多的方式,分别连接仲裁器3_1的输入端~仲裁器3_3的输入端;处理单元1_3的输出端连接调度选择器2_3的输入端,调度选择器2_3的输出端可以按照一连多的方式,分别连接仲裁器3_1的输入端~仲裁器3_3的输入端。
这样,调度选择器2_1可用于将从处理单元1_1接收到的请求信息发送至仲裁器3_1~仲裁器3_3中的任一仲裁器,进一步,调度选择器2_1还可以根据请求信息中调度标识的指示,从仲裁器3_1~仲裁器3_3中确定一个目标仲裁器,将请求信息发送至目标仲裁器,该目标仲裁器也即处理单元1_1发出的请求信息中调度标识指示的存储单元0所对应的仲裁器3。
调度选择器2_2可用于将从处理单元1_2接收到的请求信息发送至仲裁器3_1~仲裁器3_3中的任一仲裁器,进一步,调度选择器2_2还可以根据请求信息中调度标识的指示,从仲裁器3_1~仲裁器3_3中确定一个目标仲裁器,将请求信息发送至目标仲裁器,该目标仲裁器也即处理单元1_2发出的请求信息中调度标识指示的存储单元0所对应的仲裁器3。
调度选择器2_3可用于将从处理单元1_3接收到的请求信息发送至仲裁器3_1~仲裁器3_3中的任一仲裁器,进一步,调度选择器2_3还可以根据请求信息中调度标识的指示,从仲裁器3_1~仲裁器3_3中确定一个目标仲裁器,将请求信息发送至目标仲裁器,该目标仲裁器也即处理单元1_3发出的请求信息中调度标识指示的存储单元0所对应的仲裁器3。
在示例中,调度标识可以是位宽为2比特(bit)的二进制数据,其中,调度标识为00,表示访问调度模块1中的存储单元0_1;调度标识为01,表示访问调度模块2中的存储单元0_2;调度标识10,表示访问调度模块3中的存储单元0_3。
这样,如果处理单元1_1~处理单元1_2生成的请求信息都包括调度标识00,调度选择器2_1~调度选择器2_3会根据调度标识00的指示,将本次各自接收到的包括了调度标识00的请求信息发送至仲裁器3_1。仲裁器3_1会收到调度选择器2_1转发的来自处理单元1_1的请求信息、调度选择器2_2转发的来自处理单元1_2的请求信息、调度选择器2_3转发的来自处理单元1_3的请求信息。
如果处理单元1_1~处理单元1_2生成的请求信息都包括调度标识01,调度选择器2_1~调度选择器2_3会根据调度标识01的指示,将本次各自接收到的包括了调度标识01的请求信息发送至仲裁器3_2。仲裁器3_2会收到调度选择器2_1转发的来自处理单元1_1的请求信息、调度选择器2_2转发的来自处理单元1_2的请求信息、调度选择器2_3转发的来自处理单元1_3的请求信息。
如果处理单元1_1~处理单元1_2生成的请求信息都包括调度标识为10,调度选择器2_1~调度选择器2_3会根据调度标识10的指示,将本次各自接收到的包括了调度标识10的请求信息发送至仲裁器3_3。仲裁器3_3会收到调度选择器2_1转发的来自处理单元1_1的请求信息、调度选择器2_2转发的来自处理单元1_2的请求信息、调度选择器2_3转发的来自处理单元1_3的请求信息。
在一种可能的实现方式中,所述存储器访问电路还包括至少一个第一缓冲器7、每个仲裁器3的输出端通过至少一个第一缓冲器7连接对应的存储单元0的输入端。在存储器访问电路中设置第一缓冲器7,增强了仲裁器3向存储单元0进行数据传输的驱动力,减少了在布线(floorplan)过程中因走线过长,导致信号驱动能力不足的概率。例如,在实际的应用中,在仲裁器3与存储单元0的连线比较长的场景下,如果不设置第一缓冲器7,信号会随着芯片(或电路板)上的走线而衰减,导致系统频率不能提高,性能下降的情况。通过在仲裁器3与存储单元0之间设置第一缓冲器7,可以为信号传输提供更强的驱动力,使仲裁器3发出的请求信息可以正确传输至存储单元0。
而且,在存储器访问电路中设置第一缓冲器7,还可以通过第一缓冲器7存储数据,将一次的访问请求(例如由仲裁器3仲裁后的请求信息)进行缓存,其中,第一缓冲器7与仲裁器3之间可采用握手(Handshake)的方式进行数据交互。
如图3所示,仲裁器3_1的输出端通过两个第一缓冲器7连接存储单元0_1的输入端,仲裁器3_2的输出端通过两个第一缓冲器7连接存储单元0_2的输入端,仲裁器3_3的输出端通过两个第一缓冲器7连接存储单元0_3的输入端。
并且,仲裁器3_1~仲裁器3_3的输出端还会按照多连一的方式,连接调度管理单元4的输入端,调度管理单元4的输出端连接调度队列5的输入端。
在示例中,各仲裁器3可以采用预设的优先级顺序,将访问同一个调度模块的不同处理单元1的请求信息进行固定优先级仲裁(Fixed-Priority),按照仲裁顺序,将每次仲裁出的请求信息,经过两个第一缓冲器7,发送至对应调度模块中的存储单元0。例如,预设的优先级顺序可以采用处理单元1_1、处理单元1_2、处理单元1_3的顺序,即来自处理单元1_1的请求信息的优先级最高,来自处理单元1_2的请求信息的优先级次之,来自处理单元1_3的请求信息的优先级最低。
仲裁器3_1可以对访问调度模块1中的存储单元0_1的、来自处理单元1_1~处理单元1_3的不同的请求信息进行固定优先级仲裁(Fixed-Priority),从3个请求信息中选出当前轮的一个目标请求信息,并经过两个第一缓冲器7发送至存储单元0_1。其中,仲裁器3_1同时收到来自处理单元1_1~处理单元1_3的请求信息,会先响应来自处理单元1_1的请求信息,将来自处理单元1_1的请求信息发送至存储单元0_1。
类似的,仲裁器3_2和仲裁器3_3同样会对来自处理单元1_1~处理单元1_3的请求信息进行固定优先级仲裁(Fixed-Priority),按照各自的仲裁顺序分别经过两个第一缓冲器7,向对应的存储单元0发送请求信息,此处不再赘述。
在每轮仲裁过程中,针对仲裁出的各请求信息,调度管理单元4可管理各处理单元1对应的读指针,以使调度队列5正确记录各请求信息的索引标识,有利于后续不同存储单元0向不同处理单元1的返回数据可以在同一个数据队列6中有序存储。
示例性地,假设调度管理单元4可包括与每个处理单元1分别对应的一个读指针,例如,处理单元1_1对应读指针wr_ptr1,处理单元1_2对应读指针wr_ptr2,处理单元1_3对应读指针wr_ptr3。其中,各处理单元1的优先级按照从处理单元1_1至处理单元1_3的顺序,优先级递减,例如,来自处理单元1_1的请求信息的优先级最高,来自处理单元1_2的请求信息的优先级次之,来自处理单元1_3的请求信息的优先级最低。
每当调度管理单元4同时收到由仲裁器3发送的来自不同处理单元1的请求信息,可以根据请求信息的优先级排序,对来自不同处理单元1的请求信息对应的读指针执行自加操作,并根据每个自加操作后的读指针,确定每个请求信息的索引标识。
对于任一次仲裁处理,如果处理单元1_1向存储单元0发送请求信息,处理单元1_2和处理单元1_3没有向存储单元0发送请求信息。调度管理单元4可以对处理单元1_1对应的读指针wr_ptr1执行加1操作,将wr_ptr1+1作为当前来自处理单元1_1的请求信息的索引标识。
如果处理单元1_2向存储单元0发送请求信息,处理单元1_1和处理单元1_3没有向存储单元0发送请求信息。调度管理单元4可以对处理单元1_2对应的读指针wr_ptr2执行加1操作,将wr_ptr2+1作为当前来自处理单元1_2的请求信息的索引标识。
如果处理单元1_3向存储单元0发送请求信息,处理单元1_1和处理单元1_2没有向存储单元0发送请求信息。调度管理单元4可以对处理单元1_3对应的读指针wr_ptr3执行加1操作,将wr_ptr3+1作为当前来自处理单元1_3的请求信息的索引标识。
如果处理单元1_1和处理单元1_2向存储单元0发送请求信息,处理单元1_3没有向存储单元0发送请求信息。调度管理单元4可以对处理单元1_1对应的读指针wr_ptr1执行加1操作,将wr_ptr1+1作为当前来自处理单元1_1的请求信息的索引标识;可以对处理单元1_2对应的读指针wr_ptr2执行加2操作,将wr_ptr2+2作为当前来自处理单元1_2的请求信息的索引标识。
如果处理单元1_1和处理单元1_3向存储单元0发送请求信息,处理单元1_2没有向存储单元0发送请求信息。调度管理单元4可以对处理单元1_1对应的读指针wr_ptr1执行加1操作,将wr_ptr1+1作为当前来自处理单元1_1的请求信息的索引标识;可以对处理单元1_3对应的读指针wr_ptr3执行加2操作,将wr_ptr3+2作为当前来自处理单元1_3的请求信息的索引标识。
如果处理单元1_2和处理单元1_3向存储单元0发送请求信息,处理单元1_1没有向存储单元0发送请求信息。调度管理单元4可以对处理单元1_2对应的读指针wr_ptr2执行加1操作,将wr_ptr2+1作为当前来自处理单元1_2的请求信息的索引标识;可以对处理单元1_3对应的读指针wr_ptr3执行加2操作,将wr_ptr3+2作为当前来自处理单元1_3的请求信息的索引标识。
如果处理单元1_1、处理单元1_2和处理单元1_3均向存储单元0发送请求信息。调度管理单元4可以对处理单元1_1对应的读指针wr_ptr1执行加1操作,将wr_ptr1+1作为当前来自处理单元1_1的请求信息的索引标识;可以对处理单元1_2对应的读指针wr_ptr2执行加2操作,将wr_ptr2+2作为当前来自处理单元1_2的请求信息的索引标识;可以对处理单元1_3对应的读指针wr_ptr3执行加3操作,将wr_ptr3+3作为当前来自处理单元1_3的请求信息的索引标识。
其中,在每次仲裁处理中,可以将处理单元1_1对应的读指针wr_ptr1、处理单元1_2对应的读指针wr_ptr2和处理单元1_3对应的读指针wr_ptr3的初始值设置为当前调度队列5中记录的索引标识的最大值。其中,在调度队列5为空的情况下,可以将初始值设置为0。
调度管理单元4可以按照仲裁顺序,根据仲裁器3_1~仲裁器3_3每次仲裁出的请求信息,指示调度队列5记录每次仲裁出的每个请求信息的调度标识、索引标识。这样,每当有仲裁器3_1~仲裁器3_3向对应的存储单元0_1~存储单元0_3发送请求信息,调度队列5就可以记录每个请求信息对应的调度标识和索引标识。由于三个仲裁器3执行的每轮仲裁中,调度队列5可记录一次当前轮各请求信息的调度标识和索引标识,经过多轮仲裁,调度队列5可记录这三个仲裁器3的仲裁顺序,也即三个处理单元1访问三个存储单元0的请求顺序。这样,调度队列5后续收到各存储单元0响应请求信息所返回的返回数据,可以通过检索调度队列5记录的调度标识,确定返回数据对应的请求信息的索引标识,从而在数据队列6中索引标识指示的位置处,存储返回数据。
示例性的,图4示出根据本公开实施例的调度队列的示意图,如图4所示,调度队列5可以包括3组,第1组用于按照仲裁顺序记录处理单元1_1访问存储单元0_1~存储单元0_3的标识信息,第2组用于按照仲裁顺序记录处理单元1_2访问存储单元0_1~存储单元0_3的标识信息,第3组用于按照仲裁顺序记录处理单元1_3访问存储单元0_1~存储单元0_3的标识信息。其中,每组可包括2行,每行用于记录一个存储单元0的标识信息,该标识信息的位宽可以是7比特,可包括位宽为1比特的读标识、位宽为1比特的写标识、位宽为3比特的索引标识、位宽为2比特的调度标识。在实际的应用中,可根据具体的应用场景设置调度队列5的位宽和行数,本公开对此不作限制。
调度管理单元4可以按照仲裁顺序,指示调度队列5的各组按照仲裁顺序,记录各自对应的处理单元1的请求信息的索引标识和调度标识,以及将索引标识和调度标识对应的写标识置1,以说明当前的请求信息已经发送至调度标识指示的存储单元0,等待该存储单元0的返回数据。
例如,可以在调度队列5的第1组中执行入队操作,在当前行(例如处理单元1_1对应写指针rd_ptr1指示的当前行)写入索引标识和调度标识,并将第1组当前行的写标识进行置1操作。可以在调度队列5的第2组中执行入队操作,在当前行(例如处理单元1_2对应写指针rd_ptr2指示的当前行)写入索引标识和调度标识,并将第2组当前行的写标识进行置1操作。可以在调度队列5的第3组中执行入队操作,在当前行(例如处理单元1_3对应写指针rd_ptr3指示的当前行)写入索引标识和调度标识,并将第3组当前行的写标识进行置1操作。
其中,调度管理单元4还管理了与每个处理单元1分别对应的一个写指针,即:处理单元1_1对应的写指针rd_ptr1,处理单元1_2对应写指针rd_ptr2,处理单元1_3对应写指针rd_ptr3。写指针rd_ptr1用于根据处理单元1_1对多个存储单元0的访问次数进行自加操作,可指示在调度队列5第1组写入标识信息的当前行。写指针rd_ptr2用于根据处理单元1_2对多个存储单元0的访问次数进行自加操作,可指示在调度队列5第2组写入标识信息的当前行。写指针rd_ptr3用于根据处理单元1_3对多个存储单元0的访问次数进行自加操作,可指示在调度队列5第3组写入标识信息的当前行。
通过这种方式,在各处理单元1向各存储单元0发送请求信息的过程,调度队列5可按照仲裁顺序记录各处理单元1的标识信息中的调度标识、索引标识和写标识。调度队列5的读标识在此过程中不进行置位操作,保持初始状态0。
上面介绍了各处理单元1向各存储单元0发送请求信息的过程,下面介绍各存储单元0响应于各处理单元1的请求信息,向各处理单元1回传返回数据的过程。
在一种可能的实现方式中,所述存储器访问电路还包括至少一个第二缓冲器8,每个存储单元0的输出端通过至少一个第二缓冲器8分别连接所述数据队列6的输入端和所述调度队列5的输入端。
在存储器访问电路中设置第二缓冲器8,增强了存储单元0向调度队列5和数据队列6进行数据传输的驱动力,减少了在布线(floorplan)过程中因走线过长,导致信号驱动能力不足的概率。例如,在实际的应用中,在存储单元0连接调度队列5的连线,以及存储单元0连接数据队列6的连线比较长的场景下,如果不设置第二缓冲器8,信号会随着芯片(或电路板)上的走线而衰减,导致系统频率不能提高,性能下降的情况。通过在存储单元0与调度队列5之间设置第二缓冲器8,可以为信号传输提供更强的驱动力,使存储单元0发出的触发信息(例如调度标识)可以正确传输至调度队列5。通过在存储单元0和数据队列6之间设置第二缓冲器8,可以为信号传输提供更强的驱动力,使存储单元0发出的返回数据可以正确传输至数据队列6。
而且,在存储器访问电路中设置第二缓冲器8,还可以通过第二缓冲器8对数据进行缓存,其中,第二缓冲器8与调度队列5之间、第二缓冲器8与数据队列6之间,可采用握手(Handshake)的方式进行数据交互。
如图3所示,调度队列5和数据队列6的输入端可分别通过两个第二缓冲器8连接每个存储单元0的输出端。例如,存储单元0_1的输出端通过两个第二缓冲器8连接调度队列5的输入端,以及通过另外两个第二缓冲器8连接数据队列6的输入端;存储单元0_2的输出端通过两个第二缓冲器8连接调度队列5的输入端,以及通过另外两个第二缓冲器8连接数据队列6的输入端;存储单元0_3的输出端通过两个第二缓冲器8连接调度队列5的输入端,以及通过另外两个第二缓冲器8连接数据队列6的输入端。并且,指针队列4的输出端连接调度队列5的输入端,调度队列5的输出端连接数据队列6的输入端。数据队列6的输出端按照一连多的方式,分别连接处理单元1_1的输入端~处理单元1_3的输入端。
示例性地,图5示出根据本公开实施例的数据队列的示意图,如图5所示,数据队列6可以包括1列6行,没行的位宽为30比特,每行用于存储一个返回数据。在实际的应用中,可根据具体的应用场景设置数据队列6的位宽和行数,本公开对此不作限制。
在示例中,当部署在不同调度模块的存储单元0向数据队列6发送返回数据时,会同步向调度队列5发送一个触发信息(例如包括调度标识),以使调度队列5获取到生成返回数据的存储单元0的调度标识。
调度队列5确定了调度标识,会在调度队列5中按照首行至尾行的方向,在每行中按照处理单元的优先级顺序检索调度标识。调度队列5对调度标识检索的顺序为:第1行第1组记录的来自处理单元1_1的请求信息的标识信息、第1行第2组记录的来自处理单元1_2的请求信息的标识信息、第1行第3组记录的来自处理单元1_3的请求信息的标识信息、第2行第1组记录的来自处理单元1_1的请求信息的标识信息、第2行第2组记录的来自处理单元1_2的请求信息的标识信息、第2行第3组记录的来自处理单元1_3的请求信息的标识信息。
图6示出根据本公开实施例的调度队列5记录的标识信息的示意图,如图6所示,每当存储单元0_1向数据队列6发送返回数据的时,调度队列5会同时收到从存储单元0_1发出的触发信息,调度队列5会根据该触发信息确定出调度标识00,表示返回数据是来自存储单元0_1。调度队列5可以按照从首行至尾行的方向,在每行中按照从第一组至最后一组的顺序检索调度标识00。
当检索到调度标识00,可以确定该调度标识00所在行所在组记录的索引标识,并指示数据队列6在索引标识指示的位置处,存储收到的返回数据。然后,调度队列5为了记录该返回数据已经写入数据队列6,调度队列5可以将该调度标识00所在行所在组的读标识进行置1操作。
例如,如图6所示,假设检索到的是第1行第1组的调度标识00,其对应的索引标识为000,可以在数据队列6的第1行写入返回数据,并将调度队列5的第1行第1组的读标识由0置1;假设检索到的是第1行第2组的调度标识00,其对应的索引标识为001,可以在数据队列6的第2行写入返回数据,并将调度队列5的第1行第2组的读标识由0置1;假设检索到的是第1行第3组的调度标识00,其对应的索引标识为010,可以在数据队列6的第3行写入返回数据,并将调度队列5的第1行第3组的读标识由0置1;假设检索到的是第2行第1组的调度标识00,其对应的索引标识为101,可以在数据队列6的第6行写入返回数据,并将调度队列5的第2行第1组的读标识由0置1。
其中,由于检索顺序为按照首行至尾行的方向,在每行中按照从第1组至第3组的顺序,所以,当部署在调度模块1中的存储单元0_1向数据队列6发送返回数据,则调度队列5中读标识的置1顺序为:第1行第1组记录的对应处理单元1_1的读标识、第1行第2组记录的对应处理单元1_2的读标识、第1行第3组记录的对应处理单元1_3的读标识、第2行第1组记录的对应处理单元1_1的读标识。
如图6所示,每当存储单元0_2向数据队列6发送返回数据的时,调度队列5会同时收到从存储单元0_2发出的触发信息,调度队列5会根据该触发信息确定出调度标识01,表示返回数据是来自存储单元0_2。调度队列5确定了调度标识01,按照从首行至尾行的方向,在每行中按照从第一组至最后一组的顺序检索调度标识01。
当检索到调度标识01,可以确定该调度标识01所在行所在组记录的索引标识,并指示数据队列6在索引标识指示的位置处,存储收到的返回数据。然后,调度队列5为了记录该返回数据已经写入数据队列6,调度队列5可以将该调度标识01所在行所在组的读标识进行置1操作。例如,如图6所示,假设检索到的是第2行第2组的调度标识01,其对应的索引标识为100,可以在数据队列6的第5行写入返回数据,并将调度队列5的第2行第2组的读标识由0置1。
如图6所示,每当存储单元0_3向数据队列6发送返回数据的时,调度队列5会同时收到从存储单元0_3发出的触发信息,调度队列5会根据该触发信息确定出调度标识10,表示返回数据是来自存储单元0_3。调度队列5确定了调度标识10,按照从首行至尾行的方向,在每行中按照从第一组至最后一组的顺序检索调度标识10。
当检索到调度标识10,可以确定该调度标识10所在行所在组记录的索引标识,并指示数据队列6在索引标识指示的位置处,存储收到的返回数据。然后,调度队列5为了记录该返回数据已经写入数据队列6,调度队列5可以将该调度标识10所在行所在组的读标识进行置1操作。例如,如图6所示,假设检索到的是第2行第3组的调度标识10,其对应的索引标识为011,可以在数据队列6的第4行写入返回数据,并将调度队列5的第2行第3组的读标识由0置1。
在示例中,调度队列5的第1组按照处理单元1_1对各存储单元0的访问顺序记录了每个请求信息的标识信息,调度队列5的第1组第1行记录的是处理单元1_1最先发出请求信息的标识信息,其中,写标识为1表示由处理单元1_1发出的请求信息已经到达存储单元0,读标识为1表示响应处理单元1_1请求信息的返回数据已经存入数据队列6,索引标识表示返回数据在数据队列6的存储位置。
所以,在调度队列5的第1组首行的标识信息中的读标识和写标识均为1的情况下,说明处理单元1_1最先发出的请求信息对应的返回数据已经存储在数据队列6中,可以按照第1组首行的索引标识的指示,从数据队列6取出返回数据至处理单元1_1,将第1组首行的标识信息执行出队操作。
在示例中,调度队列5的第2组按照处理单元1_2对各存储单元0的访问顺序记录了每个请求信息的标识信息,调度队列5的第2组第1行记录的是处理单元1_2最先发出请求信息的标识信息,其中,写标识为1表示由处理单元1_2发出的请求信息已经到达存储单元0,读标识为1表示响应处理单元1_2请求信息的返回数据已经存入数据队列6,索引标识表示返回数据在数据队列6的存储位置。
所以,在调度队列5的第2组首行的标识信息中的读标识和写标识均为1的情况下,说明处理单元1_2最先发出的请求信息对应的返回数据已经存储在数据队列6中,可以按照第2组首行的索引标识的指示,从数据队列6取出返回数据至处理单元1_2,将第2组首行的标识信息执行出队操作。
在示例中,调度队列5的第3组按照处理单元1_3对各存储单元0的访问顺序记录了每个请求信息的标识信息,调度队列5的第3组第1行记录的是处理单元1_3最先发出请求信息的标识信息,其中,写标识为1表示由处理单元1_3发出的请求信息已经到达存储单元0,读标识为1表示响应处理单元1_3请求信息的返回数据已经存入数据队列6,索引标识表示返回数据在数据队列6的存储位置。
所以,在调度队列5的第3组首行的标识信息中的读标识和写标识均为1的情况下,说明处理单元1_3最先发出的请求信息对应的返回数据已经存储在数据队列6中,可以按照第3组首行的索引标识的指示,从数据队列6取出返回数据至处理单元1_3,将第3组首行的标识信息执行出队操作。
综上所述,本公开实施例的存储器访问电路,实现了多个处理单元1访问不同的存储单元0(例如包括部署在不同调度模块中的存储单元0),当多个处理单元1访问存储单元0时,调度管理单元4可以指示调度队列5按照仲裁顺序,记录每个请求信息的标识信息,通过调度队列5记录的多个标识信息记录多个处理单元1访问多个存储单元0的请求顺序;当存储单元0回复返回数据时,调度队列5可通过检索记录的标识信息,指示数据队列6存储多个存储单元0的返回数据,并且,调度队列5可响应于调度管理单元4的指示,根据记录的标识信息从数据队列6取出返回数据至标识信息指示的处理单元1,实现了按照各处理单元1的访问顺序,依序将存储单元0的返回数据高效地准确地传输至处理单元1,进一步提高处理器芯片的运行效率。
并且,本公开实施例的存储器访问电路,不通过在处理单元1的内部作保序设置,而是通过指针的方式在存储单元0与处理单元1之间添加保序机制,即利用调度管理单元4、调度队列5和数据队列6之间的配合实现保序,多个处理单元1可共用一个调度管理单元4、调度队列5和数据队列6,结构上更加简单,节省与处理单元1直接接口资源(例如连接信号更少),在处理单元1的数量越多的情况下,或者在处理单元1的并发度(即各处理单元1在不等待请求信息的返回数据的情况下,最多可以发出的请求信息的数量)越大的情况下,其节省的资源优势就越明显。
图7示出根据本公开实施例的存储器访问方法的流程图,如图7所示,所述方法应用于如图1所示的存储器访问电路,所述存储器访问电路用于访问多个不同的存储单元0,所述存储器访问电路包括:调度管理模块9、多个处理单元1、与每个处理单元1对应的仲裁器3。
所述存储器访问方法包括:在步骤S11中,每个处理单元1生成用于访问存储单元0的请求信息,所述请求信息包括用于指示存储单元0的调度标识;
在步骤S12中,每个处理单元1将生成的请求信息发送至所述调度标识指示的存储单元0的仲裁器3;
在步骤S13中,所述仲裁器3对来自多个处理单元1的请求信息进行仲裁,按照仲裁顺序向存储单元0发送请求信息;
在步骤S14中,所述调度管理模块9按照多个仲裁器3的仲裁顺序记录多个处理单元1访问多个存储单元0的请求顺序。
在一种可能的实现方式中,如图2所示,所述调度管理模块9包括:调度管理单元4、调度队列5,每个仲裁器3的输出端连接对应的存储单元0的输入端,多个仲裁器3的输出端连接所述调度管理单元4的输入端,所述调度管理单元4的输出端连接所述调度队列5的输入端;步骤S14可包括:所述调度管理单元4根据多个仲裁器3每次仲裁出的请求信息,指示所述调度队列5按照仲裁顺序,记录每个请求信息的标识信息;根据所述调度队列5记录的多个标识信息,确定多个处理单元1访问多个存储单元0的请求顺序。
在一种可能的实现方式中,如图2所示,所述存储器访问电路还包括与每个处理单元1对应的一个调度选择器2,任一调度选择器2的输入端连接对应的处理单元1的输出端,任一调度选择器2的输出端分别连接多个仲裁器3的输入端;步骤S12可包括:每个处理单元1将生成的用于访问存储单元0的请求信息发送至对应的调度选择器2;所述调度选择器2将从所述处理单元1接收到的请求信息发送至所述调度标识指示的存储单元0的仲裁器3。
在一种可能的实现方式中,所述调度管理单元4包括与每个处理单元1分别对应的一个读指针,所述调度队列5包括多组,每组分别用于记录同一处理单元1访问不同存储单元0的标识信息,每组包括多行,每行用于记录一个存储单元0的标识信息,所述标识信息包括读标识、写标识、索引标识、调度标识;所述调度管理单元4根据多个仲裁器3每次仲裁出的请求信息,指示所述调度队列5按照仲裁顺序,记录每个请求信息的标识信息,包括:所述调度管理单元4按照仲裁顺序,根据多个仲裁器3每次仲裁出的请求信息,以及每次仲裁出的每个请求信息分别对应的处理单元1的优先级,对来自不同处理单元1的请求信息对应的读指针执行自加操作;所述调度管理单元4根据每个自加操作后的读指针,确定每个请求信息的索引标识;所述调度管理单元4将每次仲裁出的每个请求信息的所述调度标识、所述索引标识,发送至所述调度队列5;所述调度队列5响应于接收到仲裁出的来自不同处理单元1的每个请求信息的所述调度标识、所述索引标识,分别在所述调度队列5对应所述处理单元1的组中,对每个请求信息的所述索引标识、所述调度标识执行入队操作,以及将每个请求信息的所述索引标识、所述调度标识所属的所述标识信息的写标识进行置位操作。
在一种可能的实现方式中,所述调度管理单元4包括与每个处理单元1分别对应的一个写指针,每个处理单元1的写指针用于根据每个处理单元1对多个存储单元0的访问次数进行自加操作,其中,每个处理单元1的写指针指示在所述调度队列5中所述处理单元1对应组中写入所述标识信息的当前行。
图8示出根据本公开实施例的存储器访问方法的流程图,如图8所示,所述方法应用于如图1所示的存储器访问电路,所述存储器访问电路用于访问多个不同的存储单元00,所述存储器访问电路包括:调度管理模块99、多个处理单元11。
所述存储器访问方法包括:在步骤S15中,所述调度管理模块9存储来自多个存储单元0的返回数据;在步骤S16中,所述调度管理模块9根据记录的多个处理单元1访问多个存储单元0的请求顺序,取出返回数据至对应的处理单元1。
在一种可能的实现方式中,如图2所示,所述调度管理模块9包括:调度管理单元4、调度队列5、数据队列6,多个存储单元0的输出端、所述调度管理单元4的输出端连接所述调度队列5的输入端,所述调度队列5的输出端、多个存储单元0的输出端连接所述数据队列6的输入端,所述数据队列6的输出端连接多个处理单元1的输入端;其中,所述调度队列5记录的多个标识信息用于指示多个处理单元1访问多个存储单元0的请求顺序,步骤S15可包括:所述调度队列5响应于所述数据队列6接收到任一存储单元0的返回数据,所述调度队列5根据记录的标识信息,指示所述数据队列6存储多个存储单元0的返回数据;所述调度队列5响应于所述调度管理单元4的指示,根据记录的标识信息从所述数据队列6取出返回数据至所述标识信息指示的处理单元1。
在一种可能的实现方式中,所述调度队列5根据记录的标识信息,指示所述数据队列6存储多个存储单元0的返回数据,包括:响应于所述数据队列6接收到任一存储单元0的返回数据,所述调度队列5按照从所述调度队列5首行至尾行的方向,在每行中按照处理单元1的优先级顺序,对每组记录的每个标识信息的调度标识进行检索,确定检索到的所述调度标识;在所述数据队列6中,根据所述检索到的所述调度标识所属的所述标识信息的索引标识指示的位置,写入返回数据;所述调度队列5对所述检索到的所述调度标识所属的所述标识信息的读标识进行置位操作。
在一种可能的实现方式中,步骤S16可包括:在所述调度队列5每组首行的所述标识信息中的读标识和写标识均为预设标识的情况下,从所述数据队列6中每组首行的所述标识信息中所述索引标识指示的位置处,取出返回数据至对应的处理单元1;所述调度队列5中每组首行的标志信息执行出队操作。
在一种可能的实现方式中,所述调度管理单元4包括与每个处理单元1分别对应的一个写指针,每个处理单元1的写指针用于根据每个处理单元1对多个存储单元0的访问次数进行自加操作,其中,每个处理单元1的写指针指示在所述调度队列5中所述处理单元1对应组中写入所述标识信息的当前行。
在一种可能的实现方式中,所述调度队列5响应于所述调度管理单元4的指示,根据记录的标识信息从所述数据队列6取出返回数据至所述标识信息指示的处理单元1,包括:在每组首行的所述标识信息中的读标识和写标识均为预设标识的情况下,从所述数据队列6中每组首行的所述标识信息中所述索引标识指示的位置处,取出返回数据至对应的处理单元1,以及对所述每组首行的标志信息执行出队操作。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了封装了存储器访问电路的集成电路、电子设备、计算机程序产品,上述均可用来实现本公开提供的任一种存储器访问方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
本公开实施例还提出一种集成电路,所述集成电路包括如上所述的存储器访问电路。
本公开实施例还提出一种电子设备,所述电子设备包括如上所述的存储器访问电路。电子设备可以被提供为终端、服务器或其它形态的设备。例如,电子设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等,本公开对此不作限制。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (19)
1.一种存储器访问电路,其特征在于,所述存储器访问电路用于访问多个不同的存储单元,所述存储器访问电路包括:调度管理模块、多个处理单元、与每个存储单元对应的仲裁器,其中,多个处理单元共用一个调度管理模块;
所述处理单元用于将生成的请求信息发送至调度标识指示的存储单元的仲裁器,所述请求信息包括用于指示存储单元的调度标识;
所述仲裁器用于对来自多个处理单元的请求信息进行仲裁,按照仲裁顺序向存储单元发送请求信息,其中,在所述仲裁器同时收到来自多个处理单元的多个请求信息情况下,从多个请求信息中选出当前轮的一个目标请求信息发送至存储单元;
所述调度管理模块用于:按照多个仲裁器的仲裁顺序记录多个处理单元访问多个存储单元的请求顺序;存储来自多个存储单元的返回数据,以及根据记录的所述请求顺序取出返回数据至对应的处理单元。
2.根据权利要求1所述的存储器访问电路,其特征在于,所述调度管理模块包括:调度管理单元、调度队列,每个仲裁器的输出端连接对应的存储单元的输入端,多个仲裁器的输出端连接所述调度管理单元的输入端,所述调度管理单元的输出端连接所述调度队列的输入端;
所述调度管理单元用于根据多个仲裁器每次仲裁出的请求信息,指示所述调度队列按照仲裁顺序,记录每个请求信息的标识信息,所述调度队列记录的多个标识信息用于指示多个处理单元访问多个存储单元的请求顺序。
3.根据权利要求2所述的存储器访问电路,其特征在于,所述调度管理模块还包括数据队列,多个存储单元的输出端、所述调度管理单元的输出端连接所述调度队列的输入端,所述调度队列的输出端、多个存储单元的输出端连接所述数据队列的输入端,所述数据队列的输出端连接多个处理单元的输入端,
所述调度队列用于响应于所述数据队列接收到任一存储单元的返回数据,根据记录的标识信息,指示所述数据队列存储多个存储单元的返回数据,以及所述调度队列响应于所述调度管理单元的指示,根据记录的标识信息从所述数据队列取出返回数据至所述标识信息指示的处理单元。
4.根据权利要求1至3中任一项所述的存储器访问电路,其特征在于,所述存储器访问电路还包括与每个处理单元对应的一个调度选择器,任一调度选择器的输入端连接对应的处理单元的输出端,任一调度选择器的输出端分别连接多个仲裁器的输入端;
所述调度选择器用于将从所述处理单元接收到的请求信息发送至所述调度标识指示的存储单元的仲裁器。
5.根据权利要求3所述的存储器访问电路,其特征在于,所述调度管理单元包括与每个处理单元分别对应的一个读指针,所述调度管理单元用于:
按照仲裁顺序,根据多个仲裁器每次仲裁出的请求信息,以及每次仲裁出的每个请求信息分别对应的处理单元的优先级,对来自不同处理单元的请求信息对应的读指针执行自加操作;
根据每个自加操作后的读指针,确定每个请求信息的索引标识;
将每次仲裁出的每个请求信息的所述调度标识、所述索引标识,发送至所述调度队列。
6.根据权利要求5所述的存储器访问电路,其特征在于,所述调度队列包括多组,每组分别用于记录同一处理单元访问不同存储单元的标识信息,每组包括多行,每行用于记录一个存储单元的标识信息,所述标识信息包括读标识、写标识、索引标识、调度标识,所述调度队列用于:
响应于接收到仲裁出的来自不同处理单元的每个请求信息的所述调度标识、所述索引标识,分别在所述调度队列对应所述处理单元的组中,对每个请求信息的所述索引标识、所述调度标识执行入队操作,以及将每个请求信息的所述索引标识、所述调度标识所属的所述标识信息的写标识进行置位操作。
7.根据权利要求2或3所述的存储器访问电路,其特征在于,所述调度管理单元包括与每个处理单元分别对应的一个写指针,每个处理单元的写指针用于根据每个处理单元对多个存储单元的访问次数进行自加操作,其中,每个处理单元的写指针指示在所述调度队列中所述处理单元对应组中写入所述标识信息的当前行。
8.根据权利要求6所述的存储器访问电路,其特征在于,所述数据队列包括一列多行,每行用于存储一个返回数据;
所述调度队列用于:
响应于所述数据队列接收到任一存储单元的返回数据,按照从所述调度队列首行至尾行的方向,在每行中按照处理单元的优先级顺序,对每组记录的每个标识信息的所述调度标识进行检索,确定检索到的所述调度标识;
在所述数据队列中,根据所述检索到的所述调度标识所属的所述标识信息的所述索引标识指示的位置,写入返回数据;
对所述检索到的所述调度标识所属的所述标识信息的读标识进行置位操作。
9.根据权利要求8所述的存储器访问电路,其特征在于,所述调度队列还用于:在每组首行的所述标识信息中的读标识和写标识均为预设标识的情况下,从所述数据队列中每组首行的所述标识信息中所述索引标识指示的位置处,取出返回数据至对应的处理单元,以及对所述每组首行的标志信息执行出队操作。
10.根据权利要求3所述的存储器访问电路,其特征在于,所述存储器访问电路还包括至少一个第一缓冲器、至少一个第二缓冲器,每个仲裁器的输出端通过至少一个第一缓冲器连接对应的存储单元的输入端,每个存储单元的输出端通过至少一个第二缓冲器分别连接所述数据队列的输入端和所述调度队列的输入端。
11.一种存储器访问方法,其特征在于,所述存储器访问方法应用于存储器访问电路,所述存储器访问电路用于访问多个不同的存储单元,所述存储器访问电路包括:调度管理模块、多个处理单元、与每个存储单元对应的仲裁器,其中,多个处理单元共用一个调度管理模块;
所述存储器访问方法包括:
每个处理单元生成用于访问存储单元的请求信息,所述请求信息包括用于指示存储单元的调度标识;
每个处理单元将生成的请求信息发送至所述调度标识指示的存储单元的仲裁器;
所述仲裁器对来自多个处理单元的请求信息进行仲裁,按照仲裁顺序向存储单元发送请求信息,其中,在所述仲裁器同时收到来自多个处理单元的多个请求信息情况下,从多个请求信息中选出当前轮的一个目标请求信息发送至存储单元;
所述调度管理模块按照多个仲裁器的仲裁顺序记录多个处理单元访问多个存储单元的请求顺序;
所述调度管理模块存储来自多个存储单元的返回数据;
所述调度管理模块根据记录的多个处理单元访问多个存储单元的请求顺序,取出返回数据至对应的处理单元。
12.根据权利要求11所述的存储器访问方法,其特征在于,所述调度管理模块包括:调度管理单元、调度队列,每个仲裁器的输出端连接对应的存储单元的输入端,多个仲裁器的输出端连接所述调度管理单元的输入端,所述调度管理单元的输出端连接所述调度队列的输入端;
所述调度管理模块按照多个仲裁器的仲裁顺序记录多个处理单元访问多个存储单元的请求顺序,包括:
所述调度管理单元根据多个仲裁器每次仲裁出的请求信息,指示所述调度队列按照仲裁顺序,记录每个请求信息的标识信息;
根据所述调度队列记录的多个标识信息,确定多个处理单元访问多个存储单元的请求顺序。
13.根据权利要求11所述的存储器访问方法,其特征在于,所述存储器访问电路还包括与每个处理单元对应的一个调度选择器,任一调度选择器的输入端连接对应的处理单元的输出端,任一调度选择器的输出端分别连接多个仲裁器的输入端;
每个处理单元将生成的请求信息发送至所述调度标识指示的存储单元的仲裁器,包括:
每个处理单元将生成的用于访问存储单元的请求信息发送至对应的调度选择器;
所述调度选择器将从所述处理单元接收到的请求信息发送至所述调度标识指示的存储单元的仲裁器。
14.根据权利要求12所述的存储器访问方法,其特征在于,所述调度管理单元包括与每个处理单元分别对应的一个读指针,所述调度队列包括多组,每组分别用于记录同一处理单元访问不同存储单元的标识信息,每组包括多行,每行用于记录一个存储单元的标识信息,所述标识信息包括读标识、写标识、索引标识、调度标识;
所述调度管理单元根据多个仲裁器每次仲裁出的请求信息,指示所述调度队列按照仲裁顺序,记录每个请求信息的标识信息,包括:
所述调度管理单元按照仲裁顺序,根据多个仲裁器每次仲裁出的请求信息,以及每次仲裁出的每个请求信息分别对应的处理单元的优先级,对来自不同处理单元的请求信息对应的读指针执行自加操作;
所述调度管理单元根据每个自加操作后的读指针,确定每个请求信息的索引标识;
所述调度管理单元将每次仲裁出的每个请求信息的所述调度标识、所述索引标识,发送至所述调度队列;
所述调度队列响应于接收到仲裁出的来自不同处理单元的每个请求信息的所述调度标识、所述索引标识,分别在所述调度队列对应所述处理单元的组中,对每个请求信息的所述索引标识、所述调度标识执行入队操作,以及将每个请求信息的所述索引标识、所述调度标识所属的所述标识信息的写标识进行置位操作。
15.根据权利要求11所述的存储器访问方法,其特征在于,所述调度管理模块包括:调度管理单元、调度队列、数据队列,多个存储单元的输出端、所述调度管理单元的输出端连接所述调度队列的输入端,所述调度队列的输出端、多个存储单元的输出端连接所述数据队列的输入端,所述数据队列的输出端连接多个处理单元的输入端;
其中,所述调度队列记录的多个标识信息用于指示多个处理单元访问多个存储单元的请求顺序;
所述调度管理模块存储来自多个存储单元的返回数据,包括:
所述调度队列响应于所述数据队列接收到任一存储单元的返回数据,所述调度队列根据记录的标识信息,指示所述数据队列存储多个存储单元的返回数据;
所述调度队列响应于所述调度管理单元的指示,根据记录的标识信息从所述数据队列取出返回数据至所述标识信息指示的处理单元。
16.根据权利要求15所述的存储器访问方法,其特征在于,所述调度队列根据记录的标识信息,指示所述数据队列存储多个存储单元的返回数据,包括:
响应于所述数据队列接收到任一存储单元的返回数据,所述调度队列按照从所述调度队列首行至尾行的方向,在每行中按照处理单元的优先级顺序,对每组记录的每个标识信息的调度标识进行检索,确定检索到的所述调度标识;
在所述数据队列中,根据所述检索到的所述调度标识所属的所述标识信息的索引标识指示的位置,写入返回数据;
所述调度队列对所述检索到的所述调度标识所属的所述标识信息的读标识进行置位操作。
17.根据权利要求16所述的存储器访问方法,其特征在于,所述调度管理模块根据记录的多个处理单元访问多个存储单元的请求顺序,取出返回数据至对应的处理单元,包括:
在所述调度队列每组首行的所述标识信息中的读标识和写标识均为预设标识的情况下,从所述数据队列中每组首行的所述标识信息中所述索引标识指示的位置处,取出返回数据至对应的处理单元;
所述调度队列中每组首行的标志信息执行出队操作。
18.一种集成电路,其特征在于,所述集成电路包括如权利要求1至10中任一项所述的存储器访问电路。
19.一种电子设备,其特征在于,所述电子设备包括如权利要求1至10中任一项所述的存储器访问电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310806900.4A CN116661703B (zh) | 2023-07-03 | 2023-07-03 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310806900.4A CN116661703B (zh) | 2023-07-03 | 2023-07-03 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116661703A CN116661703A (zh) | 2023-08-29 |
CN116661703B true CN116661703B (zh) | 2024-02-20 |
Family
ID=87711930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310806900.4A Active CN116661703B (zh) | 2023-07-03 | 2023-07-03 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116661703B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112640B (zh) * | 2023-10-23 | 2024-02-27 | 腾讯科技(深圳)有限公司 | 一种内容排序方法以及相关设备 |
CN118467418A (zh) * | 2024-07-08 | 2024-08-09 | 杭州登临瀚海科技有限公司 | 一种存储访问系统以及存储访问调度方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106569727A (zh) * | 2015-10-08 | 2017-04-19 | 福州瑞芯微电子股份有限公司 | 一种多控制器间多存储器共享并行数据读写装置及其写入、读取方法 |
CN113051195A (zh) * | 2021-03-02 | 2021-06-29 | 长沙景嘉微电子股份有限公司 | 存储器、gpu及电子设备 |
CN113312278A (zh) * | 2021-07-29 | 2021-08-27 | 常州楠菲微电子有限公司 | 一种静态可分配共享多队列缓存的装置及方法 |
CN114090479A (zh) * | 2021-11-30 | 2022-02-25 | 上海阵量智能科技有限公司 | 访问报告系统、方法、装置、芯片及电子设备 |
CN114356223A (zh) * | 2021-12-16 | 2022-04-15 | 深圳云天励飞技术股份有限公司 | 存储器的访问方法及装置、芯片、电子设备 |
-
2023
- 2023-07-03 CN CN202310806900.4A patent/CN116661703B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106569727A (zh) * | 2015-10-08 | 2017-04-19 | 福州瑞芯微电子股份有限公司 | 一种多控制器间多存储器共享并行数据读写装置及其写入、读取方法 |
CN113051195A (zh) * | 2021-03-02 | 2021-06-29 | 长沙景嘉微电子股份有限公司 | 存储器、gpu及电子设备 |
CN113312278A (zh) * | 2021-07-29 | 2021-08-27 | 常州楠菲微电子有限公司 | 一种静态可分配共享多队列缓存的装置及方法 |
CN114090479A (zh) * | 2021-11-30 | 2022-02-25 | 上海阵量智能科技有限公司 | 访问报告系统、方法、装置、芯片及电子设备 |
CN114356223A (zh) * | 2021-12-16 | 2022-04-15 | 深圳云天励飞技术股份有限公司 | 存储器的访问方法及装置、芯片、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116661703A (zh) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116661703B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116578245B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116521096B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
US7219198B2 (en) | Facilitating communication within shared memory environments using lock-free queues | |
CN110069557B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN116737083B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN115495212A (zh) | 任务队列处理方法、装置、设备、存储介质及程序产品 | |
CN118011183B (zh) | 实时响应多芯片多测试任务的并行调度方法、设备及介质 | |
CN111538694A (zh) | 一种用于网络接口支持多链接和重传的数据缓存方法 | |
US20240272939A1 (en) | System and method for maintaining dependencies in a parallel process | |
CN116996449A (zh) | 数据报文处理系统、方法、计算机设备、存储介质 | |
JPH0358150A (ja) | メモリ制御装置 | |
CN116049032B (zh) | 基于光线追踪的数据调度方法、装置及设备、存储介质 | |
US20070280224A1 (en) | System and method for an output independent crossbar | |
CN116820579A (zh) | 访存指令的调度方法、装置、电子设备和存储介质 | |
CN116719479B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116521097B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN115391053A (zh) | 基于cpu和gpu混合计算的在线服务方法及装置 | |
CN116594570B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN114091384A (zh) | 数据处理电路及人工智能芯片、数据处理方法和装置 | |
US10216671B2 (en) | Power aware arbitration for bus access | |
CN117851312B (zh) | 数据读取系统、电子组件、电子设备及数据读取方法 | |
CN112506815B (zh) | 数据传输方法和数据传输装置 | |
CN115357526A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN114698391A (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 |