CN109284231B - 内存访问请求的处理方法、装置及内存控制器 - Google Patents
内存访问请求的处理方法、装置及内存控制器 Download PDFInfo
- Publication number
- CN109284231B CN109284231B CN201810821700.5A CN201810821700A CN109284231B CN 109284231 B CN109284231 B CN 109284231B CN 201810821700 A CN201810821700 A CN 201810821700A CN 109284231 B CN109284231 B CN 109284231B
- Authority
- CN
- China
- Prior art keywords
- memory access
- request
- access requests
- memory
- access request
- 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
Images
Classifications
-
- 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/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
- G06F13/1631—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
-
- 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)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种内存访问请求的处理方法、装置及内存控制器,其中,方法包括依次获取若干内存访问请求;提取内存访问请求中的逻辑通道地址;基于逻辑通道地址对内存访问请求进行编组,以形成若干请求组;针对每个所述请求组,依次对内存访问请求进行预处理,以形成完成所述内存访问请求所需的指令;依次对每个所述请求组中的各个所述内存访问请求对应的指令进行重构处理。该方法基于内存在具体工作时不同的逻辑通道地址件的操作互不影响,且对于同一个逻辑通道地址进行预充电或激活指令发出后,若操作另一个逻辑通道地址则无需等待上一步操作完成,能够避免每次预充电和激活的等待时间所导致的接口利用率低,提高了内存访问效率。
Description
技术领域
本发明涉及内存控制器技术领域,具体涉及一种内存访问请求的处理方法、装置及内存控制器。
背景技术
冯诺依曼架构由于其通用性好、适配性强、市场占有率高已奠定了其在计算架构中的地位。在冯诺依曼架构中不可或缺的内存已经成为现代计算机及大部分智能产品中的标配,甚至是指标性配件。近年来内存消耗量的爆发性增长与居高不下的价格也侧面说明了内存已成为现代社会中必不可少的基础耗材。如何提高内存的使用效率(即内存访问效率),尤其是离散小规模数据访问效率,已成为很多产品设计中成败的关键。
现有的计算架构中,为提高内存访问效率,大多采用cache(高速缓冲存储器)对即将访问的地址进行命中。由于cache一般设计在片内,信号速率比内存高,同时由于cache容量有限,控制简单,故访问速度远远高于内存。通过对访问活跃地址区域的预测、预读取以及预存,提高cache中内存地址命中率,极大提高了内存访问效率。
然而,现有的内存控制器,在获取到内存访问请求之后,首先针对内存访问请求中的地址进行预处理,即bank precharge(逻辑通道预充电)——激活row(行地址),然后在对内存访问请求进行处理;若两个内存访问请求的bank不同,或row不同时,则需要重新再次针对内存访问请求中的地址进行预处理,然后才能对内存访问请求进行处理。由于,bankprecharge与激活row两个操作延时较长,且无有效访问动作,制约了内存的访问效率。
发明内容
有鉴于此,本发明实施例提供了一种内存访问请求的处理方法、装置及内存控制器,以解决现有技术中内存访问效率低的问题。
为此,本发明实施例提供了如下技术方案:
本发明第一方面提供了一种内存访问请求的处理方法,包括:
依次获取若干内存访问请求;
提取所述内存访问请求中的逻辑通道地址;
基于所述逻辑通道地址对所述内存访问请求进行编组,以形成若干请求组;
针对每个所述请求组,依次对内存访问请求进行预处理,以形成完成所述内存访问请求所需的指令;
依次对每个所述请求组中的各个所述内存访问请求对应的指令进行重构处理。
本发明实施例提供的内存访问请求的处理方法,基于内存访问请求中的逻辑通道地址对内存访问请求进行编组,由于内存在具体工作时不同的逻辑通道地址件的操作互不影响,且对于同一个逻辑通道地址进行预充电或激活指令发出后,若操作另一个逻辑通道地址则无需等待上一步操作完成,因此,基于逻辑通道地址对内存访问请求进行编组,并基于编组之后的请求组进行内存访问请求的处理,能够避免每次预充电和激活的等待时间所导致的接口利用率低,提高了内存访问效率。
结合第一方面,在第一方面第一实施方式中,所述基于所述逻辑通道地址对所述内存访问请求进行编组,包括:
根据所有所述内存访问请求的所述逻辑通道地址,确定所述内存访问请求的类型;其中,所述内存访问请求的类型包括连续访问以及随机访问;
当所述内存访问请求的类型为随机访问时,按照所述内存访问请求的顺序,依次判断是否存在所述逻辑通道地址相同的所述内存访问请求;
当存在所述逻辑通道地址相同的所述内存访问请求时,将在前的所述内存访问请求编入第一请求组,将在后的所述内存访问请求存入第一申请缓存中。
本发明实施例提供的内存访问请求的处理方法,其中,当内存访问请求的类型为随机访问时,将逻辑通道地址相同的内存访问请求分别编入不同的第一请求组,且两个相同的逻辑通道地址对应的在后内存访问请求存入第一申请缓存中,便于再次读取内存访问请求时,优先读取第一申请缓存中的指令,并编制入组。通过将逻辑通道地址相同的内存访问请求编入不同的请求组,使得在同一个第一请求组中不存在逻辑通道地址相同的内存访问请求,由于不同逻辑通道地址对应的内存访问请求之间操作互不影响,因此,能够实现对同一第一请求组中的所有内存访问请求同时进行操作,进而提高了内存的访问效率。
结合第一方面第一实施方式,在第一方面第二实施方式中,所述根据所有所述内存访问请求的所述逻辑通道地址,确定所述内存访问请求的类型的步骤之后,还包括:
当所述内存访问请求的类型为连续访问时,按照所述内存访问请求的顺序将所述内存访问请求编入第二请求组。
本发明实施例提供的内存访问请求的处理方法,当内存访问请求为连续访问时,按照内存访问请求的顺序编入第二请求组,以实现同一个第二请求组中,所有内存访问请求顺序存放,在具体内存操作时,能够实现顺序操作,达到高效内存访问的目的。
结合第一方面第一实施方式,在第一方面第三实施方式中,所述内存访问请求的类型为随机访问;所述依次对每个所述请求组中的各个所述内存访问请求对应的指令进行重构处理,包括:
按照所有所述内存访问请求的顺序,依次对每个所述请求组中的所有所述逻辑通道地址进行预充电;
按照所有所述内存访问请求的顺序,依次对每个所述请求组中的所有行地址进行激活;
依次对各个所述内存访问请求对应的指令进行顺序处理。
本发明实施例提供的内存访问请求的处理方法,当内存访问请求的类型为随机访问时,先顺序对每个逻辑通道地址进行预充电,再顺序进行激活,最后连续进行内存访问请求的处理,如此避免了每次预充电和激活的等待时间所导致的接口利用率低,提高内存访问效率。
结合第一方面,在第一方面第四实施方式中,所述内存访问请求还包括有第一标签,所述第一标签用于表示获取所述内存访问请求的顺序;
所述依次对每个所述请求组中的所述内存访问请求进行处理,包括:
当所述内存访问请求为数据读取指令时,按照所述内存访问请求的顺序,对读取出的数据附上第二标签;其中,所述第二标签与所述第一标签相同。
本发明实施例提供的内存访问请求的处理方法,通过对第一标签以及第二标签实现内存访问请求与读取出的数据进行标记,从而使数据读取指令与读取出的数据对应,防止数据错位。
结合第一方面,在第一方面第五实施方式中,依次对每个所述请求组中的所述内存访问请求进行处理,包括:
判断当前所述请求组中的所有所述内存访问请求是否全部处理完成;
当全部处理完成时,对在后所述请求组中的所述内存访问请求进行处理。
本发明实施例提供的内存访问请求的处理方法,其中,只有在当前请求组中的所有内存访问请求全部处理完成之后,才进行在后请求组汇总的内存访问请求的处理,以防止破坏读写顺序;即,在处理读/写内存访问请求之前,要完成排列在此内存访问请求前面的所有读/写内存访问请求。
本发明第二方面提供了一种内存访问请求的处理装置,包括:
获取模块,用于依次获取若干内存访问请求;
提取模块,用于提取所述内存访问请求中的逻辑通道地址;
编组模块,用于基于所述逻辑通道地址对所述内存访问请求进行编组,以形成若干请求组;
预处理模块,用于针对每个所述请求组,依次对内存访问请求进行预处理,以形成完成所述内存访问请求所需的指令;
指令处理模块,用于依次对每个所述请求组中的各个所述内存访问请求对应的指令顺序进行重构处理。
本发明实施例提供的内存访问请求的处理装置,基于内存访问请求中的逻辑通道地址对内存访问请求进行编组,由于内存在具体工作时不同的逻辑通道地址件的操作互不影响,且对于同一个逻辑通道地址进行预充电或激活指令发出后,若操作另一个逻辑通道地址则无需等待上一步操作完成,因此,基于逻辑通道地址对内存访问请求进行编组,并基于编组之后的请求组进行内存访问请求的处理,能够避免每次预充电和激活的等待时间所导致的接口利用率低,提高了内存访问效率。
结合第二方面,在第二方面第二实施方式中,所述编组模块,包括:
确定单元,用于根据所有所述内存访问请求的所述逻辑通道地址,确定所述内存访问请求的类型;其中,所述内存访问请求的类型包括连续访问以及随机访问;
判断单元,用于当所述内存访问请求的类型为随机访问时,按照所述内存访问请求的顺序,依次判断是否存在所述逻辑通道地址相同的所述内存访问请求;
编组单元,用于当存在所述逻辑通道地址相同的所述内存访问请求时,将在前的所述内存访问请求编入第一请求组,将在后的所述内存访问请求存入第一申请缓存中。
本发明第三方面还提供了一种内存控制器,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行上述第一方面或第一方面任一实施方式中所述的内存访问请求的处理方法。
本发明第四方面还提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述第一方面或第一方面任一实施方式所述的内存访问请求的处理方法的步骤。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的内存访问请求的处理方法流程图;
图2是根据本发明实施例的内存访问请求的处理方法流程图;
图3是根据本发明实施例的内存访问请求的处理方法流程图;
图4是根据本发明实施例的内存控制器的结构框图;
图5是根据本发明实施例的图4所示的申请重构的流程图;
图6是根据本发明实施例的图4所示的指令重构的流程图;
图7是根据本发明实施例的内存访问请求的处理装置的结构框图;
图8是根据本发明实施例的内存访问请求的处理装置的结构框图;
图9是本发明实施例提供的内存控制器的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
经过多次实验发现现有技术中内存具有以下特点:
(1)不同逻辑通道地址对应的内存访问请求之间的操作互不影响;
(2)对一个逻辑通道地址进行预充电或激活指令发出后,如操作另一个逻辑通道地址无需等待上一步操作完成;
(3)同一逻辑通道地址内,如访问不同的行地址,需重新进行预充电和激活,且预充电和激活成功后,才可进行读写操作。
基于内存的上述特点,本发明提供的内存访问请求的处理方法,通过基于逻辑通道地址对所获取到的若干内存访问请求进行编组(也可称之为访问重构),并针对重新编制的请求组内的内存访问请求进行处理(也可称之为申请重构),该方法能够避免每次预充电和激活的等待时间所导致的接口利用率低,提高了内存访问效率。即,本发明提供的方法通过申请重构与指令重构来实现内存访问的加速,从理论上,内存的访问效率可以从百分之十几的速度提高到最高百分之九十左右。
根据本发明实施例,提供了一种内存访问请求的处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种内存访问请求的处理方法,如图1所示,该方法包括如下步骤:
S11,依次获取若干内存访问请求。
内存控制器获取到若干内存访问请求,并将其缓存在访问申请的缓存中。其中,当内存访问请求为读数据请求时,只缓存该内存访问请求,即读操作、读地址以及长度;当内存访问请求为写数据请求时,在缓存该内存访问请求的同时,同步缓存待写数据。
S12,提取内存访问请求中的逻辑通道地址。
内存控制器依次提取访问申请的缓存中内存访问请求中的逻辑通道地址,以便后续基于该逻辑通道地址,并结合上述内存的特点,进行指令重构。
S13,基于逻辑通道地址对内存访问请求进行编组,以形成若干请求组。
内存控制器基于提取出的逻辑通道地址,对访问缓存中的内存访问请求进行重新编组,即针对内存访问的特点,对申请顺序进行重新排序并形成高效执行的指令请求组,达到高效内存访问的目的。
S14,针对每个请求组,依次对内存访问请求进行预处理,以形成完成内存访问请求所需的指令。
其中,内存访问请求是指访问某地址的数据请求,指令是内存控制器发给存储器的具体命令,通常一个内存访问请求中含有多个指令。
S15,依次对每个请求组中的各个内存访问请求对应的指令顺序进行重构处理。
内存控制器在形成完成该内存访问请求所需的指令之后,可以针对内存访问请求的类型,对不同请求组中的内存访问请求对应的指令顺序进行重构。例如,可以先对所有指令对应的地址进行预充电以及激活之后,再对指令进行处理;也可以针对每个内存访问请求的指令对应的地址进行预充电以及激活之后,处理该指令;然后在进行下一内存访问请求的指令的处理。
本发明实施例提供的内存访问请求的处理方法,基于内存访问请求中的逻辑通道地址对内存访问请求进行编组,由于内存在具体工作时不同的逻辑通道地址件的操作互不影响,且对于同一个逻辑通道地址进行预充电或激活指令发出后,若操作另一个逻辑通道地址则无需等待上一步操作完成,因此,基于逻辑通道地址对内存访问请求进行编组,并基于编组之后的请求组进行内存访问请求的处理,能够避免每次预充电和激活的等待时间所导致的接口利用率低,提高了内存访问效率。
本发明实施例还提供了一种内存访问请求的处理方法,如图2所示,该方法包括:
S21,依次获取若干内存访问请求。
其中,内存控制器对访问申请的缓存中的内存访问请求采用先进先出(first infirst out,简称为FIFO)的方式进行处理,确保先输入的内存访问请求优先被读取。
S22,提取内存访问请求中的逻辑通道地址。详细请参见图1所示实施例的S12,在此不再赘述。
S23,基于逻辑通道地址对内存访问请求进行编组,以形成若干请求组。
其中,根据所有内存访问请求的逻辑通道地址的顺序,可以将内存访问请求分为连续访问以及随机访问。具体地,连续访问为连续地址的访问或同一逻辑通道地址且同一行地址的访问;随机访问为不同行地址且无规律的访问。
内存控制器首先确定内存访问请求的类型,然后根据类型对内存访问请求进行编组。具体包括:
S231,根据所有内存访问请求的逻辑通道地址,确定内存访问请求的类型。
其中,内存访问请求的类型包括连续访问以及随机访问。内存控制器按照获取到内存访问请求的顺序,对内存访问请求的类型进行确定,不同的内存访问类型,对应于不同的请求组。具体地,当内存访问请求的类型为连续访问时,执行S234;当内存访问请求的类型为随机访问时,执行S232。
S232,当内存访问请求的类型为随机访问时,按照内存访问请求的顺序,依次判断是否存在逻辑通道地址相同的内存访问请求。
内存控制器在内存访问请求的类型为随机访问的状态下,需要保证同一个请求组内的内存访问请求的逻辑通道地址不同,因此,需要进行逻辑通道地址是都相同的判断。其中,对应于随机访问状态下的每个请求组中的逻辑通道地址不同的内存访问请求的数量,不超过该内存控制器的逻辑通道地址的数量。
具体地,依次提取数量小于逻辑通道地址数量的内存访问请求,判断出这些内存访问请求中是否存在相同的逻辑通道地址,若不存在,则将这些内存访问请求编入第一请求组;若存在,则执行S233。
S233,当存在逻辑通道地址相同的内存访问请求时,将在前的内存访问请求编入第一请求组,将在后的内存访问请求存入第一申请缓存中。
当内存控制器判断出存在逻辑地址相同的内存访问请求时,则按照获取到内存访问请求的顺序,将在前的内存访问请求编入第一请求组中,将在后的内存访问请求存入第一申请缓存中,直至第一请求组中的内存访问请求满一组为止。当内存控制器在此进行内存访问请求的重新编组时,优先访问第一申请缓存中的内存访问请求。
其中,第一请求组中的内存访问请求的数量可以根据具体情况进行具体设置,只需保证第一请求组中的内存访问请求的数量不超过该内存控制器中逻辑通道地址的数量即可。
S234,当内存访问请求的类型为连续访问时,按照内存访问请求的顺序将内存访问请求编入第二请求组。
当内存控制器判断出内存访问请求的类型为连续访问时,则按照获取到内存访问请求的顺序将内存访问请求编入第二请求组中。
S24,针对每个请求组,依次对内存访问请求进行预处理,以形成完成内存访问请求所需的指令。详细请参见图1所述实施例的S14,在此不再赘述。
S25,依次对每个请求组中的各个内存访问请求对应的指令进行重构处理。
其中,内存访问请求中的地址包括逻辑通道地址以及行地址。对于随机访问以及连续访问,内存控制器对内存访问请求中的地址的预充电以及激活的时序不同。当内存访问请求的类型为随机访问时,该步骤具体包括:
S251,按照所有内存访问请求中逻辑通道地址的顺序,依次对每个请求组中的所有逻辑通道地址进行预充电。
S252,按照所有内存访问请求中行地址的顺序,依次对每个请求组中的所有行地址进行激活。
对于每一个第一请求组,内存控制器按照该第一请求组中所有内存访问请求的顺序,依次对内存访问请求的逻辑通道地址进行预充电;在第一请求组中的所有逻辑通道地址预充电完成之后,再次按照内存访问请求的顺序,依次对内存访问请求的行地址进行激活,待该第一请求组中的所有内存访问请求的行地址全部激活完成之后,对于第一请求组中的内存访问请求中的地址预处理完成。
S253,依次对各个内存访问请求对应的指令进行顺序处理。
其中,内存访问请求还包括有第一标签,该第一标签用于表示内存控制器获取到内存访问请求的顺序。当内存访问请求为数据读取请求时,内存控制器按照内存访问请求的顺序,对读取出的数据附上第二标签;其中,第二标签与第一标签相同。
与图1所示实施例相比,本发明实施例提供的内存访问请求的处理方法,当内存访问请求的类型为随机访问时,先顺序对每个逻辑通道地址进行预充电,再顺序进行激活,最后连续进行内存访问请求的处理,如此避免了每次预充电和激活的等待时间所导致的接口利用率低,提高内存访问效率;此外,通过对第一标签以及第二标签实现内存访问请求与读取出的数据进行标记,从而使数据读取指令与读取出的数据对应,防止数据错位。
在本发明的一些可选实施方式中,当内存访问请求为连续访问时,即针对每个第二请求组,对内存访问请求中的地址的预处理具体包括:按照每个第二请求组中内存访问请求的顺序,依次对每个内存访问请求的逻辑通道地址进行预充电以及行地址进行激活,在预充电以及激活完成之后,连续进行内存访问请求的处理,不再进行预充电以及激活操作,直至该第二请求组中所有的内存访问请求全部处理结束为止。
本发明实施例还提供了一种内存访问请求的处理方法,如图3所示,该方法包括:
S31,依次获取若干内存访问请求。详细请参见图2所示实施例的S21,在此不再赘述。
S32,提取内存访问请求中的逻辑通道地址。详细请参见图2所示实施例的S22,在此不再赘述。
S33,基于逻辑通道地址对内存访问请求进行编组,以形成若干请求组。详细请参见图2所示实施例的S23,在此不再赘述。
S34,针对每个所述请求组,依次对内存访问请求进行预处理,以形成完成所述内存访问请求所需的指令。详细请参见图2所示实施例的S24,在此不再赘述。
S35,依次对每个请求组中的各个内存访问请求对应的指令进行重构处理。
本实施例中,内存控制器在对内存访问请求进行处理时,只有当前请求组中的所有内存访问请求全部处理完成之后,才进行在后请求组的处理。具体包括:
S351,判断当前请求组中的所有内存访问请求是否全部处理完成。
当内存控制器将当前请求组中的所有内存访问请求全部处理完成之后,执行S352;否则,对当前请求组中的内存访问请求进行处理直至全部内存访问请求处理完成为止。其中,当前请求组中的所有内存访问请求的处理请参照图2所示实施例的S25,在此不再赘述。
S352,当全部处理完成时,对在后请求组中的内存访问请求进行处理。
与图2所示实施例相比,本发明实施例提供的内存访问请求的处理方法,只有在当前请求组中的所有内存访问请求全部处理完成之后,才进行在后请求组汇总的内存访问请求的处理,以防止破坏读写顺序;即,在处理读/写内存访问请求之前,要完成排列在此内存访问请求前面的所有读/写内存访问请求。
本发明实施例还提供了一种内存访问请求的处理方法的具体应用实例,本实施例中内存控制器的结构如图4所示,从图4中可以看出,内存控制器通过申请重构与指令重构来实现随机访问内存的加速。
访问申请FIFO:访问申请FIFO缓存读/写的数据申请。其中,读数据申请只缓存读指令,即读操作、读地址及长度;写数据申请缓存写指令的同时,同步缓存待写数据。缓存采用FIFO方式,确保先输入的申请优先被申请重构模块读取。
申请重构:申请重构模块主要针对内存访问特点,对申请顺序进行重新排列并形成可高效执行的申请指令组,达到高效内存访问的目的。编组原则如下:
(1)连续访问状态下(连续地址访存申请或同bank同row地址访问):按申请顺序编为同一组,组内不能有非同bank同row地址;
(2)随机访问状态下(大量不同row且无规律的访问地址申请):每组内编制多个目标为不同bank的地址申请,总数不超过bank数量,如顺序访问中有相两同bank地址,则把其中后一地址存入优先申请缓存,直至编制满一组的申请;
(3)申请重构模块读取申请信息时,优先读取优先申请缓存中的申请并编制入组;
(4)读写申请不能交叉分组,以防止破坏读写顺序。即在处理读/写申请前,要完成排列在此申请前面的所有写/读申请。
该模块设计利用率DDR同bank同row内地址连续访问效率较高,不同row不同bank比不同row同bank访问效率高等特点,重新对访问申请排序,提高内存访问效率。申请重构模块处理流程图如图5所示。
指令重构:指令重构为整个设计的核心。指令重构模块在处理连续访问时,对一个bank进行precharge和row激活后,连续进行数据访问,不再进行激活和precharge操作,直至本组访问结束;在处理随机访问时,先顺序对每个bank进行precharge,再顺序进行激活,最后连续进行数据访问,如此设计避免了每次precharge和bank的等待时间所导致的接口利用率低,提高内存访问效率,理论可从百分之十几的速度提高到最高百分之九十左右。
在读取申请组指令时,为提高控制器存储效率,要使用申请组缓存存储至少一组申请信息,以填补读取时指令输入完成,数据还未完全输出的指令通道空闲,从而提高访问效率。指令重构模块工作流程如图6所示。
内存控制:内存控制是根据不同内存颗粒/内存条的电气特性,与这些内存介质的IO进行物理通讯,从而达到内存访问的目的。
数据标签:数据标签是对读取指令交叉重构后,为读出的数据打上标签,从而使读取的访问申请与响应数据对应,防止数据错位。
数据响应FIFO:数据FIFO缓存读取出的数据,待外部接口取用。
通过以上方案,设计出的内存控制器的实现是基于指令的交叉重构,达到提高随机内存访问效率,提升系统运行性能的目的。具有以下优点:
(1)内存随机访问时的指令重构;
(2)内存访问的按组控制;
(3)内存访问申请的动态重组。
在本实施例中还提供了一种内存访问请求的处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种内存访问请求的处理装置,如图7所示,包括:
获取模块71,用于依次获取若干内存访问请求。
提取模块72,用于提取所述内存访问请求中的逻辑通道地址。
编组模块73,用于基于所述逻辑通道地址对所述内存访问请求进行编组,以形成若干请求组。
预处理模块74,用于针对每个所述请求组,依次对内存访问请求进行预处理,以形成完成所述内存访问请求所需的指令。
指令处理模块75,用于依次对每个请求组中的各个内存访问请求对应的指令进行重构处理。
本发明实施例提供的内存访问请求的处理装置,基于内存访问请求中的逻辑通道地址对内存访问请求进行编组,由于内存在具体工作时不同的逻辑通道地址件的操作互不影响,且对于同一个逻辑通道地址进行预充电或激活指令发出后,若操作另一个逻辑通道地址则无需等待上一步操作完成,因此,基于逻辑通道地址对内存访问请求进行编组,并基于编组之后的请求组进行内存访问请求的处理,能够避免每次预充电和激活的等待时间所导致的接口利用率低,提高了内存访问效率。
在本实施例的一些可选实施方式中,如图8所示,编组模块73包括:
确定单元731,用于根据所有所述内存访问请求的所述逻辑通道地址,确定所述内存访问请求的类型;其中,所述内存访问请求的类型包括连续访问以及随机访问。
判断单元732,用于当所述内存访问请求的类型为随机访问时,按照所述内存访问请求的顺序,依次判断是否存在所述逻辑通道地址相同的所述内存访问请求。
编组单元733,用于当存在所述逻辑通道地址相同的所述内存访问请求时,将在前的所述内存访问请求编入第一请求组,将在后的所述内存访问请求存入第一申请缓存中。
本实施例中的内存访问请求的处理装置是以功能单元的形式来呈现,这里的单元是指ASIC电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各个模块的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本发明实施例还提供一种内存控制器,具有上述图7所示的内存访问请求的处理装置。
请参阅图9,图9是本发明可选实施例提供的一种内存控制器的结构示意图,如图9所示,该内存控制器可以包括:至少一个处理器81,例如CPU(Central Processing Unit,中央处理器),至少一个通信接口83,存储器84,至少一个通信总线82。其中,通信总线82用于实现这些组件之间的连接通信。其中,通信接口83可以包括显示屏(Display)、键盘(Keyboard),可选通信接口83还可以包括标准的有线接口、无线接口。存储器84可以是高速RAM存储器(Random Access Memory,易挥发性随机存取存储器),也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器84可选的还可以是至少一个位于远离前述处理器81的存储装置。其中处理器81可以结合图7所描述的装置,存储器84中存储应用程序,且处理器81调用存储器84中存储的程序代码,以用于执行上述任一方法步骤。
其中,通信总线82可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。通信总线82可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器84可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard diskdrive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);存储器84还可以包括上述种类的存储器的组合。
其中,处理器81可以是中央处理器(英文:central processing unit,缩写:CPU),网络处理器(英文:network processor,缩写:NP)或者CPU和NP的组合。
其中,处理器81还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,缩写:ASIC),可编程逻辑器件(英文:programmable logic device,缩写:PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,缩写:FPGA),通用阵列逻辑(英文:generic arraylogic,缩写:GAL)或其任意组合。
可选地,存储器84还用于存储程序指令。处理器81可以调用程序指令,实现如本申请图1至图3实施例中所示的内存访问请求的处理方法。
本发明实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的内存访问请求的处理方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(HardDisk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (8)
1.一种内存访问请求的处理方法,其特征在于,包括:
依次获取若干内存访问请求;
提取所述内存访问请求中的逻辑通道地址;
基于所述逻辑通道地址对所述内存访问请求进行编组,以形成若干请求组;
针对每个所述请求组,依次对内存访问请求进行预处理,以形成完成所述内存访问请求所需的指令;
依次对每个所述请求组中的各个所述内存访问请求对应的指令进行重构处理;
其中,所述基于所述逻辑通道地址对所述内存访问请求进行编组,包括:
根据所有所述内存访问请求的所述逻辑通道地址,确定所述内存访问请求的类型;其中,所述内存访问请求的类型包括连续访问以及随机访问;
当所述内存访问请求的类型为随机访问时,按照所述内存访问请求的顺序,依次判断是否存在所述逻辑通道地址相同的所述内存访问请求;
当存在所述逻辑通道地址相同的所述内存访问请求时,将在前的所述内存访问请求编入第一请求组,将在后的所述内存访问请求存入第一申请缓存中。
2.根据权利要求1所述的方法,其特征在于,所述根据所有所述内存访问请求的所述逻辑通道地址,确定所述内存访问请求的类型的步骤之后,还包括:
当所述内存访问请求的类型为连续访问时,按照所述内存访问请求的顺序将所述内存访问请求编入第二请求组。
3.根据权利要求1所述的方法,其特征在于,所述内存访问请求的类型为随机访问;所述依次对每个所述请求组中的各个所述内存访问请求对应的指令进行重构处理,包括:
按照所有所述内存访问请求的顺序,依次对每个所述请求组中的所有所述逻辑通道地址进行预充电;
按照所有所述内存访问请求的顺序,依次对每个所述请求组中的所有行地址进行激活;
依次对各个所述内存访问请求对应的指令进行顺序处理。
4.根据权利要求1所述的方法,其特征在于,所述内存访问请求还包括有第一标签,所述第一标签用于表示获取所述内存访问请求的顺序;
所述依次对每个所述请求组中的各个所述内存访问请求对应的指令顺序进行重构处理,包括:
当所述内存访问请求为数据读取请求时,按照所述内存访问请求的顺序,对读取出的数据附上第二标签;其中,所述第二标签与所述第一标签相同。
5.根据权利要求1所述的方法,其特征在于,依次对每个所述请求组中的所述内存访问请求进行处理,包括:
判断当前所述请求组中的所有所述内存访问请求是否全部处理完成;
当全部处理完成时,对在后所述请求组中的所述内存访问请求进行处理。
6.一种内存访问请求的处理装置,其特征在于,包括:
获取模块,用于依次获取若干内存访问请求;
提取模块,用于提取所述内存访问请求中的逻辑通道地址;
编组模块,用于基于所述逻辑通道地址对所述内存访问请求进行编组,以形成若干请求组;
预处理模块,用于针对每个所述请求组,依次对内存访问请求进行预处理,以形成完成所述内存访问请求所需的指令;
指令处理模块,用于依次对每个所述请求组中的各个所述内存访问请求对应的指令进行重构处理;
其中,所述编组模块,包括:
确定单元,用于根据所有所述内存访问请求的所述逻辑通道地址,确定所述内存访问请求的类型;其中,所述内存访问请求的类型包括连续访问以及随机访问;
判断单元,用于当所述内存访问请求的类型为随机访问时,按照所述内存访问请求的顺序,依次判断是否存在所述逻辑通道地址相同的所述内存访问请求;
编组单元,用于当存在所述逻辑通道地址相同的所述内存访问请求时,将在前的所述内存访问请求编入第一请求组,将在后的所述内存访问请求存入第一申请缓存中。
7.一种内存控制器,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行上述权利要求1-5中任一所述的内存访问请求的处理方法。
8.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现上述权利要求1-5中任一所述的内存访问请求的处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810821700.5A CN109284231B (zh) | 2018-07-24 | 2018-07-24 | 内存访问请求的处理方法、装置及内存控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810821700.5A CN109284231B (zh) | 2018-07-24 | 2018-07-24 | 内存访问请求的处理方法、装置及内存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109284231A CN109284231A (zh) | 2019-01-29 |
CN109284231B true CN109284231B (zh) | 2023-05-23 |
Family
ID=65183119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810821700.5A Active CN109284231B (zh) | 2018-07-24 | 2018-07-24 | 内存访问请求的处理方法、装置及内存控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109284231B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021782A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 针对流处理的存储访问与调度装置 |
CN102411982A (zh) * | 2010-09-25 | 2012-04-11 | 杭州华三通信技术有限公司 | 内存控制器及命令控制方法 |
CN102681946A (zh) * | 2012-05-11 | 2012-09-19 | 龙芯中科技术有限公司 | 内存访问方法和装置 |
CN104346285A (zh) * | 2013-08-06 | 2015-02-11 | 华为技术有限公司 | 内存访问处理方法、装置及系统 |
CN106155577A (zh) * | 2015-04-23 | 2016-11-23 | 华为技术有限公司 | 扩展内存的访问方法、设备以及系统 |
CN106569959A (zh) * | 2016-10-28 | 2017-04-19 | 郑州云海信息技术有限公司 | 一种基于ssd的缓存替换方法及系统 |
CN107239407A (zh) * | 2016-03-29 | 2017-10-10 | 华为技术有限公司 | 一种内存的无线访问方法和装置 |
-
2018
- 2018-07-24 CN CN201810821700.5A patent/CN109284231B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021782A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 针对流处理的存储访问与调度装置 |
CN102411982A (zh) * | 2010-09-25 | 2012-04-11 | 杭州华三通信技术有限公司 | 内存控制器及命令控制方法 |
CN102681946A (zh) * | 2012-05-11 | 2012-09-19 | 龙芯中科技术有限公司 | 内存访问方法和装置 |
CN104346285A (zh) * | 2013-08-06 | 2015-02-11 | 华为技术有限公司 | 内存访问处理方法、装置及系统 |
CN106155577A (zh) * | 2015-04-23 | 2016-11-23 | 华为技术有限公司 | 扩展内存的访问方法、设备以及系统 |
CN107239407A (zh) * | 2016-03-29 | 2017-10-10 | 华为技术有限公司 | 一种内存的无线访问方法和装置 |
CN106569959A (zh) * | 2016-10-28 | 2017-04-19 | 郑州云海信息技术有限公司 | 一种基于ssd的缓存替换方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109284231A (zh) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220263648A1 (en) | Circuit and method for overcoming memory bottleneck of asic-resistant cryptographic algorithms | |
US20190361609A1 (en) | Data storage method, apparatus and storage medium | |
CN108920387B (zh) | 降低读延迟的方法、装置、计算机设备及存储介质 | |
CN102609360B (zh) | 一种数据处理方法、装置及系统 | |
US9489148B2 (en) | Selecting between non-volatile memory units having different minimum addressable data unit sizes | |
US10860494B2 (en) | Flushing pages from solid-state storage device | |
US10290334B2 (en) | Read latency reduction in a memory device | |
US9411519B2 (en) | Implementing enhanced performance flash memory devices | |
WO2017041570A1 (zh) | 向缓存写入数据的方法及装置 | |
US10789170B2 (en) | Storage management method, electronic device and computer readable medium | |
CN106681660B (zh) | Io调度方法及io调度装置 | |
CN109375868B (zh) | 一种数据存储方法、调度装置、系统、设备及存储介质 | |
CN104834478A (zh) | 一种基于异构混合存储设备的数据写入及读取方法 | |
CN109284231B (zh) | 内存访问请求的处理方法、装置及内存控制器 | |
JP6332756B2 (ja) | データ処理方法、装置、およびシステム | |
CN109710547B (zh) | 一种工业物联网中的缓冲内存管理设计与实现方法 | |
CN104899158A (zh) | 访存优化方法和装置 | |
CN103761052A (zh) | 一种管理高速缓存的方法及存储装置 | |
CN110825326A (zh) | 提升ssd随机读性能的方法、装置、计算机设备及存储介质 | |
CN115933994A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
US10282328B2 (en) | Apparatus having direct memory access controller and method for accessing data in memory | |
US8127082B2 (en) | Method and apparatus for allowing uninterrupted address translations while performing address translation cache invalidates and other cache operations | |
US9658976B2 (en) | Data writing system and method for DMA | |
KR101939361B1 (ko) | 비휘발성 메모리를 이용한 로깅 방법 | |
CN115826882B (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 |