存储器访问电路及存储器访问方法、集成电路和电子设备与流程

未命名 08-15 阅读:84 评论:0


1.本公开涉及电子技术领域,尤其涉及一种存储器访问电路及存储器访问方法、集成电路和电子设备。


背景技术:

2.随着集成电路产业的快速发展,各类处理器芯片在各行各业中的应用越来越广泛,可以应用到网络通信、手机、机顶盒、液晶电视、医疗设备、安防设备、工控设备、智能电表、智能穿戴、物联网、汽车电子等场景。
3.在各类处理器芯片中,处理单元会访问存储单元以实现各种目标任务,其中,处理器芯片内的存储器访问电路可用于管理处理单元与存储单元之间的通信,存储器访问电路会直接影响整个处理器芯片的运行效率和稳定性。


技术实现要素:

4.本公开提出了一种存储器访问技术方案。
5.根据本公开的一方面,提供了一种存储器访问电路,包括:所述存储器访问电路用于访问不同的存储单元,所述存储器访问电路包括:调度队列、返回队列、数据队列、处理单元、与每个处理单元对应的调度选择器、与每个存储单元对应的仲裁器;任一调度选择器的输入端连接对应的处理单元的输出端,任一调度选择器的输出端连接每个仲裁器的输入端,所述调度选择器用于将从所述处理单元接收到的请求信息发送至所述请求信息指示的存储单元的仲裁器;每个仲裁器的输出端连接对应的存储单元的输入端、所述调度队列的输入端,所述仲裁器用于对来自处理单元的请求信息进行仲裁,按照仲裁顺序向存储单元发送请求信息,所述调度队列用于按照所述仲裁顺序记录处理单元访问存储单元的请求顺序;每个存储单元的输出端、所述调度队列的输出端、所述返回队列的输出端连接所述数据队列的输入端,所述数据队列的输出端连接每个处理单元的输入端,所述返回队列用于记录存储单元的返回数据的返回顺序,所述数据队列用于根据所述请求顺序和所述返回顺序的指示,存储存储单元的返回数据,以及从所述数据队列取出返回数据至对应的处理单元。
6.在一种可能的实现方式中,所述调度队列通过在不同列的不同行置位记录多个处理单元访问多个存储单元的请求顺序,其中,所述调度队列的每列分别用于记录不同的处理单元访问不同的存储单元的请求顺序,同一存储单元对应的多列共用行指针,所述行指针会根据对同一存储单元的访问次数进行自加操作,所述行指针用于指示在各列中置位的当前行。
7.在一种可能的实现方式中,所述返回队列的每列记录对应的存储单元的返回顺序。
8.在一种可能的实现方式中,所述数据队列的每列用于储存对应的存储单元的返回数据,所述数据队列用于:响应于接收到任一存储单元的返回数据,从所述调度队列中取出所述存储单元对应的多列数据,进行或操作,得到第一数据,以及从所述返回队列中取出记
录所述存储单元的返回顺序的一列数据,进行取反操作,得到第二数据;将所述第一数据与所述第二数据进行与操作,得到第三数据;在所述数据队列的所述存储单元的对应列中,将所述返回数据写入所述第三数据指示的写入位置。
9.在一种可能的实现方式中,所述返回队列用于:响应于将所述返回数据写入所述第三数据指示的写入位置,在所述返回队列的所述存储单元的对应列中,将所述第三数据指示的写入位置处置位。
10.在一种可能的实现方式中,所述数据队列用于:获取所述返回队列的返回顺序结果,其中,所述返回顺序结果是通过将所述返回队列的首行数据进行或操作得到的;在所述返回顺序结果为预设结果的情况下,根据所述调度队列的首行信息的指示,将所述数据队列中首行的返回数据分别发送至对应的处理单元。
11.在一种可能的实现方式中,将所述数据队列中首行的返回数据分别发送至对应的处理单元之后,所述数据队列用于:在所述数据队列中,将发送至对应的处理单元的所述数据队列中首行的返回数据出队;所述调度队列用于:在所述调度队列中,将发送了所述返回数据的存储单元对应的多列的首行数据出队;所述返回队列用于:在所述返回队列中,将发送了所述返回数据的存储单元的对应列的首行数据出队。
12.在一种可能的实现方式中,所述存储器访问电路还包括至少一个第一缓冲器、至少一个第二缓冲器,每个仲裁器的输出端通过至少一个第一缓冲器连接对应的存储单元的输入端,每个存储单元的输出端通过至少一个第二缓冲器连接所述数据队列的输入端。
13.根据本公开的一方面,提供了一种存储器访问方法,所述存储器访问方法包括:每个处理单元将生成的用于访问存储单元的请求信息发送至对应的调度选择器;所述调度选择器将从所述处理单元接收到的请求信息发送至所述请求信息指示的存储单元的仲裁器;所述仲裁器对来自处理单元的请求信息进行仲裁,按照仲裁顺序向对应的存储单元发送请求信息;调度队列按照所述仲裁顺序记录处理单元访问存储单元的请求顺序。
14.其中,所述存储器访问方法应用于存储器访问电路,所述存储器访问电路用于访问不同的存储单元,所述存储器访问电路包括:调度队列、多个处理单元、与每个处理单元对应的调度选择器、与每个存储单元对应的仲裁器;任一调度选择器的输入端连接对应的处理单元的输出端,任一调度选择器的输出端连接每个仲裁器的输入端,每个仲裁器的输出端连接对应的存储单元的输入端、所述调度队列的输入端。
15.在一种可能的实现方式中,所述调度队列按照所述仲裁顺序记录处理单元访问存储单元的请求顺序,包括:所述调度队列通过在不同列的不同行置位记录多个处理单元访问多个存储单元的请求顺序,其中,所述调度队列的每列分别用于记录不同的处理单元访问不同的存储单元的请求顺序,同一存储单元对应的多列共用行指针,所述行指针会根据对同一存储单元的访问次数进行自加操作,所述行指针用于指示在各列中置位的当前行。
16.在一种可能的实现方式中,所述存储器访问电路还包括至少一个第一缓冲器,每个仲裁器的输出端通过至少一个第一缓冲器连接对应的存储单元的输入端。
17.根据本公开的一方面,提供了一种存储器访问方法,所述存储器访问方法包括:数据队列根据调度队列记录的请求顺序和返回队列记录的存储单元的返回数据的返回顺序,存储存储单元的返回数据;从所述数据队列取出返回数据至对应的处理单元。
18.其中,所述存储器访问方法应用于存储器访问电路,所述存储器访问电路用于访
问不同的存储单元,所述存储器访问电路包括:调度队列、返回队列、数据队列、多个处理单元;每个存储单元的输出端、所述调度队列的输出端、所述返回队列的输出端连接所述数据队列的输入端,所述数据队列的输出端连接每个处理单元的输入端。
19.在一种可能的实现方式中,所述返回队列的每列用于记录对应的存储单元的返回顺序,所述数据队列的每列用于储存对应的存储单元的返回数据,所述数据队列根据调度队列记录的请求顺序和返回队列记录的存储单元的返回数据的返回顺序,存储存储单元的返回数据,包括:所述数据队列响应于接收到任一存储单元的返回数据,从所述调度队列中取出所述存储单元对应的多列数据,进行或操作,得到第一数据,以及从所述返回队列中取出记录所述存储单元的返回顺序的一列数据,进行取反操作,得到第二数据;将所述第一数据与所述第二数据进行与操作,得到第三数据;在所述数据队列的所述存储单元的对应列中,将所述返回数据写入所述第三数据指示的写入位置;响应于将所述返回数据写入所述第三数据指示的写入位置,在所述返回队列的所述存储单元的对应列中,将所述第三数据指示的写入位置处置位。
20.在一种可能的实现方式中,所述从所述数据队列取出返回数据至对应的处理单元,包括:获取所述返回队列的返回顺序结果,其中,所述返回顺序结果是通过将所述返回队列的首行数据进行或操作得到的;在所述返回顺序结果为预设结果的情况下,根据所述调度队列的首行信息的指示,将所述数据队列中首行的返回数据分别发送至对应的处理单元。
21.在一种可能的实现方式中,将所述数据队列中首行的返回数据分别发送至对应的处理单元之后,所述存储器访问方法还包括:在所述数据队列中,将发送至对应的处理单元的所述数据队列中首行的返回数据出队;在所述调度队列中,将发送了所述返回数据的存储单元对应的多列的首行数据出队;在所述返回队列中,将发送了所述返回数据的存储单元的对应列的首行数据出队。
22.在一种可能的实现方式中,所述存储器访问电路还包括至少一个第二缓冲器,每个存储单元的输出端通过至少一个第二缓冲器连接所述数据队列的输入端。
23.根据本公开的一方面,提供了一种集成电路,所述集成电路包括如上所述的存储器访问电路。
24.根据本公开的一方面,提供了一种电子设备,所述电子设备包括如上所述的存储器访问电路。
25.根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
26.在本公开实施例中,实现了处理单元访问不同的存储单元(例如包括部署在不同调度模块中的存储单元),当多个处理单元访问多个存储单元时,可以通过调度队列记录处理单元访问存储单元的请求顺序;当存储单元回复返回数据时,可以根据调度队列记录的请求顺序以及返回队列记录的返回顺序的指示,将各存储单元的返回数据存储在数据队列中,以及从数据队列中取出返回数据至对应的处理单元,使得各处理单元后发送的请求信息的返回数据能够先缓存在数据队列中,等待先发起请求信息的返回数据,有利于每个处理单元获得的返回数据是保序回复(即按照各处理单元发送请求信息的先后顺序收到对应的返回数据),提升了存储器访问电路的准确性和稳定性。
27.并且,本公开实施例的存储器访问电路,不需要为每个处理单元分别配置一个用于记录该处理单元向不同存储单元发送请求顺序的队列,以及为每个存储单元分别配置一个用于记录不同处理单元访问顺序的队列,设置一个调度队列就可以完成不同处理单元访问不同存储单元的记录,降低了存储器访问电路的复杂度,提高了存储器访问电路的适用性。并且,多个处理单元的返回数据可以共享一个数据队列,减少因各处理单元独占资源而开设相应存储,导致的资源浪费。
28.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
29.此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
30.图1示出根据本公开实施例的一种存储器访问电路的示意图。
31.图2示出根据本公开实施例的另一种存储器访问电路的示意图。
32.图3示出根据本公开实施例的调度队列的示意图。
33.图4示出根据本公开实施例的返回队列的示意图。
34.图5示出根据本公开实施例的数据队列的示意图。
35.图6示出根据本公开实施例的一种存储器访问方法的流程图。
36.图7示出根据本公开实施例的另一种存储器访问方法的流程图。
具体实施方式
37.以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
38.在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
39.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
40.另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
41.图1示出根据本公开实施例的存储器访问电路的示意图,如图1所示,所述存储器访问电路用于访问不同的存储单元0,所述存储器访问电路包括:处理单元1、与每个处理单元1对应的调度选择器2、与每个存储单元0对应的仲裁器3、调度队列4、返回队列5、数据队列6;
42.任一调度选择器2的输入端连接对应的处理单元1的输出端,任一调度选择器2的
输出端连接每个仲裁器3的输入端,所述调度选择器2用于将从所述处理单元1接收到的请求信息发送至所述请求信息指示的存储单元0的仲裁器3;
43.每个仲裁器3的输出端连接对应的存储单元0的输入端、所述调度队列4的输入端,所述仲裁器3用于对来自处理单元1的请求信息进行仲裁,按照仲裁顺序向存储单元0发送请求信息,所述调度队列4用于按照所述仲裁顺序记录处理单元1访问存储单元0的请求顺序;
44.每个存储单元0的输出端、所述调度队列4的输出端、所述返回队列5的输出端连接所述数据队列6的输入端,所述数据队列6的输出端连接每个处理单元1的输入端,所述返回队列5用于记录存储单元0的返回数据的返回顺序,所述数据队列6用于根据所述请求顺序和所述返回顺序的指示,存储存储单元0的返回数据,以及从所述数据队列6取出返回数据至对应的处理单元1。
45.其中,本公开实施例的存储器访问电路的调度队列4、返回队列5、数据队列6的深度相同,该深度表征调度队列4、返回队列5、数据队列6的行数,所述深度是根据处理单元1的并发度确定的,处理单元1的并发度表征处理单元1在不等待请求信息的返回数据的情况下,最多向存储单元0持续发送请求信息的次数;数据队列6的位宽是根据存储单元的数量和返回数据的位宽确定的,调度队列4和返回队列5的位宽相同,调度队列4和返回队列5的位宽是根据存储单元0的数量和处理单元1的数量确定的。
46.在一种可能的实现方式中,本公开实施例的存储器访问电路可以集成到处理器芯片中,用于访问处理器芯片内的多个不同的存储单元0。
47.其中,所述处理器芯片例如包括:中央处理器(central processing unit,cpu)、图形处理器(graphic processing unit,gpu)、通用图形处理单元(general-purpose computing on graphics processing units,gpgpu)、多核处理器(multi-core processor)、数字信号处理单元(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、张量处理器(tensor processing unit,tpu)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件,本公开对此不作限制。
48.其中,存储单元0可包括设置在处理器芯片内部的随机存取存储器(random access memory,ram),例如动态随机存取存储器(dynamic ram,dram)、静态随机存取存储器(static ram)、同步动态随机存取存储器(synchronous dram,sdram)、高速缓存存储器(cached dram,cdram)、增强型动态随机存取存储器(extended data out dram,edram)等,本公开对存储单元0的类型不作限制。
49.示例性地,多个处理单元1可以是多核处理器芯片的多个计算核,可以对多核处理器芯片内的不同的存储单元0进行访问,提高多核并行处理的效率。
50.或者,多个处理单元1也可以是多核处理器芯片中设置在同一计算核中的多线程模块,可以对多核处理器芯片内的不同的存储单元0(可以是位于计算核内的存储单元,也可以是位于计算核外的存储单元)进行访问,提高多线程并行处理的效率。
51.或者,处理器芯片内部包括多个处理单元1和多个调度模块,不同的存储单元0部署在不同的调度模块,调度模块可用于执行调度任务(包括操作数据调度、操作程序调度)。在此情况下,调度模块可用于接收处理单元1的请求信息(例如操作指令),根据请求信息为
处理单元1提供所需的资源(返回数据)。
52.在一种可能的实现方式中,如图1所示,所述存储器访问电路用于访问m个不同的存储单元0,所述存储器访问电路包括:n个处理单元1、与n个处理单元1对应的n个调度选择器2、与m个存储单元0对应m个仲裁器3、一个调度队列4、一个返回队列5、一个数据队列6,m、n为大于1的整数。
53.m个存储单元0可以分别为存储单元0_1~存储单元0_m,n个处理单元1可分别为处理单元1_1~处理单元1_n。
54.n个调度选择器2可分别为调度选择器2_1~调度选择器2_n,即:与处理单元1_1对应的调度选择器2_1,与处理单元1_2对应的调度选择器2_2,以此类推,与处理单元1_n对应的调度选择器2_n。
55.m个仲裁器3可以分别为仲裁器3_1~仲裁器3_m,即:与存储单元0_1对应的仲裁器3_1,与存储单元0_2对应的仲裁器3_2,以此类推,与存储单元0_m对应的仲裁器3_m。
56.如图1所示,任一调度选择器2的输入端连接对应的一个处理单元1的输出端,任一调度选择器2的输出端分别连接m个仲裁器3的输入端。
57.例如,处理单元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的输入端。
58.在示例中,处理单元1_1可生成访问存储单元0_1~访问存储单元0_m中任一存储单元0的请求信息,该请求信息可包括用于指示存储单元0的调度标识。例如,假设存在调度标识1~m,调度标识1可用于指示存储单元0_1,调度标识2可用于指示存储单元0_2,以此类推,调度标识m可用于指示存储单元0_m。通过在请求信息中设置调度标识,有利于将请求信息更准确的传输至调度标识指示的存储单元0。
59.在示例中,假设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相乘。
60.在示例中,请求信息还可以包括请求类型(例如包括读请求和/或写请求)、访问地址(例如读请求的地址,或,写请求的地址)、使能信号(例如使当前请求信息具有某一存储单元的读写权限的信号)等,本公开对此不作具体限制。
61.在此情况下,调度选择器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。
62.类似的,处理单元1_2~处理单元1_n同样可以生成访问存储单元0_1~访问存储单元0_m中任一存储单元0的请求信息,处理单元1_2~处理单元1_n可以将各自生成的包含调度标识的请求信息发送至对应的调度选择器2_2~调度选择器2_n,调度选择器2_2~调度选择器2_n响应于各自接收到的请求信息,可以根据请求信息中调度标识的指示,将该请求信息发送至调度标识指示的存储单元0所对应的仲裁器3,具体可以参考上文,此处不再赘述。
63.如图1所示,每个仲裁器3的输出端连接对应的存储单元0的输入端,m个仲裁器3的输出端连接所述调度队列4的输入端。
64.例如,仲裁器3_1的输出端连接存储单元0_1的输入端,仲裁器3_2的输出端连接存储单元0_2的输入端,以此类推,仲裁器3_m的输出端连接存储单元0_m的输入端。并且,仲裁器3_1~仲裁器3_m的输出端还按照多连一的方式,连接调度队列4的输入端。
65.在示例中,仲裁器3_1可以对访问存储单元0_1的、来自处理单元1_1~处理单元1_n的不同的请求信息进行轮询仲裁(round robin),从n个请求信息中选出当前轮的一个目标请求信息发送至存储单元0_1。类似的,仲裁器3_2~仲裁器3_m同样可以对来自处理单元1_1~处理单元1_n的请求信息进行轮询仲裁(round robin),按照各自的仲裁顺序分别向对应的存储单元0_2~存储单元0_m发送请求信息,此处不再赘述。
66.在上述过程中,每当有仲裁器3_1~仲裁器3_m中的任一仲裁器向对应的存储单元0发送请求信息,可以将当前访问存储单元0的处理单元1的标识信息记录在调度队列4。由于m个仲裁器3执行的每轮仲裁中,调度队列4可记录一次标识信息,经过多轮仲裁,调度队列4可记录m个仲裁器3的仲裁顺序,也即n个处理单元1访问m个存储单元0的请求顺序。
67.在示例中,调度队列4可包括多行队列,任一行任一列可对应一个1比特(bit)的单元,调度队列4通过对不同列的不同行的1比特单元进行标记,记录n个处理单元访问m个存储单元的请求顺序。
68.其中,调度队列4的列数是根据处理单元1的数量n和存储单元0的数量m确定的,即m
×
n列。这样,调度队列4的任一列可以记录一个不同的处理单元1访问一个不同的存储单元0的请求顺序。调度队列4的行数(深度)与处理单元1的并发度(即在不等待请求信息的返回数据的情况下,最多可以连续发出请求信息的次数)相关,处理单元1的并发度越多,需要调度队列4具有越多的行数,本公开对此不作限制。
69.如图1所示,m个存储单元0的输出端、所述调度队列4的输出端、所述返回队列5的输出端连接所述数据队列6的输入端,所述数据队列6的输出端连接n个处理单元1的输入端。
70.例如,存储单元0_1的输出端~存储单元0_m的输出端、调度队列4的输出端、返回队列5的输出端按照多连一的方式,连接数据队列6的输入端,数据队列6的输出端按照一连多的方式,分别连接处理单元1_1的输入端~处理单元1_n的输入端。
71.其中,返回队列5的列数与存储单元0的数量m相同,返回队列5的行数可以与调度队列4的行数相同。返回队列5中任一行任一列可对应一个1比特(bit)的单元,返回队列5可通过对不同列的不同行的1比特单元进行标记,记录m个存储单元0的返回数据的返回顺序,其中,每行可对应一个不同的存储单元0的返回数据的返回顺序。
72.其中,数据队列6的列数与存储单元0的数量m相同,数据队列6的行数可以与调度队列4的行数相同。数据队列6中任一行任一列可对应一个多比特(bit)的单元(例如30比特,本公开对此不作限制)。其中,每行可存储一个不同的存储单元0的返回数据。
73.在示例中,当任一存储单元0响应各自收到的可来自不同处理单元1的请求信息,向数据队列6发送返回数据,数据队列6收到任一存储单元0的返回数据,可以根据调度队列4中记录的请求顺序和返回队列5中记录的返回顺序的指示,将返回数据存储在数据队列6中由请求顺序和返回顺序所指示的位置,并将返回队列5的对应位置处进行标记,用于更新返回队列5记录的返回顺序。
74.每当有返回数据存储到数据队列6中,在返回队列5同步更新返回顺序后,可以通过查询返回队列5的首行是否存在标记,来判断最先发起请求信息的返回数据是否还未返回。在返回队列5的首行存在标记的情况下,说明已经存在最先发起请求信息的返回数据存储到数据队列6,可以根据调度队列4的首行数据的指示,从数据队列6取出返回数据至对应的处理单元1。
75.本公开实施例的存储器访问电路,实现了多个处理单元1访问不同的存储单元0(例如包括部署在不同调度模块中的存储单元),当多个处理单元1访问存储单元0时,可以通过调度队列4记录n个处理单元访问m个存储单元的请求顺序;当存储单元0回复返回数据时,可以根据调度队列4记录的请求顺序以及返回队列5记录的返回顺序指示,将各存储单元0的返回数据存储在数据队列6中,以及从数据队列6中取出返回数据至对应的处理单元1,使得各处理单元1后发送的请求信息的返回数据先缓存在数据队列6中,等待先发起请求信息的返回数据,有利于每个处理单元1获得的返回数据是保序回复(即按照各处理单元1发送请求信息的先后顺序收到对应的返回数据),提升了存储器访问电路的准确性和稳定性。
76.并且,本公开实施例的存储器访问电路,不需要为每个处理单元1分别配置一个用于记录该处理单元1向不同存储单元0发送请求顺序的队列,以及为每个存储单元0分别配置一个用于记录不同处理单元1访问顺序的队列,只需要调度队列4就可以完成不同处理单元访问不同存储单元的记录,降低了存储器访问电路的复杂度,提高了存储器电路的适用性。并且,多个处理单元1的返回数据可以共享一个数据队列6,减少因某一处理单元1独占资源而开设相应存储资源。
77.下面以存储单元0的数量和处理单元1的数量均为3作为一个示例,对本公开实施例的存储器访问电路进行展开说明。应当理解,本公开对存储单元0和处理单元1的数量不作具体限制,可根据实际的应用场景进行设置。
78.图2示出根据本公开实施例的存储器访问电路的示意图,如图2所示的存储访问电路用于解决3个不同的处理单元1访问3个不同的调度模块中的存储单元0。其中,3个处理单元1可以分别为:处理单元1_1、处理单元1_2,以及处理单元1_3;3个存储单元0可以分别为:部署在调度模块1中的存储单元0_1、部署在调度模块2中的存储单元0_2,以及部署在调度模块3中的存储单元0_3。
79.如图2所示,处理单元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的输入端。
80.在一种可能的实现方式中,所述存储器访问电路还包括至少一个第一缓冲器7、每个仲裁器3的输出端通过至少一个第一缓冲器7连接对应的存储单元0的输入端。在存储器访问电路中设置第一缓冲器7,增强了仲裁器3向存储单元0进行数据传输的驱动力,减少了在布线(floorplan)过程中因走线过长,导致信号驱动能力不足的概率。例如,在实际的应用中,在仲裁器3与存储单元0的连线比较长的场景下,如果不设置第一缓冲器7,信号会随着芯片(或电路板)上的走线而衰减,导致系统频率不能提高,性能下降的情况。通过在仲裁器3与存储单元0之间设置第一缓冲器7,可以为信号传输提供更强的驱动力,使仲裁器3发出的请求信息可以正确传输至存储单元0。
81.而且,在存储器访问电路中设置第一缓冲器7,还可以通过第一缓冲器7存储数据,将一次的访问请求(例如由仲裁器3仲裁后的请求信息)进行缓存,其中,第一缓冲器7与仲裁器3之间可采用握手(handshake)的方式进行数据交互。
82.如图2所示,仲裁器3_1的输出端通过两个第一缓冲器7连接存储单元0_1的输入端,仲裁器3_2的输出端通过两个第一缓冲器7连接存储单元0_2的输入端,仲裁器3_3的输出端通过两个第一缓冲器7连接存储单元0_3的输入端。
83.并且,仲裁器3_1~仲裁器3_3的输出端还可以按照多连一的方式,连接调度队列4的输入端。
84.在一种可能的实现方式中,所述调度队列4通过在不同列的不同行置位记录多个处理单元1访问多个存储单元0的请求顺序,其中,所述调度队列4的每列分别用于记录不同的处理单元1访问不同的存储单元0的请求顺序,同一存储单元0对应的多列共用行指针,所述行指针会根据对同一存储单元0的访问次数进行自加操作,所述行指针用于指示在各列中置位的当前行。其中,置位操作可以包括置1、置预设标识、置预设字母等,本公开对此不作限制。
85.在示例中,所述调度队列4包括m
×
n列,每列包括多行,所述调度队列4通过在不同列的不同行置1记录所述n个处理单元1访问m个存储单元0的请求顺序,其中,每列分别用于记录一个不同的处理单元1访问一个不同的存储单元0的请求顺序,同一存储单元0对应的n列共用一个行指针,所述行指针会根据对同一存储单元0的访问次数进行自加操作,所述行指针用于指示在各列中置1的当前行。这样,通过在存储器访问电路设置一个调度队列4,可以更高效更准确的记录多个处理单元1访问多个存储单元0的请求顺序。
86.在本公开实施例的存储器访问电路中,不用为每个处理单元1分别配置一个用于记录该处理单元1向不同存储单元0发送请求顺序的队列,也不用为每个存储单元0分别配置一个用于记录不同处理单元1的访问顺序的队列。设置一个调度队列4,就可以记录多个处理单元访问多个存储单元的请求顺序,降低了存储器访问电路的复杂度,提高了存储器访问电路的适用性。
87.示例性的,图3示出根据本公开实施例的调度队列4的示意图,如图3所示,调度队列4的可以是6行9列的队列,该调度队列4包括了6
×
9个单元,每个单元可存储1比特(bit)的信息。应当理解,图3仅以调度队列4为6行9列为例,本公开对调度队列4的行数和列数不
作限制,可根据实际的应用场景进行设置。
88.如图3所示,在调度队列4中,第1列用于记录处理单元1_1访问存储单元0_1的请求顺序,第2列用于记录处理单元1_1访问存储单元0_2的请求顺序,第3列用于记录处理单元1_1访问存储单元0_3的请求顺序,第4列用于记录处理单元1_2访问存储单元0_1的请求顺序,第5列用于记录处理单元1_2访问存储单元0_2的请求顺序,第6列用于记录处理单元1_2访问存储单元0_3的请求顺序,第7列用于记录处理单元1_3访问存储单元0_1的请求顺序,第8列用于记录处理单元1_3访问存储单元0_2的请求顺序,第9列用于记录处理单元1_3访问存储单元0_3的请求顺序。
89.应当理解,每列分别用于记录一个不同的处理单元1访问一个不同的存储单元0的请求顺序,图3中列与列之间的排序仅作为一个示例,也可以是其他排序,例如,在调度队列4中,第1列用于记录处理单元1_1访问存储单元0_1的请求顺序,第2列用于记录处理单元1_2访问存储单元0_1的请求顺序,第3列用于记录处理单元1_3访问存储单元0_1的请求顺序,第4列用于记录处理单元1_1访问存储单元0_2的请求顺序,第5列用于记录处理单元1_2访问存储单元0_2的请求顺序,第6列用于记录处理单元1_3访问存储单元0_2的请求顺序,第7列用于记录处理单元1_1访问存储单元0_3的请求顺序,第8列用于记录处理单元1_2访问存储单元0_3的请求顺序,第9列用于记录处理单元1_3访问存储单元0_3的请求顺序,本公开对此不作限制。其中,为了更清楚的介绍本公开的方案,下文对本方案的介绍是按照图3中示出的列与列之间的排序。
90.在示例中,行指针用于指示在各列中置1的当前行。当处理单元1_1访问部署在调度模块1中的存储单元0_1,则将调度队列4中第1列,第wr_ptr1行置1;当处理单元1_1访问部署在调度模块2中的存储单元0_2,则将调度队列4中第2列,第wr_ptr1行置1;当处理单元1_1访问部署在调度模块3中的存储单元0_3,则将调度队列4中第3列,第wr_ptr1行置1;当处理单元1_2访问部署在调度模块1中的存储单元0_1,则将调度队列4中第4列,第wr_ptr2行置1;当处理单元1_2访问部署在调度模块2中的存储单元0_2,则将调度队列4中第5列,第wr_ptr2行置1;当处理单元1_2访问部署在调度模块3中的存储单元0_3,则将调度队列4中第6列,第wr_ptr2行置1;当处理单元1_3访问部署在调度模块1中的存储单元0_1,则将调度队列4中第7列,第wr_ptr3行置1;当处理单元1_3访问部署在调度模块2中的存储单元0_2,则将调度队列4中第8列,第wr_ptr3行置1;当处理单元1_3访问部署在调度模块3中的存储单元0_3,则将调度队列4中第9列,第wr_ptr3行置1。
91.其中,存储单元0_1对应的第1列、第4列、第7列共用一个行指针wr_ptr1,响应于处理单元1_1~处理单元1_3中任一处理单元1对存储单元0_1的一次访问,行指针wr_ptr1会执行自加1操作,即:wr_ptr1=wr_ptr1+1;其中,行指针wr_ptr1是按照存储单元0_1进行递增,例如,当处理单元1_1~处理单元1_3同时访问存储单元0_1,则存储单元0_1的wr_ptr1会根据3次访问分别进行+1、+2、+3操作。
92.存储单元0_2对应的第2列、第5列、第8列共用一个行指针wr_ptr2,响应于处理单元1_1~处理单元1_3中任一处理单元1对存储单元0_2的一次访问,行指针wr_ptr2会执行自加1操作,即:wr_ptr2=wr_ptr2+1;其中,行指针wr_ptr2是按照存储单元0_2进行递增,例如,当处理单元1_1~处理单元1_3同时访问存储单元0_2,则存储单元0_2的wr_ptr2会根据3次访问分别进行+1、+2、+3操作。
93.存储单元0_3对应的第3列、第6列、第9列共用一个行指针wr_ptr3,响应于处理单元1_1~处理单元1_3中任一处理单元1对存储单元0_3的一次访问,行指针wr_ptr3会执行自加1操作,即:wr_ptr3=wr_ptr3+1;其中,行指针wr_ptr3是按照存储单元0_3进行递增,例如,当处理单元1_1~处理单元1_3同时访问存储单元0_3,则存储单元0_3的wr_ptr3会根据3次访问分别进行+1、+2、+3操作。
94.在一种可能的实现方式中,所述存储器访问电路还包括至少一个第二缓冲器8,每个存储单元0的输出端通过至少一个第二缓冲器8连接所述数据队列6的输入端。
95.在存储器访问电路中设置第二缓冲器8,增强了存储单元0向数据队列6进行数据传输的驱动力,减少了在布线(floorplan)过程中因走线过长,导致信号驱动能力不足的概率。例如,在实际的应用中,在存储单元0与数据队列6的连线比较长的场景下,如果不设置第二缓冲器8,信号会随着芯片(或电路板)上的走线而衰减,导致系统频率不能提高,性能下降的情况。通过在存储单元0与数据队列6之间设置第二缓冲器8,可以为信号传输提供更强的驱动力,使存储单元0发出的返回数据可以正确传输至数据队列6。
96.而且,在存储器访问电路中设置第二缓冲器8,还可以通过第二缓冲器8存储数据,将一次的返回数据(例如存储单元0响应请求信息所发送的返回数据)进行缓存,其中,第二缓冲器10与数据队列6之间可采用握手(handshake)的方式进行数据交互。
97.如图2所示,存储单元0_1的输出端~存储单元0_3的输出端,分别通过两个第二缓冲器8,按照多连一的方式,连接数据队列6的输入端。
98.并且,返回队列5的输出端、调度队列4的输出端也连接数据队列6的输入端,数据队列6的输出端按照一连多的方式,分别连接处理单元1_1的输入端~处理单元1_3的输入端。
99.在一种可能的实现方式中,所述返回队列5的每列记录对应的存储单元0的返回顺序。例如,所述返回队列5包括m列,每列记录一个对应的存储单元0的返回顺序。其中,设置一个返回队列5就可以记录全部的存储单元0的返回数据的返回顺序,无需为每个存储单元0分别设置一个用于记录顺序的队列,可降低系统复杂度,提高资源利用率。
100.示例性的,图4示出根据本公开实施例的返回队列5的示意图,如图4所示,该返回队列5可以是6行3列的队列,该返回队列5包括了6
×
3个单元,每个单元可存储1比特(bit)的信息。应当理解,图4仅以返回队列5为6行3列为例,本公开对返回队列5的行数和列数不作限制,可根据实际的应用场景进行设置。
101.返回队列5可用于记录存储单元0_1~存储单元0_3的返回数据的返回顺序,其中,第1列可用于记录存储单元0_1的返回数据的返回顺序,第2列可用于记录存储单元0_2的返回数据的返回顺序,第3列可用于记录存储单元0_3的返回数据的返回顺序。
102.在一种可能的实现方式中,所述数据队列6的每列用于储存对应的存储单元0的返回数据,例如,所述数据队列6包括m列,每列用于储存一个对应的存储单元的返回数据。
103.所述数据队列6用于:响应于接收到任一存储单元的返回数据,从所述调度队列4中取出所述存储单元对应的多列(例如n列)数据,进行或操作(例如按位或操作),得到第一数据,以及从所述返回队列5中取出记录所述存储单元的返回顺序的一列数据,进行取反操作(按位取反操作),得到第二数据;将所述第一数据与所述第二数据进行与操作(例如按位与操作),得到第三数据;在所述数据队列6的所述存储单元的对应列中,将所述返回数据写
入所述第三数据指示的写入位置。
104.示例性的,图5示出根据本公开实施例的数据队列6的示意图,如图5所示,数据队列6可以是6行3列的队列,该数据队列6包括了6
×
3个单元,每个单元可存储30比特(bit)的信息。应当理解,图5是以数据队列6为6行3列,每个单元存储30比特的数据为例,本公开对数据队列6的行数和列数,以及每个单元最大可存储数据的位宽不作限制,可根据实际的应用场景进行设置。
105.其中,第1列可用于存储部署在调度模块1中的存储单元0_1的返回数据,第2列可用于存储部署在调度模块2中的存储单元0_2的返回数据,第3列可用于存储部署在调度模块3中的存储单元0_3的返回数据。
106.当部署在调度模块1中存储单元0_1响应请求信息向数据队列6发送返回数据,在此情况下,数据队列6可以将调度队列4的第1列、第4列、第7列的数据取出,按位做或操作,得到第一数据d11,并且,将返回队列5的第1列数据取出,按位做取反操作,得到第二数据d12。然后,将第一数据d11和第二数据d12进行按位与操作,得到第三数据d13。然后对第三数据d13进行寻1操作(leading one),计算出返回数据在数据队列6中存储的行信息,并将返回数据写入数据队列6第1列对应行中。
107.其中,寻1操作(leading one)表示对第三数据d13从低位向上,寻找第三数据d13的首个1的位置。例如,假设第三数据d13为000110,首个1的位置为2,可以将返回数据写入数据队列6中的第1列第2行。
108.当部署在调度模块2中存储单元0_2响应请求信息向数据队列6发送返回数据,在此情况下,数据队列6可以将调度队列4的第2列、第5列、第8列的数据取出,按位做或操作,得到第一数据d21,并且,将返回队列5的第2列数据取出,按位做取反操作,得到第二数据d22。然后,将第一数据d21和第二数据d22进行按位与操作,得到第三数据d23。然后对第三数据d23进行寻1操作(leading one),计算出返回数据在数据队列6中存储的行信息,并将返回数据写入数据队列6第2列对应行中。
109.其中,寻1操作(leading one)表示对第三数据d23从低位向上,寻找第三数据d23的首个1的位置。例如,假设第三数据d23为000110,首个1的位置为2,可以将返回数据写入数据队列6中的第2列第2行。
110.当部署在调度模块3中存储单元0_3响应请求信息向数据队列6发送返回数据,在此情况下,数据队列6可以将调度队列4的第3列、第6列、第9列的数据取出,按位做或操作,得到第一数据d31,并且,将返回队列5的第3列数据取出,按位做取反操作,得到第二数据d32。然后,将第一数据d31和第二数d32据进行按位与操作,得到第三数据d33。然后对第三数据d33进行寻1操作(leading one),计算出返回数据在数据队列6中存储的行信息,并将返回数据写入数据队列6第3列对应行中。
111.其中,寻1操作(leading one)表示对第三数据d33从低位向上,寻找第三数据d33的首个1的位置。例如,假设第三数据d33为000110,首个1的位置为2,可以将返回数据写入数据队列6中的第3列第2行。
112.通过这种方式,可以更高效更准确地确定当前返回数据在数据队列6中的存储位置,有利于使返回数据在数据队列6中按照请求顺序排列。
113.在一种可能的实现方式中,所述返回队列5用于:响应于将所述返回数据写入所述
第三数据指示的写入位置,在所述返回队列5的所述存储单元的对应列中,将所述第三数据指示的写入位置处置位。通过这种方式,可以更高效更准确的记录各存储单元0的返回数据的返回顺序。
114.例如,假设在返回队列5中,是在第i行第j列写入的返回数据,响应于将返回数据写入第i行第j列,在返回队列5的第i行第j列置1,其中,i,j可以为大于1的整数,本公开对此不作限制。其中,返回队列5的初始化队列可以为全0队列,表示存储器访问电路中还未出现待返回各处理单元1的返回数据。其中,置位操作可以包括置1、置预设标识、置预设字母等,本公开对此不作限制。
115.在一种可能的实现方式中,所述数据队列6用于:响应于所述返回数据写入所述数据队列6,获取所述返回队列5的返回顺序结果,其中,所述返回顺序结果是通过将所述返回队列5的首行数据进行或操作(例如按位或操作)得到的;在所述返回顺序结果为预设结果(例如1)的情况下,根据所述调度队列4的首行信息的指示,将所述数据队列6中首行的返回数据分别发送至对应的处理单元1。应当理解,置位操作所置的内容不同,预设结果也不同,在置位操作为置1操作的情况下,可以将预设结果设置为1。
116.在示例中,每当有返回数据写入数据队列6中,可以将返回队列5中第一行中的数据做按位或操作,得到返回顺序结果。若返回顺序结果为1,则表示有返回数据返回,可以将返回数据返回给对应的处理单元1。若返回顺序结果为0,则表示最先发起请求信息的处理单元1对应的返回数据还未返回,需要继续等待。
117.其中,当返回队列5中第1行的数据做按位或操作,返回顺序结果为1时,可以根据调度队列4(参见图3)中第1行第1~9列的数据情况将返回数据发送至对应的处理单元1,举例如下:
118.若调度队列4第1行、1列为1,将数据队列6第1行、1列的返回数据发送给处理单元1_1。
119.若调度队列4第1行、4列为1,将数据队列6第1行、1列的返回数据发送给处理单元1_2。
120.若调度队列4第1行、7列为1,将数据队列6第1行、1列的返回数据发送给处理单元1_3。
121.若调度队列4第1行、2列为1,将数据队列6第1行、2列的返回数据发送给处理单元1_1。
122.若调度队列4第1行、5列为1,将数据队列6第1行、2列的返回数据发送给处理单元1_2。
123.若调度队列4第1行、8列为1,将数据队列6第1行、2列的返回数据发送给处理单元1_3。
124.若调度队列4第1行、3列为1,将数据队列6第1行、3列的返回数据发送给处理单元1_1。
125.若调度队列4第1行、6列为1,将数据队列6第1行、3列的返回数据发送给处理单元1_2。
126.若调度队列4第1行、9列为1,将数据队列6第1行、3列的返回数据发送给处理单元1_3。
127.通过这种方式,有利于最先发起请求信息的返回数据先发送至存储单元0,有利于将各存储单元0返回的返回数据保序传递至对应的处理单元1,进一步提升存储器访问电路的准确性和稳定性。
128.在一种可能的实现方式中,将所述数据队列6中首行的返回数据分别发送至对应的处理单元1之后,所述数据队列6用于:在所述数据队列6中,将发送至对应的处理单元1的所述数据队列6中首行的返回数据出队。
129.所述调度队列4用于:在所述调度队列4中,将发送了所述返回数据的存储单元0对应的多列(例如n列)的首行数据出队;
130.所述返回队列5用于:在所述返回队列5中,将发送了所述返回数据的存储单元0的对应列的首行数据出队。
131.在示例中,若数据队列6中第1行第1列的返回数据分别发送至各自对应的处理单元1,可以将调度队列4中第1列、第4列、第7列与返回队列5第1列往下挪1位,将数据队列6第1列往下挪一位。
132.若数据队列6中第1行第2列的返回数据分别发送至各自对应的处理单元1,可以将调度队列4第2列、第5列、第8列和返回队列5第2列往下挪1位,将数据队列6第2列往下挪一位。
133.若数据队列6中第1行第3列的返回数据分别发送至各自对应的处理单元1,可以将调度队列4第3列、第6列、第9列和返回队列5第3列往下挪1位,将数据队列6第3列往下挪一位。
134.通过这种方式,可以清理调度队列4、返回队列5、数据队列6中的无用数据(例如已经发送至各处理单元的返回数据、与已经发送至各处理单元1的返回数据相关联的请求顺序和返回顺序),以便为新的返回数据提供更多的存储空间,提高存储器访问电路的工作效率和资源利用率。
135.下面以一个具体示例对本公开实施例的存储器访问电路进行说明。
136.假设在t0时刻,处理单元1_1访问部署在调度模块1中的存储单元0_1,处理单元1_2同样访问部署在调度模块1中的存储单元0_1,处理单元1_3访问部署在调度模块3中的存储单元0_3;在t1时刻,处理单元1_1访问部署在调度模块1中的存储单元0_1。
137.在t0时刻,存储单元0_1对应的仲裁器3_1可能会同时收到来自处理单元1_1的请求信息和处理单元1_2的请求信息,仲裁器3_1会对来自处理单元1_1的请求信息和处理单元1_2的请求信息进行轮询仲裁(round robin),选择将来自处理单元1_1的请求信息发送至存储单元0_1;同步的,存储单元0_3对应的仲裁器3_3收到一个来自处理单元1_3的请求信息,并将来自处理单元1_3的请求信息发送至存储单元0_3;
138.在这种情况下,调度队列4的写入情况为:调度队列4第1列第1行变为1,第9列第一行变为1。存储单元0_1的行指针wr_ptr1=wr_ptr1+1;存储单元0_3的行指针wr_ptr3=wr_ptr3+1。
139.t1时刻,存储单元0_1对应的仲裁器3_1又收到了来自处理单元1_1的请求信息,仲裁器3_1会对本次来自处理单元1_1的请求信息和t0时刻遗留的来自处理单元1_2的请求信息进行轮询仲裁(round robin),选择将来自处理单元1_2的请求信息发送至存储单元0_1;
140.在这种情况下,调度队列4的写入情况为:调度队列4的第4列第2行变为1,存储单
元0_1的行指针wr_ptr1=wr_ptr1+1。
141.t2时刻,仲裁器3_1没有收到新的请求信息,仲裁器3_1会将t1时刻遗留的来自处理单元1_1的请求信息,发送至存储单元0_1;
142.在这种情况下,调度队列4的写入情况为:调度队列4的第1列第3行变为1,存储单元0_1的行指针wr_ptr1=wr_ptr1+1。更新后的调度队列4的置1情况见图3。
143.当数据队列6收到从部署在调度模块1的存储单元0_1发送的返回数据时,将调度队列4中对应存储单元0_1的第1列、第4列、第7列取出,即:000101、000010、000000,进行按位或操作000101|000010|000000,此时获取的第一数据为000111。以及,从返回队列5中对应存储单元0_1的第1列取出,即:000000,将返回队列5的第1列序进行按位取反操作~000000,得到第二数据为111111。对第一数据000111与第二数据111111进行按位与操作000111&111111,得到第三数据000111。然后,对第三数据000111进行寻1操作(leading one),找到第一个1的位置为1,则将收到的返回数据写入数据队列6中存储单元0_1对应的第1列的位置1(即第1行)上,并且,将返回队列5的第1列第1行记为1,返回队列5的第1列变为000001。
144.当数据队列6收到从部署在调度模块3的存储单元0_3发送的返回数据时,将调度队列4中对应存储单元0_3的第3列、第6列、第9列取出,即:000000、000000、000001,进行按位或操作000000|000000|000001,此时获取的第一数据为000001。以及,从返回队列5中对应存储单元0_3的第3列取出,即:000000,将返回队列5的第3列序进行按位取反操作~000000,得到第二数据为111111。对第一数据000001与第二数据111111进行按位与操作000001&111111,得到第三数据000001。然后,对第三数据000001进行寻1操作(leading one),找到第一个1的位置为1,则将收到的返回数据写入数据队列6中存储单元0_3对应的第3列的位置1(即第1行)上,并且,将返回队列5的第3列第1行记为1,返回队列5的第3列变为000001。
145.当数据队列6再次收到部署在调度模块1的存储单元0_1发送的返回数据时,第一数据为000111,第二数据为111110(返回队列5的第1列序进行按位取反操作~000001)。第一数据000111与第二数据111110进行按位与操作000111&111110,得到第三数据000110。然后,对第三数据000110进行寻1操作(leading one),找到第一个1的位置为2,则将收到的返回数据写入数据队列6中存储单元0_1对应的第1列的位置2(即第2行)上,并且,将返回队列5的第1列第2行记为1,返回队列的第1列变为000011。
146.当数据队列6再次收到部署在调度模块1的存储单元0_1发送的返回数据时,第一数据为000111,第二数据为111100(返回队列5的第1列序进行按位取反操作~000011)。第一数据000111与第二数据111100进行按位与操作000111&111100,得到第三数据000100。然后,对第三数据000100进行寻1操作(leading one),找到第一个1的位置为3,则将收到的返回数据写入数据队列6中存储单元0_1对应的第1列的位置3(即第2行)上,并且,将返回队列5的第1列第3行记为1,返回队列5的第1列变为000111。
147.其中,在上述过程中,每当将返回数据写入数据队列6,会同步在返回队列5中相应位置处进行置1记录,此时将返回队列5中第一行中数101做按位或操作1|0|1,得到返回顺序结果1,说明数据队列6中有返回数据,可根据调度队列4的第1行数据100000001,将数据队列6中第1行存储的返回数据发送至对应的处理单元1。其中,在调度队列4的第1行数据
100000001中,第1列数据为1,可以将数据队列6中第1行第1列的返回数据发送给处理单元1_1;第9列数据为1,可以将数据队列6中第1行第3列的返回数据发送给处理单元1_3。
148.然后,在将数据队列6中第1行第1列的返回数据发送至处理单元1_1,可以将调度队列4中第1列、第4列、第7列与返回队列5中第1列往下挪1位,将数据队列6中第1列往下挪一位。在将数据队列6中第1行第3列的返回数据发送至处理单元1_3,可以将调度队列4第3列、第6列、第9列和返回队列5第3列往下挪1位,将数据队列6第3列往下挪一位。
149.综上所述,本公开实施例的存储器访问电路,实现了多个处理单元1访问不同的存储单元0(例如包括部署在不同调度模块中的存储单元),当多个处理单元1访问存储单元0时,可以通过调度队列4记录n个处理单元访问m个存储单元的请求顺序;当存储单元0回复返回数据时,可以根据调度队列4记录的请求顺序以及返回队列5记录的返回顺序指示,将各存储单元0的返回数据存储在数据队列6中,以及从数据队列6中取出返回数据至对应的处理单元1,使得各处理单元1后发送的请求信息的返回数据先缓存在数据队列6中,等待先发起请求信息的返回数据,有利于每个处理单元1获得的返回数据是保序回复(即按照各处理单元1发送请求信息的先后顺序收到对应的返回数据),提升了存储器访问电路的准确性和稳定性。
150.并且,公开实施例的存储器访问电路,不需要为每个处理单元1分别配置一个用于记录该处理单元1向不同存储单元0发送的请求顺序的队列,以及为每个存储单元0分别配置一个用于记录不同处理单元1的访问顺序的队列,只需要调度队列4就可以完成不同处理单元1访问不同存储单元0记录,降低了存储器访问电路的复杂度,提供了存储器访问电路的适用性。并且,多个处理单元1的返回数据可以共享一个数据队列6,减少某一处理单元1独占资源而开设相应存储资源。
151.图6示出根据本公开实施例的一种存储器访问方法的流程图,所述方法应用于如图1所示的存储器访问电路的多个处理单元1访问多个存储单元0部分,所述存储器访问电路用于访问不同的存储单元0,所述存储器访问电路包括:调度队列4、多个处理单元1、与每个处理单元1对应的调度选择器2、与每个存储单元0对应的仲裁器3;任一调度选择器2的输入端连接对应的处理单元1的输出端,任一调度选择器2的输出端连接每个仲裁器3的输入端,每个仲裁器3的输出端连接对应的存储单元0的输入端、所述调度队列4的输入端。
152.如图6所示,所述存储器访问方法包括:在步骤s11中,每个处理单元1将生成的用于访问存储单元0的请求信息发送至对应的调度选择器2。
153.在步骤s12中,所述调度选择器2将从所述处理单元1接收到的请求信息发送至所述请求信息指示的存储单元0的仲裁器3。
154.在步骤s13中,所述仲裁器3对来自处理单元1的请求信息进行仲裁,按照仲裁顺序向对应的存储单元0发送请求信息;
155.在步骤s14中,调度队列4按照所述仲裁顺序记录处理单元1访问存储单元0的请求顺序。
156.在一种可能的实现方式中,步骤s14可包括:所述调度队列4通过在不同列的不同行置位记录多个处理单元1访问多个存储单元0的请求顺序,其中,所述调度队列4的每列分别用于记录不同的处理单元1访问不同的存储单元0的请求顺序,同一存储单元0对应的多列共用行指针,所述行指针会根据对同一存储单元0的访问次数进行自加操作,所述行指针
用于指示在各列中置位的当前行。
157.在一种可能的实现方式中,所述存储器访问电路还包括至少一个第一缓冲器,每个仲裁器3的输出端通过至少一个第一缓冲器连接对应的存储单元0的输入端。
158.图7示出根据本公开实施例的另一种存储器访问方法的流程图,所述方法应用于如图1所示的存储器访问电路的多个存储单元0响应处理单元1的访问请求回传返回数据部分,所述存储器访问电路用于访问不同的存储单元0,所述存储器访问电路包括:调度队列4、返回队列5、数据队列6、多个处理单元1;每个存储单元0的输出端、所述调度队列4的输出端、所述返回队列5的输出端连接所述数据队列6的输入端,所述数据队列6的输出端连接每个处理单元1的输入端。
159.所述存储器访问方法包括:在步骤s15中,数据队列6根据调度队列4记录的请求顺序和返回队列5记录的存储单元0的返回数据的返回顺序,存储存储单元0的返回数据;在步骤s16中,从所述数据队列6取出返回数据至对应的处理单元1。
160.在一种可能的实现方式中,所述返回队列5的每列用于记录对应的存储单元0的返回顺序,所述数据队列6的每列用于储存对应的存储单元0的返回数据,步骤s15可包括:所述数据队列6响应于接收到任一存储单元0的返回数据,从所述调度队列4中取出所述存储单元0对应的多列数据,进行或操作,得到第一数据,以及从所述返回队列5中取出记录所述存储单元0的返回顺序的一列数据,进行取反操作,得到第二数据;将所述第一数据与所述第二数据进行与操作,得到第三数据;在所述数据队列6的所述存储单元0的对应列中,将所述返回数据写入所述第三数据指示的写入位置;响应于将所述返回数据写入所述第三数据指示的写入位置,在所述返回队列5的所述存储单元0的对应列中,将所述第三数据指示的写入位置处置位。
161.在一种可能的实现方式中,步骤s16可包括:获取所述返回队列5的返回顺序结果,其中,所述返回顺序结果是通过将所述返回队列5的首行数据进行或操作得到的;在所述返回顺序结果为预设结果的情况下,根据所述调度队列4的首行信息的指示,将所述数据队列6中首行的返回数据分别发送至对应的处理单元1。
162.在一种可能的实现方式中,将所述数据队列6中首行的返回数据分别发送至对应的处理单元1之后,所述存储器访问方法还包括:在所述数据队列6中,将发送至对应的处理单元1的所述数据队列6中首行的返回数据出队;在所述调度队列4中,将发送了所述返回数据的存储单元0对应的多列的首行数据出队;在所述返回队列5中,将发送了所述返回数据的存储单元0的对应列的首行数据出队。
163.在一种可能的实现方式中,所述存储器访问电路还包括至少一个第二缓冲器,每个存储单元0的输出端通过至少一个第二缓冲器连接所述数据队列6的输入端。
164.可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
165.此外,本公开还提供了封装了存储器访问电路的集成电路、电子设备、计算机程序产品,上述均可用来实现本公开提供的任一种存储器访问方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
166.本公开实施例还提出一种集成电路,所述集成电路包括如上所述的存储器访问电路。
167.本公开实施例还提出一种电子设备,所述电子设备包括如上所述的存储器访问电路。电子设备可以被提供为终端、服务器或其它形态的设备。例如,电子设备可以为用户设备(user equipment,ue)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(personal digital assistant,pda)、手持设备、计算设备、车载设备、可穿戴设备等,本公开对此不作限制。
168.本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
169.该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
170.上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
171.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
172.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

技术特征:
1.一种存储器访问电路,其特征在于,包括:所述存储器访问电路用于访问不同的存储单元,所述存储器访问电路包括:调度队列、返回队列、数据队列、处理单元、与每个处理单元对应的调度选择器、与每个存储单元对应的仲裁器;任一调度选择器的输入端连接对应的处理单元的输出端,任一调度选择器的输出端连接每个仲裁器的输入端,所述调度选择器用于将从所述处理单元接收到的请求信息发送至所述请求信息指示的存储单元的仲裁器;每个仲裁器的输出端连接对应的存储单元的输入端、所述调度队列的输入端,所述仲裁器用于对来自处理单元的请求信息进行仲裁,按照仲裁顺序向存储单元发送请求信息,所述调度队列用于按照所述仲裁顺序记录处理单元访问存储单元的请求顺序;每个存储单元的输出端、所述调度队列的输出端、所述返回队列的输出端连接所述数据队列的输入端,所述数据队列的输出端连接每个处理单元的输入端,所述返回队列用于记录存储单元的返回数据的返回顺序,所述数据队列用于根据所述请求顺序和所述返回顺序的指示,存储存储单元的返回数据,以及从所述数据队列取出返回数据至对应的处理单元。2.根据权利要求1所述的存储器访问电路,其特征在于,所述调度队列通过在不同列的不同行置位记录多个处理单元访问多个存储单元的请求顺序,其中,所述调度队列的每列分别用于记录不同的处理单元访问不同的存储单元的请求顺序,同一存储单元对应的多列共用行指针,所述行指针会根据对同一存储单元的访问次数进行自加操作,所述行指针用于指示在各列中置位的当前行。3.根据权利要求1所述的存储器访问电路,其特征在于,所述返回队列的每列记录对应的存储单元的返回顺序。4.根据权利要求2或3所述的存储器访问电路,其特征在于,所述数据队列的每列用于储存对应的存储单元的返回数据,所述数据队列用于:响应于接收到任一存储单元的返回数据,从所述调度队列中取出所述存储单元对应的多列数据,进行或操作,得到第一数据,以及从所述返回队列中取出记录所述存储单元的返回顺序的一列数据,进行取反操作,得到第二数据;将所述第一数据与所述第二数据进行与操作,得到第三数据;在所述数据队列的所述存储单元的对应列中,将所述返回数据写入所述第三数据指示的写入位置。5.根据权利要求4所述的存储器访问电路,其特征在于,所述返回队列用于:响应于将所述返回数据写入所述第三数据指示的写入位置,在所述返回队列的所述存储单元的对应列中,将所述第三数据指示的写入位置处置位。6.根据权利要求5所述的存储器访问电路,其特征在于,所述数据队列用于:获取所述返回队列的返回顺序结果,其中,所述返回顺序结果是通过将所述返回队列的首行数据进行或操作得到的;在所述返回顺序结果为预设结果的情况下,根据所述调度队列的首行信息的指示,将所述数据队列中首行的返回数据分别发送至对应的处理单元。
7.根据权利要求6所述的存储器访问电路,其特征在于,将所述数据队列中首行的返回数据分别发送至对应的处理单元之后,所述数据队列用于:在所述数据队列中,将发送至对应的处理单元的所述数据队列中首行的返回数据出队;所述调度队列用于:在所述调度队列中,将发送了所述返回数据的存储单元对应的多列的首行数据出队;所述返回队列用于:在所述返回队列中,将发送了所述返回数据的存储单元的对应列的首行数据出队。8.根据权利要求1-3中任一项所述的存储器访问电路,其特征在于,所述存储器访问电路还包括至少一个第一缓冲器、至少一个第二缓冲器,每个仲裁器的输出端通过至少一个第一缓冲器连接对应的存储单元的输入端,每个存储单元的输出端通过至少一个第二缓冲器连接所述数据队列的输入端。9.一种存储器访问方法,其特征在于,所述存储器访问方法包括:每个处理单元将生成的用于访问存储单元的请求信息发送至对应的调度选择器;所述调度选择器将从所述处理单元接收到的请求信息发送至所述请求信息指示的存储单元的仲裁器;所述仲裁器对来自处理单元的请求信息进行仲裁,按照仲裁顺序向对应的存储单元发送请求信息;调度队列按照所述仲裁顺序记录处理单元访问存储单元的请求顺序。10.根据权利要求9所述的存储器访问方法,其特征在于,所述调度队列按照所述仲裁顺序记录处理单元访问存储单元的请求顺序,包括:所述调度队列通过在不同列的不同行置位记录多个处理单元访问多个存储单元的请求顺序,其中,所述调度队列的每列分别用于记录不同的处理单元访问不同的存储单元的请求顺序,同一存储单元对应的多列共用行指针,所述行指针会根据对同一存储单元的访问次数进行自加操作,所述行指针用于指示在各列中置位的当前行。11.一种存储器访问方法,其特征在于,所述存储器访问方法包括:数据队列根据调度队列记录的请求顺序和返回队列记录的存储单元的返回数据的返回顺序,存储存储单元的返回数据;从所述数据队列取出返回数据至对应的处理单元。12.根据权利要求11所述的存储器访问方法,其特征在于,所述返回队列的每列用于记录对应的存储单元的返回顺序,所述数据队列的每列用于储存对应的存储单元的返回数据,所述数据队列根据调度队列记录的请求顺序和返回队列记录的存储单元的返回数据的返回顺序,存储存储单元的返回数据,包括:所述数据队列响应于接收到任一存储单元的返回数据,从所述调度队列中取出所述存储单元对应的多列数据,进行或操作,得到第一数据,以及从所述返回队列中取出记录所述存储单元的返回顺序的一列数据,进行取反操作,得到第二数据;
将所述第一数据与所述第二数据进行与操作,得到第三数据;在所述数据队列的所述存储单元的对应列中,将所述返回数据写入所述第三数据指示的写入位置;响应于将所述返回数据写入所述第三数据指示的写入位置,在所述返回队列的所述存储单元的对应列中,将所述第三数据指示的写入位置处置位。13.根据权利要求11所述的存储器访问方法,其特征在于,所述从所述数据队列取出返回数据至对应的处理单元,包括:获取所述返回队列的返回顺序结果,其中,所述返回顺序结果是通过将所述返回队列的首行数据进行或操作得到的;在所述返回顺序结果为预设结果的情况下,根据所述调度队列的首行信息的指示,将所述数据队列中首行的返回数据分别发送至对应的处理单元。14.一种集成电路,其特征在于,所述集成电路包括如权利要求1-8中任一项所述的存储器访问电路。15.一种电子设备,其特征在于,所述电子设备包括如权利要求1-8中任一项所述的存储器访问电路。

技术总结
本公开涉及一种存储器访问电路及存储器访问方法、集成电路和电子设备,涉及电子技术领域,该存储器访问电路用于访问不同的存储单元,包括调度队列、返回队列、数据队列、处理单元、与每个处理单元对应的调度选择器、与每个存储单元对应的仲裁器,其中,调度队列用于按照仲裁顺序记录处理单元访问存储单元的请求顺序;返回队列用于记录存储单元的返回数据的返回顺序,数据队列用于根据请求顺序和返回顺序的指示,存储存储单元的返回数据,以及从数据队列取出返回数据至对应的处理单元。本公开实施例可实现各处理单元按照其发送请求信息的先后顺序收到对应的返回数据,提升了存储器访问电路的准确性和稳定性。访问电路的准确性和稳定性。访问电路的准确性和稳定性。


技术研发人员:请求不公布姓名
受保护的技术使用者:摩尔线程智能科技(北京)有限责任公司
技术研发日:2023.07.03
技术公布日:2023/8/13
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐