CN116360672A - 访问存储器的方法、装置和电子设备 - Google Patents
访问存储器的方法、装置和电子设备 Download PDFInfo
- Publication number
- CN116360672A CN116360672A CN202111617876.7A CN202111617876A CN116360672A CN 116360672 A CN116360672 A CN 116360672A CN 202111617876 A CN202111617876 A CN 202111617876A CN 116360672 A CN116360672 A CN 116360672A
- Authority
- CN
- China
- Prior art keywords
- access
- sub
- instruction
- matrix
- state
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 114
- 238000000034 method Methods 0.000 title claims abstract description 62
- 239000011159 matrix material Substances 0.000 claims description 93
- 238000013507 mapping Methods 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 20
- 230000009191 jumping Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009472 formulation Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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)
- Human Computer Interaction (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开提供了一种访问存储器的方法、装置和电子设备,可用于数字芯片领域、数字电路设计领域等。该方法包括:接收针对存储器的访问指令,访问指令包括访问起始地址和访问对象大小,存储器包括多个块;响应于访问指令,如果访问对象的终止地址超出访问对象所在起始块的终止地址,则根据访问起始地址、访问对象大小和块大小将访问指令拆分为多个子访问指令,多个子访问指令各自对应的子访问起始地址不同;基于多个子访问指令访问与多个子访问指令各自对应的子访问起始地址,得到与多个子访问指令各自对应的子访问结果;以及基于子访问结果得到针对访问指令的访问结果。
Description
技术领域
本公开涉及数字芯片领域、数字电路设计领域,更具体地,涉及一种访问存储器的方法、装置和电子设备。
背景技术
随着技术的发展,各种数字芯片、数字电路系统等对内外部的存储带宽要求越来越高,双通道、甚至是多通道的存储器越来越多的被采用,有效的提高了访问的带宽。
在实现本公开构思的过程中,申请人发现相关技术至少存在如下问题:存储器的访问延迟较高。
发明内容
本公开的个方面提供了一种访问存储器的方法,接收针对存储器的访问指令,访问指令包括访问起始地址和访问对象大小,存储器包括多个块;响应于访问指令,如果访问对象的终止地址超出访问对象所在起始块的终止地址,则根据访问起始地址、访问对象大小和块大小将访问指令拆分为多个子访问指令,多个子访问指令各自对应的子访问起始地址不同;基于多个子访问指令访问与多个子访问指令各自对应的子访问起始地址,得到与多个子访问指令各自对应的子访问结果;以及基于子访问结果得到针对访问指令的访问结果。
在本公开实施例中,多个块各自的块大小相同,每个块具有对应的子起始地址;上述方法还包括:构建子起始地址和通道之间的映射关系;基于多个子访问指令访问与多个子访问指令各自对应的子访问起始地址,得到与多个子访问指令各自对应的子访问结果包括:对于每个子访问指令,基于与子访问指令的子访问起始地址和映射关系确定待访问的通道;以及访问待访问的通道,得到与子访问指令对应的子访问结果。
在本公开实施例中,块大小为M,通道的个数为N;对于各通道的奇数块,与各通道的第i个块对应的起始地址为(M×矩阵A)的阵元,与各通道的第i个块对应的终止地址为(M×矩阵B-参考矩阵)的阵元,其中,矩阵A=(aij),阵元aij的取值按照i从小到大依序为((i-1)×N)至(i×N-1),矩阵B=(bij),阵元bjj的取值按照i从小到大依序为((i-1)×N+1)至(i×N),i是大于0的奇数,j是小于或者等于N的正整数,矩阵A和矩阵B的列数与通道的个数相同,参考矩阵的阵元全部为1;或者,对于各通道的偶数块,与各通道的第i个块对应的起始地址为(M×矩阵B’-参考矩阵)的阵元,与各通道的第i个块对应的终止地址为(M×矩阵A’)的阵元,矩阵A’是矩阵A沿竖直方向翻转的矩阵,矩阵B’是矩阵B沿竖直方向翻转的矩阵,矩阵A=(aij),阵元aij的取值按照i从小到大依序为((i-1)×N)至(i×N-1),矩阵B=(bij),阵元bij的取值按照i从小到大依序为((i-1)×N+1)至(i×N),i是大于1的偶数,j是小于或者等于N的正整数,矩阵A和矩阵B的列数与通道的个数相同,参考矩阵的阵元全部为1。
在本公开实施例中,块大小为M,通道的个数为N;以及与各通道的第i个块对应的起始地址为(M×矩阵A)的阵元,与各通道的第i个块对应的终止地址为(M×矩阵B-参考矩阵)的阵元,其中,矩阵A=(aij),阵元aij的取值按照i从小到大依序为((i-1)×N)至(i×N-1),矩阵B=(bij),阵元bij的取值按照i从小到大依序为((i-1)×N+1)至(i×N),i是大于0的整数,j是小于或者等于N的正整数,矩阵A和矩阵B的列数与通道的个数相同,参考矩阵的阵元全部为1。
在本公开实施例中,多个子访问指令各自具有状态机,状态机包括空闲状态、指令执行状态和等待执行状态;存储器与存储访问控制器相连,存储访问控制器和主控制器相连。
在本公开实施例中,上述方法还包括:在接收到来自主控制器的访问指令之后,如果主控制器能够接收数据并且存储访问控制器能够接收命令,则将子访问指令的状态机从空闲状态跳转为指令执行状态;以及如果主控制器无法接收数据或者存储访问控制器无法接收命令,则将子访问指令的状态机从空闲状态跳转为等待执行状态,并且在主控制器能够接收数据并且存储访问控制器能够接收命令时,将子访问指令的状态机从等待执行状态跳转为指令执行状态。
在本公开实施例中,等待执行状态包括等待主控制器状态和等待存储访问控制器状态;如果主控制器无法接收数据或者存储访问控制器无法接收命令,则将子访问指令的状态机从空闲状态跳转为等待执行状态包括:如果主控制器无法接收数据,则将子访问指令的状态机从空闲状态跳转为等待主控制器状态;以及如果存储访问控制器无法接收指令,则将子访问指令的状态机从空闲状态跳转为等待存储访问控制器状态。
在本公开实施例中,等待执行状态还包括:数据返回主控制器状态。相应地,上述方法还包括:如果子访问指令的状态机处于等待存储访问控制器状态时,存储访问控制器转变为能够接收指令,则将子访问指令的状态机跳转为数据返回主控制器状态;将存储访问控制器获取的数据发送给主控制器;以及将子访问指令的状态机跳转为空闲状态。
在本公开实施例中,等待执行状态还包括:写入缓存状态。相应地,上述方法还包括:如果子访问指令的状态机处于等待主控制器状态时,将子访问指令发送给存储访问控制器,并且将子访问指令的状态机跳转为写入缓存状态;将存储访问控制器获取的数据存储在缓存中;当主控制器能够接收数据时,将缓存中的数据发送给主控制器;以及将子访问指令的状态机跳转为空闲状态。
在本公开实施例中,上述方法还包括:如果访问对象的终止地址未超出访问对象所在起始块的终止地址,则根据访问起始地址访问存储器。
本公开的另一方面提供了一种访问存储器的装置,包括:访问指令接收模块、访问指令拆分模块、子访问指令访问模块和子访问结果拼接模块。其中,访问指令接收模块用于接收针对存储器的访问指令,访问指令包括访问起始地址和访问对象大小,存储器包括多个块;访问指令拆分模块用于响应于访问指令,如果访问对象的终止地址超出访问对象所在起始块的终止地址,则根据访问起始地址、访问对象大小和块大小将访问指令拆分为多个子访问指令,多个子访问指令各自对应的子访问起始地址不同;子访问指令访问模块用于基于多个子访问指令访问与多个子访问指令各自对应的子访问起始地址,得到与多个子访问指令各自对应的子访问结果;以及子访问结果拼接模块用于基于子访问结果得到针对访问指令的访问结果。
本公开的另一方面提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时用于实现如上的方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,指令在被执行时用于实现如上的方法。
本公开的另一方面提供了一种计算机程序,计算机程序包括计算机可执行指令,指令在被执行时用于实现如上的方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了一种数据访问通路的示意图;
图2示意性示出了根据本公开实施例的适用于访问存储器的方法、装置和电子设备的应用场景的示意图;
图3示意性示出了根据本公开实施例的访问存储器的方法的流程图;
图4示意性示出了根据本公开实施例的访问通道的方法的流程图;
图5示意性示出了根据本公开实施例的访问通路的示意图;
图6示意性示出了根据本公开实施例的通道与块之间映射关系的示意图;
图7示意性示出了根据本公开另一实施例的通道与块之间映射关系的示意图;
图8示意性示出了根据本公开实施例的状态机的状态跳转的方法的流程图;
图9示意性示出了根据本公开实施例的状态机的状态跳转示意图;
图10示意性示出了根据本公开实施例的与读数据指令对应的状态机的状态跳转示意图;
图11示意性示出了根据本公开实施例的访问存储器的装置的方框图;以及
图12示意性示出了根据本公开实施例的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
随着技术的发展,各种数字芯片、数字电路系统等对内外部的存储带宽要求越来越高,双通道、甚至是多通道的存储器越来越多的被采用,有效的提高了访问的带宽。
图1示意性示出了一种数据访问通路的示意图。
如图1所示,数据访问通路从主控制器至存储器。主控制器发送访问指令给存储访问控制器,由存储访问控制器直接对存储器执行相应的操作,并返回结果给主控器。
在某些实施例中,存储器可以是处理器(如中央处理器CPU)外部的存储单元,如同步动态随机存取内存(Synchronous Dynamic Random-Access Memory,简称SDRAM),双倍速率同步动态随机存取内存(DDR),闪存(FLASH),嵌入式多媒体控制器(embedded MultiMedia Card,简称eMMC)等。存储器也可以是处理器内部的存储单元,如嵌入式闪存(eFlash)。这些存储器的共同特点是有较大的读/写的访问延迟。访问延迟导致在连续读/写同一个通道时,后面的读/写操作只能等待前一个读/写操作完成后再开始,造成读/写效率的降低。这种连续地址的访问和比较近的跳转访问又是相关技术中的一种主要访问形式,如何去减少这样的等待时间就成为提高数据访问效率的关键。
图2示意性示出了根据本公开实施例的适用于访问存储器的方法、装置和电子设备的应用场景的示意图。如图2所示,本公开实施例的技术方案可以应用于多通道存储器系统包括多通道存储器以及多个处理单元。多通道存储器与处理单元耦接。例如,处理单元除了可经由内部互联存取多通道存储器,处理单元间也可经由内部互联的联接而相互沟通。多通道存储器可以是DRAM或SRAM等。
以具有两个存取通道为例进行示例性说明,但本发明并不限制于此。如图2所示,多通道存储器可以包括地址通道映射单元、缓存、存储访问控制器、以及存储模块(简称为块)。
以下以多通道存储器具有两个存取通道(简称通道)为例进行示例性说明。存储访问控制器耦接存储模块。在某些实施例中,第一个存储模块储存第一通道的数据,存储访问控制器处理对应通道的存储器存取操作,也就是控制存储模块的存取。
第一通道以及第二通道映射至相同的存储器空间,且采用非连续的地址映射机制来配置存储器地址。需要说明的是,地址通道映射单元可以是物理结构,如以集成电路的方式集成在如存储访问控制器中。地址通道映射单元可以是虚拟结构,例如,以软件的形式存储在如存储访问控制器或其它硬件中。
地址通道映射单元耦接缓存、存储访问控制器和处理单元。地址通道映射单元可自处理单元接收针对存取多通道存储器的访问指令,并分派上述访问指令至存储访问控制器。缓存可储存地址通道映射单元分派访问指令所需的多项参数。此外,缓存还可以存储处理单元暂时无法接收的数据,如处理单元无法接收来自存储访问控制器的数据时,可以先将数据存储在缓存中,待处理单元能够接收数据时,再从缓存中接收数据。
基于上述的地址通道映射方法,地址通道映射单元可接收用以存取多通道存储器的多个访问指令,并根据访问对象尺寸与存储模块的块尺寸配置这些访问指令至第一通道与第二通道。此外,地址通道映射单元可以对接收的访问指令进行拆分和/或拼装,得到新的访问指令。例如,对于访问指令的访问对象的终止地址超出访问对象所在起始块的终止地址时,可以将访问指令拆分为多个子访问指令,这样可以分别基于多个子访问指令以并行处理的方式实现对存储模块的并行访问,有效提升访问效率。
在某些实施例中,缓存中可储各块的块尺寸、块起始地址或者块终止地址等中至少一种。块尺寸可以是根据场景需求、数据读写特点等预先设定的。地址通道映射单元可根据缓存储存的块尺寸分派来自处理单元的访问指令至存储访问控制器。例如,处理单元可设定缓存储存的块尺寸。此外,地址通道映射单元更可提供能够实现人机交互的设置界面,以便设置块尺寸。另外,地址通道映射单元中还可以存储有地址与通道之间的映射关系,以便基于访问指令的访问起始地址确定需要访问的通道。
在某些实施例中,地址通道映射单元可以包括多个桥接单元B1~Bn,其中n为大于零的整数。每一桥接单元分别对应至多个处理单元中的部分处理单元,并接收对应的处理单元传输的访问指令,以根据块尺寸来配置访问指令。
例如,第一存取带宽与第二存取带宽之间的带宽比例可与对应的块的块尺寸之间的比例相同。例如,各块的块尺寸可以相同。不同通道对应的块之间可以交错排布。如块1的块尺寸可为64比特组(bvtes),而块2的块尺寸则为64比特组。
需要说明的是,图2所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。本公开实施例提供的访问存储器的方法、装置和电子设备的应用领域不做限定。
图3示意性示出了根据本公开实施例的访问存储器的方法的流程图。
如图3所示,该方法可以包括以下操作S310~S340。
在操作S310,接收针对存储器的访问指令。
在本实施例中,访问指令可以包括访问起始地址和访问对象大小,存储器包括多个块。其中,访问起始地址可以一个块的起始地址。访问起始地址可以是一个块的起始地址和偏移量。基于该访问起始地址可以便捷地找到访问对象的数据。
访问对象可以是存储在存储器中的信息,如文字、数字、图片、视频或者音频等。这些信息可以以二进制数字的形式存储在存储器中。访问对象大小可以小于或者等于一个块的块大小,访问对象大小也可以大于一个块的块大小。
访问指令可以是由主控制器生成的,如由中央处理器生成的指令,并且发送给存储访问控制器。访问指令包括但不限于:读数据指令、写数据指令、删除数据指令等中至少一种。
在操作S320,响应于访问指令,如果访问对象的终止地址超出访问对象所在起始块的终止地址,则根据访问起始地址、访问对象大小和块大小将访问指令拆分为多个子访问指令,多个子访问指令各自对应的子访问起始地址不同。
在某些实施例中,如果访问对象的终止地址超出访问对象所在起始块的终止地址,则表明访问对象被存储在至少两个块中,可以分别通过至少两个块各自的起始地址来并行访问该访问对象。例如,当访问对象的起始地址和访问对象所在起始块的起始地址对齐,并且访问对象大小大于访问对象所在块的块大小时,则表明访问对象至少被存储在两个块中。又例如,访问对象的起始地址和访问对象所在起始块的起始地址之间不对齐,但是访问对象的终止地址超出访问对象所在起始块的终止地址,则表明访问对象至少被存储在两个块中。
相关技术中,为了读取完整的访问对象的数据,需要在按照地址从小到大的顺序依次读取各块中访问对象的数据。但是,对于大数据量的访问对象,这样会导致该访问操作执行较慢。本实施例中,可以将访问对象分别存储在与不同通道对应的块中,在访问该访问对象时对访问指令进行拆分,通过不同的通道分别访问该访问对象的部分数据,有效提升了访问的并行度。例如,访问对象的第一部分存储在与第一通道对应的块中,访问对象的第二部分存储在与第二通道对应的块中,这样可以同时利用第一通道和第二通道访问该访问对象的部分数据,有效提升了访问效率。
例如,访问对象的数据分别存储在起始地址为地址1和地址2的块中,访问指令指示对访问对象的数据进行读取。在上述场景中,可以将访问指令拆分为针对地址1的块中数据进行读取的子访问指令1,以及针对地址2的块中数据进行读取的子访问指令2。
需要说明的是,从主控制器的角度来看,地址是连续分布的,具体实际访问的通道是透明的,无法感知。
在操作S330,基于多个子访问指令访问与多个子访问指令各自对应的子访问起始地址,得到与多个子访问指令各自对应的子访问结果。
在某些实施例中,在确了多个子访问起始地址之后,就可以利用多个通道分别访问与多个子访问起始地址各自对应的数据,并且得到与多个子访问指令各自对应的子访问结果。
在操作S340,基于子访问结果得到针对访问指令的访问结果。
在某些实施例中,可以通过对子访问结果进行拼接、融合等操作,来得到针对访问指令的访问结果。例如,通过拼接的方式得到访问对象的完整数据。
针对在连续读/写同一个通道时,后面的操作只能等待前一个操作完成后再开始,导致读/写效率的降低的问题,本公开实施例通过对访问指令进行拆分,使得可以通过多个通道并行访问同一个访问对象的不同部分,有效提升了访问效率。
图4示意性示出了根据本公开实施例的访问通道的方法的流程图。在本实施例中,多个块各自的块大小相同,每个块具有对应的子起始地址。相应地,上述方法还包括:构建子起始地址和通道之间的映射关系。其中,针对不同的系统,可以选择不同的块的大小。具体地,可以通过实测来确定效率最高的块的大小,并将该效率最高的块的大小作为针对该系统的块的大小。
如图4所示,对于每个子访问指令,基于多个子访问指令访问与多个子访问指令各自对应的子访问起始地址,得到与多个子访问指令各自对应的子访问结果可以包括:操作S410和操作S420。
在操作S410,基于与子访问指令的子访问起始地址和映射关系确定待访问的通道。
例如,对于具有3个通道和6个块的存储器,6个块的起始地址分别为地址1、地址2、地址3、地址4、地址5和地址6。在该场景中,与通道1之间存在映射关系的块的地址可以为:地址1和地址4,与通道2之间存在映射关系的块的地址可以为:地址2和地址5,与通道3之间存在映射关系的块的地址可以为:地址3和地址6。当确定访问对象的数据存储在地址为地址1和地址2的块中时,则可以基于映射关系确定待访问的通道分别是通道1和通道2。
在操作S420,访问待访问的通道,得到与子访问指令对应的子访问结果。
由于可以并行通过多个待访问的通道对访问对象进行访问,得到各通道的子访问结果,以便基于各子访问结果得到针对该访问指令的访问结果,有效提升了访问效率。
图5示意性示出了根据本公开实施例的访问通路的示意图。
如图5所示,主控制器和存储访问控制器之间耦接,存储访问控制器可以接收主控器发出的多个访问指令(如由不同的处理单元分别发出的访问指令)。可以根据访问指令、访问对象等的特点对访问指令进行分拆、重组之后,得到多个子防问指令。将多个子访问指令发送给存储访问控制器,以便得到与多个子访问指令对应的子访问结果。在得到至少部分子访问结果之后,可以将执行的结果反馈给主控制器。
具体地,针对访问指令拆分和重组的过程,可以独立作为一个中间层,也可以集成到存储访问控制器中。
在这种组织方式下,在发生连续地址访问,或者较近的跳转时,访问会并行发生在与访问起始地址对应的当前通道和其它通道上。这样,不必等待当前通道的访问完全结束,就可以开始其它通道的访问,提高了并行度,降低了访问的延迟。本公开实施例有效减少了主控制器的等待时间,减少了某个通道数据访问堵塞发生的风险,提高了数据访问的效率。
以下对通道、块的起始地址和块的终止地址等之间的映射关系进行示例性说明。
图6示意性示出了根据本公开实施例的通道与块之间映射关系的示意图。
如图6所示,块大小为M,通道的个数为N。图6中与各通道的第i个块对应的起始地址为(M×矩阵A)的阵元,与各通道的第i个块对应的终止地址为(M×矩阵B-参考矩阵)的阵元,其中,矩阵A=(aij),阵元aij的取值按照i从小到大依序为((i-1)×N)至(i×N-1),矩阵B=(bij),阵元bij的取值按照i从小到大依序为((i-1)×N+1)至(i×N),i是大于0的整数,j是小于或者等于N的正整数,矩阵A和矩阵B的列数与通道的个数相同,参考矩阵的阵元全部为1。
例如,对于通道的个数为3个时,矩阵A可以表示为如式(1)所示。矩阵B可以表示为如式(2)所示。参考矩阵C可以表示为如式(3)所示。
为了便于确定各块的起始地址和终止地址,图6中还给出了各起始地址和终止地址的便捷计算方法。如图6中,第一个块的起始地址和终止地址分别为0和(M-1),第二个块的起始地址和终止地址分别为M和(2*M-1),第三个块的起始地址和终止地址分别为(N-1)*M和(N*M-1),第四个块的起始地址和终止地址分别为N*M和(N+1)*M-1,第五个块的起始地址和终止地址分别为(N+1)*M和(N+2)*M-1,第六个块的起始地址和终止地址分别为(2*N-1)*M和(2*N*M-1)。其它块的起始地址和终止地址可以以此类推,在此不再一一列举。
图7示意性示出了根据本公开另一实施例的通道与块之间映射关系的示意图。在本实施例中,图7中相同偶数行的最后一个块的起始地址和图6中相同偶数行的第一个块的起始地址相同。图7中相同偶数行的最后一个块的终止地址和图6中相同偶数行的第一个块的终止地址相同。这样有助于实现各子访问结果的拼接,并且能减小相同通道内换行时相邻块的起始地址之间的距离,有助于进一步提升访问速率。
如图7所示,块大小为M,通道的个数为N。
例如,对于各通道的奇数块,与各通道的第i个块对应的起始地址为(M×矩阵A)的阵元,与各通道的第i个块对应的终止地址为(M×矩阵B-参考矩阵)的阵元,其中,矩阵A=(aij),阵元aij的取值按照i从小到大依序为((i-1)×N)至(i×N-1)。矩阵B=(bij),阵元bij的取值按照i从小到大依序为((i-1)×N+1)至(i×N),i是大于0的奇数,j是小于或者等于N的正整数。矩阵A和矩阵B的列数与通道的个数相同,参考矩阵的阵元全部为1。
例如,对于各通道的偶数块,与各通道的第i个块对应的起始地址为(M×矩阵B’-参考矩阵)的阵元,与各通道的第i个块对应的终止地址为(M×矩阵A’)的阵元。矩阵A’是矩阵A沿竖直方向翻转的矩阵,矩阵B’是矩阵B沿竖直方向翻转的矩阵。矩阵A=(aij),阵元aij的取值按照i从小到大依序为((i-1)×N)至(i×N-1),矩阵B=(bij),阵元bij的取值按照i从小到大依序为((i-1)×N+1)至(i×N),i是大于1的偶数,j是小于或者等于N的正整数。矩阵A和矩阵B的列数与通道的个数相同,参考矩阵的阵元全部为1。
例如,对于通道的个数为3个时,矩阵A’可以表示为如式(4)所示。矩阵B’可以表示为如式(5)所示。
为了便于确定各块的起始地址和终止地址,图7中还给出了各起始地址和终止地址的便捷计算方法。如图7中,第一个块的起始地址和终止地址分别为0和(M-1),第二个块的起始地址和终止地址分别为M和(2*M-1),第三个块的起始地址和终止地址分别为(N-1)*M和(N*M-1),第四个块的起始地址和终止地址分别为(2*N-1)*M和(2*N*M-1),第五个块的起始地址和终止地址分别为(2*N-2)*M和(2*N-1)*M-1,第六个块的起始地址和终止地址分别为N*M和(N+1)*M-1,第七个块的起始地址和终止地址分别为2*N*M和(2*N+1)*M-1,第八个块的起始地址和终止地址分别为(2*N+1)*M和(2*N+2)*M-1,第九个块的起始地址和终止地址分别为(3*N-1)*M和3*N*M-1。其它块的起始地址和终止地址可以以此类推,在此不再一一列举。
为了避免主控制器长时间处于等待状态,需要能够记录主控制器发出的数据访问指令,执行完后再将结果反馈给主控制器。记录指令的最大条数需要综合系统性能需求和成本综合考虑。对于每一条指令,可以有一个状态机来控制执行的状态。
图8示意性示出了根据本公开实施例的状态机的状态跳转的方法的流程图。在本实施例中,为了便于进一步提升访问效率,多个子防问指令各自具有状态机,状态机包括空闲状态、指令执行状态和等待执行状态。参考图5所示,存储器与存储访问控制器相连,存储访问控制器和主控制器相连。
如图8所示,上述方法在接收到来自主控制器的访问指令之后,还可以包括操作S810和操作S820。
在操作S810,如果主控制器能够接收数据并且存储访问控制器能够接收命令,则将子访问指令的状态机从空闲状态跳转为指令执行状态。
在操作S820,如果主控制器无法接收数据或者存储访问控制器无法接收命令,则将子访问指令的状态机从空闲状态跳转为等待执行状态。在主控制器能够接收数据并且存储访问控制器能够接收命令时,将子访问指令的状态机从等待执行状态跳转为指令执行状态。
在某些实施例中,上述方法还可以包括如下操作:如果访问对象的终止地址未超出访问对象所在起始块的终止地址,则根据访问起始地址访问存储器。
图9示意性示出了根据本公开实施例的状态机的状态跳转示意图。
如图9所示,访问指令的状态机在空闲状态下,接到针对访问对象的数据的访问指令,如果访问对象的数据的大小没有超出块的边界,则进入直通状态,指令直接下发。如果访问对象的数据的大小超出了块的边界,则进入拆分状态1,指令拆成两个不同的块的访问后下发。其中一个访问完成后,进入拆分状态2。当两个访问都完成时,退回到空闲状态。其中,图9中仅示例性示出了将访问指令拆分为两个子访问指令的场景。如果访问对象的数据占用的存储空间较大,则可能将将访问指令拆分为三个或者更多个子访问指令,在此不做限定。
需要说明的是,等待执行状态还可以进行进一步的细分,如针对由于主控制器不能接收数据等导致子访问指令处于等待执行状态时,可以将其划分为等待主控制器状态。如针对由于存储访问控制器不能接收数据或指令等导致子访问指令处于等待执行状态时,可以将其划分为等待存储访问控制器状态。此外,还可以将等待执行状态细分为其它状态,具体参见如下的实施例。
在某些实施例中,等待执行状态包括等待主控制器状态和等待存储访问控制器状态。
相应地,如果主控制器无法接收数据或者存储访问控制器无法接收命令,则将子访问指令的状态机从空闲状态跳转为等待执行状态可以包括如下操作。
如果主控制器无法接收数据,则将子访问指令的状态机从空闲状态跳转为等待主控制器状态。
如果存储访问控制器无法接收指令,则将子访问指令的状态机从空闲状态跳转为等待存储访问控制器状态。状态机的状态跳转有助于确定访问指令的执行状态。
在某些实施例中,等待执行状态还包括:数据返回主控制器状态。
相应地,上述方法还可以包括如下操作。
如果子访问指令的状态机处于等待存储访问控制器状态时,存储访问控制器转变为能够接收指令,则将子访问指令的状态机跳转为数据返回主控制器状态。
然后,将存储访问控制器获取的数据发送给主控制器。
接着,将子访问指令的状态机跳转为空闲状态。
在某些实施例中,如果某个操作阻塞了访问指令的执行,则可以先处理未被阻塞的操作,并且缓存执行操作得到的中间结果。
例如,等待执行状态还包括:写入缓存状态。
相应地,上述方法还可以包括如下操作。
如果子访问指令的状态机处于等待主控制器状态时,将子访问指令发送给存储访问控制器,并且将子访问指令的状态机跳转为写入缓存状态。
然后,将存储访问控制器获取的数据存储在缓存中。
接着,当主控制器能够接收数据时,将缓存中的数据发送给主控制器。
然后,将子访问指令的状态机跳转为空闲状态。
以下以读数据指令为例,对状态机的状态跳转过程进行示例性说明。
图10示意性示出了根据本公开实施例的与读数据指令对应的状态机的状态跳转示意图。
如图10所示,在状态机处于空闲状态下,并且接收到主控制器的读数据指令以后,如果存储访问控制器可以接收指令,而且主控制器也可以接收数据,则进入到直接执行状态。
如果存储访问控制器不能接收指令,和/或主控制器不能接收数据,则进入到等待执行状态。
在直接执行状态,数据从存储访问控制器读出后送给主控制器。在等待执行状态,一直等到存储访问控制器可以接收指令或者主控制器可以接收数据。此时,如果主控制器可以接收数据而且存储访问控制器可以接收指令,则进入直接执行状态。如果主控制器不能接收数据,就进入等待主控制器状态。如果存储访问控制器不能接收指令,就进入等待存储访问控制器状态。
在等待存储访问控制器状态,当存储访问控制器可以接收指令时,就进入数据返回主控制器状态,将从存储访问控制器读回的数据发送给主控制器,操作完成后返回空闲状态。
在等待主控制器阶段,读数据指令发送给存储访问控制器,数据开始返回时进入写入缓存状态,将所有返回的数据暂存在缓存之中,等主控制器可以接收数据时,再从缓存中将数据读出,发送给主控制器,操作完成之后返回空闲状态。
本公开实施例可以应用于数字芯片、数字电路领域中,主控制器和存储访问控制器之间,用于提高存储器的访问效率,提高数据吞吐率。
本公开的另一方面还提供了一种访问存储器的装置。
图11示意性示出了根据本公开实施例的访问存储器的装置的方框图。
如图11所示,上述装置1100可以包括:访问指令接收模块1110、访问指令拆分模块1120、子访问指令访问模块1130和子访问结果拼接模块1140。
访问指令接收模块1110用于接收针对存储器的访问指令,访问指令包括访问起始地址和访问对象大小,存储器包括多个块。
访问指令拆分模块1120用于响应于访问指令,如果访问对象的终止地址超出访问对象所在起始块的终止地址,则根据访问起始地址、访问对象大小和块大小将访问指令拆分为多个子访问指令,多个子访问指令各自对应的子访问起始地址不同。
子访问指令访问模块1130用于基于多个子访问指令访问与多个子访问指令各自对应的子访问起始地址,得到与多个子访问指令各自对应的子访问结果。
子访问结果拼接模块1140用于基于子访问结果得到针对访问指令的访问结果。
在某些实施例中,多个块各自的块大小相同,每个块具有对应的子起始地址。
相应地,上述装置1100还可以包括映射构建模块,用于构建子起始地址和通道之间的映射关系。
子访问指令访问模块1130包括通道确定单元和通道访问单元,其中,通道确定单元用于基于与子访问指令的子访问起始地址和映射关系确定待访问的通道。通道访问单元用于访问待访问的通道,得到与子访问指令对应的子访问结果。
在某些实施例中,多个子访问指令各自具有状态机,状态机包括空闲状态、指令执行状态和等待执行状态;存储器与存储访问控制器相连,存储访问控制器和主控制器相连。
在某些实施例中,上述装置1100还包括:第一状态跳转单元和第二状态跳转单元。其中,第一状态跳转单元用于如果主控制器能够接收数据并且存储防问控制器能够接收命令,则将子访问指令的状态机从空闲状态跳转为指令执行状态。第二状态跳转单元用于如果主控制器无法接收数据或者存储访问控制器无法接收命令,则将子访问指令的状态机从空闲状态跳转为等待执行状态;在主控制器能够接收数据并且存储访问控制器能够接收命令时,将子访问指令的状态机从等待执行状态跳转为指令执行状态。
在某些实施例中,等待执行状态还可以包括等待主控制器状态、等待存储访问控制器状态、数据返回主控制器状态或者写入缓存状态中至少一种。状态机的状态跳转可以参考如上方法部分相关实施例,在此不再详述。
在某些实施例中,上述装置1100还可以包括直接访问模块,用于如果访问对象的终止地址未超出访问对象所在起始块的终止地址,则根据访问起始地址访问存储器。
需要说明的是,装置和系统中部分实施例中各模块/单元等的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再赘述。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,访问指令接收模块1110、防问指令拆分模块1120、子防问指令访问模块1130和子访问结果拼接模块1140中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,访问指令接收模块1110、访问指令拆分模块1120、子访问指令访问模块1130和子访问结果拼接模块1140中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,访问指令接收模块1110、访问指令拆分模块1120、子访问指令访问模块1130和子访问结果拼接模块1140中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图12示意性示出了根据本公开实施例的电子设备的框图。图12示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图12所示,根据本公开实施例的电子设备1200包括处理器1201,其可以根据存储在只读存储器(ROM)1202中的程序或者从存储部分1208加载到如上所示的存储器,如随机访问存储器(RAM)1203中的程序而执行各种适当的动作和处理。处理器1201例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1201还可以包括用于缓存用途的板载存储器。处理器1201可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1203中,存储有系统1200操作所需的各种程序和数据。处理器1201、ROM1202以及RAM 1203通过总线1204彼此相连。处理器1201通过执行ROM 1202和/或RAM 1203中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM 1202和RAM 1203以外的一个或多个存储器中。处理器1201也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,系统1200还可以包括输入/输出(I/O)接口1205,输入/输出(I/O)接口1205也连接至总线1204。系统1200还可以包括连接至I/O接口1205的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被处理器1201执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行本公开实施例所提供的方法的程序代码,当计算机程序产品在电子设备上运行时,该程序代码用于使电子设备实现本公开实施例所提供的访问存储器的方法。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
Claims (13)
1.一种访问存储器的方法,包括:
接收针对存储器的访问指令,所述访问指令包括访问起始地址和访问对象大小,所述存储器包括多个块;
响应于所述访问指令,如果所述访问对象的终止地址超出所述访问对象所在起始块的终止地址,则根据所述访问起始地址、访问对象大小和块大小将所述访问指令拆分为多个子访问指令,所述多个子访问指令各自对应的子访问起始地址不同;
基于所述多个子访问指令访问与所述多个子访问指令各自对应的子访问起始地址,得到与所述多个子访问指令各自对应的子访问结果;以及
基于所述子访问结果得到针对所述访问指令的访问结果。
2.根据权利要求1所述的方法,其中,所述多个块各自的块大小相同,每个块具有对应的子起始地址;
所述方法还包括:构建所述子起始地址和通道之间的映射关系;
所述基于所述多个子访问指令访问与所述多个子访问指令各自对应的子访问起始地址,得到与所述多个子访问指令各自对应的子访问结果包括:对于每个子访问指令,
基于与所述子访问指令的子访问起始地址和所述映射关系确定待访问的通道;以及
访问所述待访问的通道,得到与所述子访问指令对应的子访问结果。
3.根据权利要求2所述的方法,其中,所述块大小为M,所述通道的个数为N;
对于各通道的奇数块,与各通道的第i个块对应的起始地址为(M×矩阵A)的阵元,与各通道的第i个块对应的终止地址为(M×矩阵B-参考矩阵)的阵元,其中,所述矩阵A=(aij),阵元aij的取值按照i从小到大依序为((i-1)×N)至(i×N-1),所述矩阵B=(bij),阵元bij的取值按照i从小到大依序为((i-1)×N+1)至(i×N),i是大于0的奇数,j是小于或者等于N的正整数,所述矩阵A和所述矩阵B的列数与所述通道的个数相同,所述参考矩阵的阵元全部为1;或者
对于各通道的偶数块,与各通道的第i个块对应的起始地址为(M×矩阵B’-参考矩阵)的阵元,与各通道的第i个块对应的终止地址为(M×矩阵A’)的阵元,所述矩阵A’是矩阵A沿竖直方向翻转的矩阵,所述矩阵B’是矩阵B沿竖直方向翻转的矩阵,所述矩阵A=(aij),阵元aij的取值按照i从小到大依序为((i-1)×N)至(i×N-1),所述矩阵B=(bij),阵元bij的取值按照i从小到大依序为((i-1)×N+1)至(i×N),i是大于1的偶数,j是小于或者等于N的正整数,所述矩阵A和所述矩阵B的列数与所述通道的个数相同,所述参考矩阵的阵元全部为1。
4.根据权利要求2所述的方法,其中,所述块大小为M,所述通道的个数为N;以及
与各通道的第i个块对应的起始地址为(M×矩阵A)的阵元,与各通道的第i个块对应的终止地址为(M×矩阵B-参考矩阵)的阵元,其中,矩阵A=(aij),阵元aij的取值按照i从小到大依序为((i-1)×N)至(i×N-1),矩阵B=(bij),阵元bij的取值按照i从小到大依序为((i-1)×N+1)至(i×N),i是大于0的整数,j是小于或者等于N的正整数,所述矩阵A和所述矩阵B的列数与所述通道的个数相同,所述参考矩阵的阵元全部为1。
5.根据权利要求2所述的方法,其中,所述多个子访问指令各自具有状态机,所述状态机包括空闲状态、指令执行状态和等待执行状态;所述存储器与存储访问控制器相连,所述存储访问控制器和主控制器相连。
6.根据权利要求5所述的方法,还包括:在接收到来自所述主控制器的访问指令之后,
如果所述主控制器能够接收数据并且所述存储访问控制器能够接收命令,则将所述子访问指令的状态机从空闲状态跳转为指令执行状态;以及
如果所述主控制器无法接收数据或者所述存储访问控制器无法接收命令,则将所述子访问指令的状态机从空闲状态跳转为等待执行状态;在所述主控制器能够接收数据并且所述存储访问控制器能够接收命令时,将所述子访问指令的状态机从等待执行状态跳转为指令执行状态。
7.根据权利要求6所述的方法,其中,所述等待执行状态包括等待主控制器状态和等待存储访问控制器状态;
所述如果所述主控制器无法接收数据或者所述存储访问控制器无法接收命令,则将所述子访问指令的状态机从空闲状态跳转为等待执行状态包括:
如果所述主控制器无法接收数据,则将所述子访问指令的状态机从空闲状态跳转为等待主控制器状态;以及
如果所述存储访问控制器无法接收指令,则将所述子访问指令的状态机从空闲状态跳转为等待存储访问控制器状态。
8.根据权利要求7所述的方法,其中,所述等待执行状态还包括:数据返回主控制器状态;
所述方法还包括:
如果所述子访问指令的状态机处于所述等待存储访问控制器状态时,所述存储访问控制器转变为能够接收指令,则将所述子访问指令的状态机跳转为所述数据返回主控制器状态;
将所述存储访问控制器获取的数据发送给所述主控制器;以及
将所述子访问指令的状态机跳转为空闲状态。
9.根据权利要求7所述的方法,其中,所述等待执行状态还包括:写入缓存状态;
所述方法还包括:
如果所述子访问指令的状态机处于所述等待主控制器状态时,将所述子访问指令发送给所述存储访问控制器,并且将所述子访问指令的状态机跳转为所述写入缓存状态;
将所述存储访问控制器获取的数据存储在缓存中;
当所述主控制器能够接收数据时,将所述缓存中的数据发送给所述主控制器;以及
将所述子访问指令的状态机跳转为空闲状态。
10.根据权利要求1至9任一项所述的方法,还包括:
如果所述访问对象的终止地址未超出所述访问对象所在起始块的终止地址,则根据所述访问起始地址访问所述存储器。
11.一种访问存储器的装置,包括:
访问指令接收模块,用于接收针对存储器的访问指令,所述访问指令包括访问起始地址和访问对象大小,所述存储器包括多个块;
访问指令拆分模块,用于响应于所述访问指令,如果所述访问对象的终止地址超出所述访问对象所在起始块的终止地址,则根据所述访问起始地址、访问对象大小和块大小将所述访问指令拆分为多个子访问指令,所述多个子访问指令各自对应的子访问起始地址不同;
子访问指令访问模块,用于基于所述多个子访问指令访问与所述多个子访问指令各自对应的子访问起始地址,得到与所述多个子访问指令各自对应的子访问结果;以及
子访问结果拼接模块,用于基于所述子访问结果得到针对所述访问指令的访问结果。
12.一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现如权利要求1至11任一项所述的访问存储器的方法。
13.一种计算机可读存储介质,存储有计算机可执行指令,所述可执行指令在被处理器执行时,实现如权利要求1至11任一项所述的访问存储器的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111617876.7A CN116360672A (zh) | 2021-12-27 | 2021-12-27 | 访问存储器的方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111617876.7A CN116360672A (zh) | 2021-12-27 | 2021-12-27 | 访问存储器的方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116360672A true CN116360672A (zh) | 2023-06-30 |
Family
ID=86924754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111617876.7A Pending CN116360672A (zh) | 2021-12-27 | 2021-12-27 | 访问存储器的方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116360672A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435143A (zh) * | 2023-12-14 | 2024-01-23 | 芯瞳半导体技术(山东)有限公司 | 一种数据处理方法、装置及电子设备 |
-
2021
- 2021-12-27 CN CN202111617876.7A patent/CN116360672A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435143A (zh) * | 2023-12-14 | 2024-01-23 | 芯瞳半导体技术(山东)有限公司 | 一种数据处理方法、装置及电子设备 |
CN117435143B (zh) * | 2023-12-14 | 2024-04-02 | 芯瞳半导体技术(山东)有限公司 | 一种数据处理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10140123B2 (en) | SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations | |
US7907469B2 (en) | Multi-port memory device for buffering between hosts and non-volatile memory devices | |
US11294599B1 (en) | Registers for restricted memory | |
US8984203B2 (en) | Memory access control module and associated methods | |
KR102442495B1 (ko) | 메모리 프로토콜 | |
US9104526B2 (en) | Transaction splitting apparatus and method | |
US20080109627A1 (en) | Nonvolatile Memory Device And Method For Accessing Nonvolatile Memory Device | |
CN111209232B (zh) | 访问静态随机存取存储器的方法、装置、设备和存储介质 | |
KR20200108774A (ko) | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 | |
US11163686B2 (en) | Method and apparatus for accessing tensor data | |
KR20130106392A (ko) | 다수의 메모리 채널들을 가진 컴퓨팅 시스템에서의 메모리 버퍼들의 할당 | |
CN114942831A (zh) | 处理器、芯片、电子设备及数据处理方法 | |
US20130054885A1 (en) | Multiport memory element and semiconductor device and system including the same | |
EP3846036B1 (en) | Matrix storage method, matrix access method, apparatus and electronic device | |
US8977800B2 (en) | Multi-port cache memory apparatus and method | |
US11721373B2 (en) | Shared multi-port memory from single port | |
US11748250B2 (en) | Method and electronic device for data processing, and storage medium | |
CN116360672A (zh) | 访问存储器的方法、装置和电子设备 | |
CN112368676A (zh) | 处理数据的方法和设备 | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
US7774513B2 (en) | DMA circuit and computer system | |
WO2024066383A1 (zh) | 闪存管理方法及闪存设备 | |
KR101876574B1 (ko) | 데이터 입출력 컨트롤러 및 이를 포함하는 시스템 | |
CN117215491A (zh) | 一种快速数据访问方法、快速数据访问装置及光模块 | |
US8688891B2 (en) | Memory controller, method of controlling unaligned memory access, and computing apparatus incorporating memory controller |
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 |