CN112463658B - 加载存储单元的实现方法、装置和计算机存储介质 - Google Patents
加载存储单元的实现方法、装置和计算机存储介质 Download PDFInfo
- Publication number
- CN112463658B CN112463658B CN202110145632.7A CN202110145632A CN112463658B CN 112463658 B CN112463658 B CN 112463658B CN 202110145632 A CN202110145632 A CN 202110145632A CN 112463658 B CN112463658 B CN 112463658B
- Authority
- CN
- China
- Prior art keywords
- write data
- instruction
- address
- data
- memory
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种加载存储单元的实现方法、装置和计算机存储介质,该方法包括以下步骤:当接收到写数据指令时,将写数据指令进行地址转译后保存于写数据缓冲区,并准备接收下一条写数据指令;当接收到读数据指令时,将读数据指令进行地址转译后向写数据缓冲区查询是否存在地址冲突;当存在地址冲突时,从写数据缓冲区中读取数据;当不存在地址冲突时,从系统存储器读取数据。解决了现有技术中现有技术中存在执行读数据指令或者写数据指令时的延时与吞吐率问题。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种加载存储单元的实现方法、装置和计算机存储介质。
背景技术
中央处理器CPU中的LSU(Load Store Unit,加载存储单元),LSU为CPU Load(读数据),Store(写数据)指令的执行单元,其主要的功能为:
1. 生成访问存储器的Load(读数据)请求,并返回存储器相应地址的数据:前端的Load指令在LSU完成虚拟地址向物理地址的转译(MMU(存储管理单元)完成地址转译),并向存储器发出访问请求,待存储器返回数据后由LSU打包并将结果送到后端模块。
2. 生成访问存储器Store(写数据)请求:前端的Store指令在LSU完成虚拟地址向物理地址的转译(MMU完成地址转译),并向存储器发出访问请求,待存储器返回授权后执行下一条Store指令。
现有技术的缺点:
1. LSU需要等待MMU的地址转译请求成功执行,通常的做法是MMU返回物理地址后,再向存储器发出访问请求。这将会增加Load访问延时。
2. Load的指令可能与还未执行的Store指令发生地址冲突,通常的做法是等待Store指令的执行,待解冲突后才能执行Load指令。这样将会增加Load的访问延时。
3. 存储器执行完一条Store后,再执行下一条Store指令。通常的做法是LSU等待存储器返回的Store指令授权,再接收从前端发送的Store指令。这样的做法使得LSU向存储器每发送一次Store请求都要完成一次存储器与LSU,以及LSU与前端的握手,消耗了额外的时序,增加了Store指令的延时。
因此,现有技术中存在执行读数据指令或者写数据指令时的延时问题。
发明内容
本发明主要目的在于提供一种加载存储单元的实现方法、装置和计算机存储介质,旨在解决现有技术中存在执行读数据指令或者写数据指令时的延时问题。
为实现上述目的,本发明提供一种加载存储单元的实现方法,所述加载存储单元的实现方法包括以下步骤:
当接收到写数据指令时,将所述写数据指令进行地址转译后保存于写数据缓冲区,并准备接收下一条写数据指令;
当接收到读数据指令时,将所述读数据指令进行地址转译后向所述写数据缓冲区查询是否存在地址冲突;
当存在地址冲突时,从所述写数据缓冲区中读取数据;
当不存在地址冲突时,从系统存储器读取数据。
在一实施例中,所述当接收到写数据指令时,将所述写数据指令进行地址转译后保存于写数据缓冲区,并准备接收下一条写数据指令,包括:
允许接收写数据指令;
接收写数据指令,向内存管理单元提起地址转译请求;
在所述内存管理单元完成地址转译后,若写数据缓冲区未写满,将写数据指令对应的虚拟地址、物理地址及数据存入所述写数据缓冲区,并准备接收下一条写数据指令。
在一实施例中,所述当接收到写数据指令时,将所述写数据指令进行地址转译后保存于写数据缓冲区,并准备接收下一条写数据指令,还包括:
向系统存储器发起写数据请求;
当所述写数据请求被执行后,将写数据指令对应的虚拟地址、物理地址及数据从所述写数据缓冲区中删除。
在一实施例中,所述当接收到写数据指令时,将所述写数据指令进行地址转译后保存于写数据缓冲区,并准备接收下一条写数据指令,还包括:
判断所述写数据指令中的内存管理单元页表缓存是否命中;
当所述内存管理单元页表缓存命中时,判断所述写数据缓冲区是否写满;或
当所述内存管理单元页表缓存未命中时,等待所述内存管理单元完成地址转译,判断所述写数据缓冲区是否写满。
在一实施例中,还包括:
读出写数据缓冲区中的当前写数据指令;
根据所述当前写数据指令向系统存储器发起写数据请求;
根据所述物理地址将所述数据写入所述系统存储器中。
在一实施例中,所述当接收到读数据指令时,将所述读数据指令进行地址转译后向所述写数据缓冲区查询是否存在地址冲突,包括:
允许接收读数据指令;
接收读数据指令,向内存管理单元提起地址转译请求;
将所述读数据指令对应的虚拟地址与所述写数据缓冲区中写数据指令对应的虚拟地址进行比对;
根据比对后的结果查询是否存在地址冲突。
在一实施例中,所述当不存在地址冲突时,从系统存储器读取数据,包括:
根据所述比对后的结果查询到不存在地址冲突时,判断读数据指令中的内存管理单元页表缓存是否命中;
向系统存储器提起读数据指令请求;
当所述内存管理单元页表缓存命中时,修改去向所述系统存储器的读数据指令请求的物理地址;
根据修改后的物理地址从所述系统存储器中读取数据。
在一实施例中,还包括:
当所述内存管理单元页表缓存未命中时,将所述读数据指令请求杀死,等待内存管理单元完成地址转译;
重新向所述系统存储器提起读数据指令请求;
修改去向所述系统存储器读数据指令请求的物理地址;
根据修改后的物理地址从所述系统存储器中读取数据。
为实现上述目的,本发明还提供一种加载存储单元的实现装置,所述装置包括存储器、处理器以及存储在所述存储器并可在所述处理器上运行的加载存储单元的实现程序,所述加载存储单元的实现程序被所述处理器执行时实现如上所述的加载存储单元的实现方法的各个步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有加载存储单元的实现程序,所述加载存储单元的实现程序被处理器执行时实现如上所述的加载存储单元的实现方法的各个步骤。
本发明提供的加载存储单元的实现方法、装置和计算机存储介质,当接收到写数据指令时,通过内存管理单元完成写数据指令的地址转译,然后将完成地址转移后写数据指令对应的虚拟地址、物理地址及数据存入写数据缓冲区中,并准备接收下一条写数据指令,通过此操作表明写数据缓冲区中存储的写数据指令都是完成地址转译后的数据,则在后续向系统存储器进行写数据的操作中,读出写数据缓冲区中的写数据指令进行写数据操作即可。因为写数据缓冲区的存在,不需要等待系统存储器授权即可接收下一条写数据指令。当接收到读数据指令时,通过内存管理单元进行读数据指令的地址转译,将读数据指令对应的虚拟地址转换为物理地址,在此不确定读数据指令是否完成地址转译,将读数据指令对应的虚拟地址与写数据缓冲区中的写数据指令对应的虚拟地址查询是否存在地址冲突;当存在地址冲突时,直接从写数据缓冲区中读出与读数据指令地址冲突的写数据指令对应的数据;当不存在地址冲突时,则从系统存储器中读取数据。通过以上操作,从而解决了现有技术中存在执行读数据指令或者写数据指令时的延时与吞吐率问题。
附图说明
图1为本发明实施例涉及的装置结构示意图;
图2为本发明加载存储单元的实现方法的第一实施例的流程示意图;
图3为本申请加载存储单元的架构示意图;
图4为本发明加载存储单元的实现方法的第二实施例的流程示意图;
图5为本发明加载存储单元的实现方法的第三实施例的流程示意图;
图6为本发明加载存储单元的实现方法的第四实施例的流程示意图;
图7为本发明加载存储单元的实现方法的第五实施例的流程示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:当接收到写数据指令时,通过内存管理单元完成写数据指令的地址转译,然后将完成地址转移后写数据指令对应的虚拟地址、物理地址及数据存入写数据缓冲区中,并准备接收下一条写数据指令,通过此操作表明写数据缓冲区中存储的写数据指令都是完成地址转译后的数据,则在后续向系统存储器进行写数据的操作中,读出写数据缓冲区中的写数据指令进行写数据操作即可。因为写数据缓冲区的存在,不需要等待系统存储器授权即可接收下一条写数据指令。当接收到读数据指令时,通过内存管理单元进行读数据指令的地址转译,将读数据指令对应的虚拟地址转换为物理地址,在此不确定读数据指令是否完成地址转译,将读数据指令对应的虚拟地址与写数据缓冲区中的写数据指令对应的虚拟地址查询是否存在地址冲突;当存在地址冲突时,直接从写数据缓冲区中读出与读数据指令地址冲突的写数据指令对应的数据;当不存在地址冲突时,则从系统存储器中读取数据。通过以上操作,从而解决了现有技术中存在执行读数据指令或者写数据指令时的延时与吞吐率问题。
作为一种实现方式,可以如图1所示,图1是本发明实施例方案涉及的装置结构示意图。
处理器1100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1100可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1200,处理器1100读取存储器1200中的信息,结合其硬件完成上述方法的步骤。
可以理解,本发明实施例中的存储器1200可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的 RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器 (Synchlink DRAM,SLDRAM) 和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本发明实施例描述的系统和方法的存储器1200旨在包括但不限于这些和任意其它适合类型的存储器。
对于软件实现,可通过执行本发明实施例所述功能的模块(例如过程、函数等)来实现本发明实施例所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
基于上述结构,提出本发明加载存储单元的实现方法的实施例。
参照图2,图2为本发明加载存储单元的实现方法的第一实施例,包括以下步骤:
步骤S110,当接收到写数据指令时,将所述写数据指令进行地址转译后保存于写数据缓冲区,并准备接收下一条写数据指令。
中央处理器CPU中的LSU(Load Store Unit,加载存储单元),LSU为CPU Load(读数据),Store(写数据)指令的执行单元,其主要的功能为:
1. 生成访问存储器的Load(读数据)请求,并返回存储器相应地址的数据:前端的Load指令在LSU完成虚拟地址向物理地址的转译(MMU(存储管理单元)完成地址转译),并向存储器发出访问请求,待存储器返回数据后由LSU打包并将结果送到后端模块。
2. 生成访问存储器Store(写数据)请求:前端的Store指令在LSU完成虚拟地址向物理地址的转译(MMU完成地址转译),并向存储器发出访问请求,待存储器返回授权后执行下一条Store指令。
参照图3,图3为本申请加载存储单元10(Load Store单元)的架构,具体由读数据(Load)处理模块11、写数据(Store)处理模块12、写数据缓冲区(store_buffer)12a、内存管理单元13和系统存储器20组成。其中,读数据处理模块中含有读数据状态机(Load FSM);写数据处理模块中含有写数据状态机(Store FSM)。
在本实施例中,指令是一系列二进制代码,是对计算机进行程序控制的最小单位,是计算机所能识别并执行某种操作的命令。写数据指的是通过加载存储单元(Load Store单元)向系统存储器写入数据。内存管理单元,MMU是Memory Management Unit的缩写,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。地址转译指的是通过内存管理单元将虚拟地址转换为物理地址。缓冲区(buffer),它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的,在本申请中优选为在写数据处理模块中增加一个写数据缓冲区(store_buffer)。
在本实施例中,可以优选为当加载存储单元中的写数据处理模块接收来自前端的写数据(Store)指令时,将写数据(Store)指令发送到内存管理单元(MMU)中进行地址转译,将完成地址转译(PTW)后写数据对应的物理地址及数据保存于写数据缓冲区中,写数据缓冲区准备接收下一条写数据指令。
步骤S120,当接收到读数据指令时,将所述读数据指令进行地址转译后向所述写数据缓冲区查询是否存在地址冲突。
在本实施例中,可以优选为当加载存储单元中的读数据处理模块接收来自前端的读数据(Load)指令时,将读数据(Load)指令发送到内存管理单元(MMU)中进行地址转译,即将读数据指令对应的虚拟地址转换为物理地址,这一步不确定是否完成地址转译,将读数据指令对应的虚拟地址发送到写数据缓冲区中查询是否存在地址冲突,地址冲突指的是读数据指令对应的虚拟地址与写数据缓冲区中存在写数据指令对应的虚拟地址相同的情况。
步骤S130,当存在地址冲突时,从所述写数据缓冲区中读取数据。
在本实施例中,读数据处理模块接收到写数据缓冲区返回的写数据指令对应的物理地址查询到存在地址冲突时,即表明读数据指令对应的物理地址与存储在写数据缓冲区中写数据指令对应的物理地址有相同的存在,读数据处理模块从写数据缓冲区中读取与读数据指令地址冲突的数据。
步骤S140,当不存在地址冲突时,从系统存储器读取数据。
在本实施例中,读数据处理模块接收到写数据缓冲区返回的写数据指令对应的虚拟地址查询到不存在地址冲突时,即表明读数据指令对应的虚拟地址与存储在写数据缓冲区中写数据指令对应的虚拟地址没有相同的存在,读数据处理模块完成读数据指令的地址转译后,则从系统存储器中读取数据。
在本实施例提供的技术方案中,当接收到写数据指令时,通过内存管理单元完成写数据指令的地址转译,然后将完成地址转移后写数据指令对应的虚拟地址、物理地址及数据存入写数据缓冲区中,并准备接收下一条写数据指令,通过此操作表明写数据缓冲区中存储的写数据指令都是完成地址转译后的数据,则在后续向系统存储器进行写数据的操作中,读出写数据缓冲区中的写数据指令进行写数据操作即可。因为写数据缓冲区的存在,不需要等待系统存储器授权即可接收下一条写数据指令。当接收到读数据指令时,通过内存管理单元进行读数据指令的地址转译,将读数据指令对应的虚拟地址转换为物理地址,在此不确定读数据指令是否完成地址转译,将读数据指令对应的虚拟地址与写数据缓冲区中的写数据指令对应的虚拟地址查询是否存在地址冲突;当存在地址冲突时,直接从写数据缓冲区中读出与读数据指令地址冲突的写数据指令对应的数据;当不存在地址冲突时,则从系统存储器中读取数据。通过以上操作,从而解决了现有技术中存在执行读数据指令或者写数据指令时的延时与吞吐率问题。
参照图4,图4为本发明加载存储单元的实现方法的第二实施例,包括:
与第一实施例相比,第二实施例包含步骤S210,步骤S220,步骤S230,其他步骤与第一实施例相同,不再赘述。
步骤S210,允许接收写数据指令。
在本实施例中,可以优选为,写数据状态机(Store FSM)进入初始状态,允许写数据处理模块接收写数据指令。
步骤S220,接收写数据指令,向内存管理单元提起地址转译请求。
在本实施例中,写数据处理模块接收写数据指令,向内存管理单元提起地址转译请求,即向内存管理单元提起将写数据指令对应的虚拟地址转换为物理地址的转译请求。
步骤S230,在所述内存管理单元完成地址转译后,若写数据缓冲区未写满,将写数据指令对应的虚拟地址、物理地址及数据存入所述写数据缓冲区,并准备接收下一条写数据指令。
在本实施例中,在内存管理单元完成写数据指令的地址转译后,若写数据处理模块判断写数据缓冲区未写满,即表明写数据缓冲区的剩余内存存在可以存储写数据指令对应的物理地址及数据的空间,则将写数据指令对应的虚拟地址、物理地址及数据存入写数据缓冲区中,写数据缓冲区准备接收下一条写数据指令。
步骤S240,当接收到读数据指令时,将所述读数据指令进行地址转译后向所述写数据缓冲区查询是否存在地址冲突。
步骤S250,当存在地址冲突时,从所述写数据缓冲区中读取数据。
步骤S260,当不存在地址冲突时,从系统存储器读取数据。
在本实施例提供的技术方案中,允许写数据处理模块接收写数据指令;接收写数据指令,根据写数据指令向内存管理单元提起将写数据指令对应的虚拟地址转换为物理地址的转译请求;在内存管理单元完成地址转译后,若写数据缓冲区未写满,将写数据指令对应的虚拟地址、物理地址及数据存入所述写数据缓冲区,并准备接收下一条写数据指令,进一步解决了执行写数据指令时的延时问题。
参照图5,图5为本发明加载存储单元的实现方法的第三实施例,包括:
步骤S310,允许接收写数据指令。
步骤S320,接收写数据指令,向内存管理单元提起地址转译请求。
步骤S330,在所述内存管理单元完成地址转译后,若写数据缓冲区未写满,将写数据指令对应的虚拟地址、物理地址及数据存入所述写数据缓冲区,并准备接收下一条写数据指令。
与第二实施例相比,第三实施例包含步骤S340,步骤S350,其他步骤与第一实施例相同,不再赘述。
步骤S340,向系统存储器发起写数据请求。
在本实施例中,写数据处理模块从写数据缓冲区中读出写数据指令向系统存储器发起写数据请求。
步骤S350,当所述写数据请求被执行后,将写数据指令对应的虚拟地址、物理地址及数据从所述写数据缓冲区中删除。
在本实施例中,当写数据处理请求被执行后,表明在系统存储器中写入数据成功,将写数据指令对应的虚拟地址、物理地址及数据从写数据缓冲区中删除。
步骤S360,当接收到读数据指令时,将所述读数据指令进行地址转译后向所述写数据缓冲区查询是否存在地址冲突。
步骤S370,当存在地址冲突时,从所述写数据缓冲区中读取数据。
步骤S380,当不存在地址冲突时,从系统存储器读取数据。
在本实施例提供的技术方案中,写数据处理模块从写数据缓冲区中读出写数据指令向系统存储器发起写数据请求;当写数据请求被执行后,表明在系统存储器中写入数据成功,将写数据指令对应的虚拟地址、物理地址及数据从写数据缓冲区中删除,保证了写数据缓冲区中的空间利用资源。
参照图6,图6为本发明加载存储单元的实现方法的第四实施例,包括:
步骤S410,允许接收写数据指令。
步骤S420,接收写数据指令,向内存管理单元提起地址转译请求。
与第二实施例相比,第三实施例包含步骤S430,步骤S440,其他步骤与第一实施例相同,不再赘述。
步骤S430,判断所述写数据指令中的内存管理单元页表缓存是否命中;
在本实施例中,TLB(Translation Lookaside Buffer)转换检测缓冲区是一个内存管理单元,用于改进虚拟地址到物理地址转换速度的缓存,TLB是一个小的,虚拟寻址的缓存,其中每一行都保存着一个由单个PTE(Page Table Entry,页表项)组成的块。如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据。写数据处理模块判断写数据指令中的内存管理单元页表缓存(MMU TLB)是否命中。
步骤S440,当所述内存管理单元页表缓存命中时,判断所述写数据缓冲区是否写满。
在本实施例中,当写数据处理模块判断内存管理单元页表缓存(MMU TLB)命中时,即表明写数据指令完成地址转译,再判断写数据缓冲区是否写满,即判断写数据缓冲区的可利用空间资源是否能够存储写数据指令。
或步骤S450,当所述内存管理单元页表缓存未命中时,等待所述内存管理单元完成地址转译,判断所述写数据缓冲区是否写满。
在本实施例中,当写数据处理模块判断内存管理单元页表缓存(MMU TLB)未命中时,即表明写数据指令没有完成地址转译,则等待内存管理单元完成地址转译,即等待内存管理单元页表缓存(MMU TLB)命中,再判断写数据缓冲区是否写满,即判断写数据缓冲区的可利用空间资源是否能够存储写数据指令。
步骤S460,若写数据缓冲区未写满,将写数据指令对应的物理地址及数据存入所述写数据缓冲区,并准备接收下一条写数据指令。
步骤S470,当接收到读数据指令时,将所述读数据指令进行地址转译后向所述写数据缓冲区查询是否存在地址冲突。
步骤S480,当存在地址冲突时,从所述写数据缓冲区中读取数据。
步骤S490,当不存在地址冲突时,从系统存储器读取数据。
在本实施例提供的技术方案中,写数据处理模块判断写数据指令中的内存管理单元页表缓存(MMU TLB)是否命中;当写数据处理模块判断内存管理单元页表缓存(MMU TLB)命中时,即表明写数据指令完成地址转译,再判断写数据缓冲区是否写满,即判断写数据缓冲区的可利用空间资源是否能够存储写数据指令。当写数据处理模块判断内存管理单元页表缓存(MMU TLB)未命中时,即表明写数据指令没有完成地址转译,则等待内存管理单元完成地址转译,即等待内存管理单元页表缓存(MMU TLB)命中,再判断写数据缓冲区是否写满,即判断写数据缓冲区的可利用空间资源是否能够存储写数据指令。进一步解决了执行写数据指令时的延时问题。
上述实施例中,还包括:
若写数据缓冲区已写满,则等待写数据缓冲区读出一条写数据指令向系统存储器发起写数据请求,然后将当前写数据指令对应的虚拟地址、物理地址及数据保存至写数据缓冲区中。
在第四实施例步骤S460之后,还包括:
步骤S510,读出写数据缓冲区中的当前写数据指令。
在本实施例中,读出写数据缓冲区中的当前写数据指令,读地址指针加1。
步骤S520,根据所述当前写数据指令向系统存储器发起写数据请求。
在本实施例中,根据当前写数据指令向系统存储器发起写数据请求,系统存储器返回授权。
步骤S530,根据所述物理地址将所述数据写入所述系统存储器中。
在本实施例中,根据当前写数据指令对应的物理地址将数据写入到系统存储器中,完成写数据指令请求。
参照图7,图7为本发明加载存储单元的实现方法的第五实施例,包括:
步骤S610,当接收到写数据指令时,将所述写数据指令进行地址转译后保存于写数据缓冲区,并准备接收下一条写数据指令。
与第一实施例相比,第五实施例包含步骤S620,步骤S630,步骤S640,步骤S650,其他步骤与第一实施例相同,不再赘述。
步骤S620,允许接收读数据指令。
在本实施例中,可以优选为,读数据状态机(Load FSM)进入初始状态,允许读数据处理模块接收读数据指令。
步骤S630,接收读数据指令,向内存管理单元提起地址转译请求。
在本实施例中,读数据处理模块接收读数据指令,向内存管理单元提起地址转译请求,即向内存管理单元提起将读数据指令对应的虚拟地址转换为物理地址的转译请求。
步骤S640,将所述读数据指令对应的虚拟地址与所述写数据缓冲区中写数据指令对应的虚拟地址进行比对。
在本实施例中,将读数据指令对应的虚拟地址与写数据缓冲区中写数据指令对应的虚拟地址进行比对。
步骤S650,根据比对后的结果查询是否存在地址冲突。
在本实施例中,读数据处理模块根据比对后的结果查询是否存在地址冲突,即查询读数据指令对应的虚拟地址与写数据缓冲区中的写数据指令对应的虚拟地址是否有相同的存在。
步骤S660,当存在地址冲突时,从所述写数据缓冲区中读取数据。
步骤S670,当不存在地址冲突时,从系统存储器读取数据。
在本实施例提供的技术方案中,将读数据指令对应的虚拟地址与写数据缓冲区中写数据指令对应的虚拟地址进行比对;根据比对后的结果查询是否存在地址冲突,即查询读数据指令对应的虚拟地址与写数据缓冲区中的写数据指令对应的虚拟地址是否有相同的存在。进一步解决了执行读数据指令时的延时问题。
在第五实施例的基础之上,还包括:
步骤S710,根据所述比对后的结果查询到不存在地址冲突时,判断读数据指令中的内存管理单元页表缓存是否命中。
在本实施例中,读数据处理模块根据比对后的结果查询到不存在地址冲突时,判断读数据指令中的内存管理单元页表缓存(MMU TLB)是否命中,即判断读数据指令是否完成地址转译。
步骤S720,向系统存储器提起读数据指令请求。
在本实施例中,读数据处理模块向系统存储器提起读数据指令请求。
步骤S730,当所述内存管理单元页表缓存命中时,修改去向所述系统存储器的读数据指令请求的物理地址。
在本实施例中,当读数据指令中的内存管理单元页表缓存(MMU TLB)命中时,即表明读数据指令完成地址转译,读数据处理模块修改去向系统存储器的读数据指令请求的物理地址。
步骤S740,根据修改后的物理地址从所述系统存储器中读取数据。
在本实施例中,读数据处理模块根据修改后的物理地址从系统存储器中读取数据。
在本实施例提供的技术方案中,读数据处理模块根据比对后的结果查询到不存在地址冲突时,判断读数据指令中的内存管理单元页表缓存(MMU TLB)是否命中,即判断读数据指令是否完成地址转译;读数据处理模块向系统存储器提起读数据指令请求;当读数据指令中的内存管理单元页表缓存(MMU TLB)命中时,即表明读数据指令完成地址转译,读数据处理模块修改去向系统存储器的读数据指令请求的物理地址;读数据处理模块根据修改后的物理地址从系统存储器中读取数据。进一步解决了执行读数据指令时的延时问题。
上述实施例中,还包括:
步骤S810,当所述内存管理单元页表缓存未命中时,将所述读数据指令请求杀死,等待内存管理单元完成地址转译。
在本实施例中,当读数据指令中的内存管理单元页表缓存(MMU TLB)未命中时,即表明读数据指令没有完成地址转译,则将读数据指令请求杀死(kill),为内存管理单元和存储器交互让出权限;等待内存管理单元完成地址转译,即等待内存管理单元页表缓存(MMU TLB)命中。
步骤S820,重新向所述系统存储器提起读数据指令请求。
在本实施例中,读数据处理模块重新向系统存储器提起读数据指令请求。
步骤S830,修改去向所述系统存储器读数据指令请求的物理地址。
在本实施例中,读数据处理模块修改去向系统存储器读数据指令请求的物理地址。
步骤S840,根据修改后的物理地址从所述系统存储器中读取数据。
在本实施例中,读数据处理模块根据修改后的物理地址从系统存储器中读取数据。
在本实施例提供的技术方案中,当读数据指令中的内存管理单元页表缓存(MMUTLB)未命中时,即表明读数据指令没有完成地址转译,则将读数据指令请求杀死(kill),为内存管理单元和存储器交互让出权限;等待内存管理单元完成地址转译,即等待内存管理单元页表缓存(MMU TLB)命中;读数据处理模块重新向系统存储器提起读数据指令请求;读数据处理模块修改去向系统存储器读数据指令请求的物理地址;读数据处理模块根据修改后的物理地址从系统存储器中读取数据。进一步解决了执行读数据指令时的延时问题。
本发明还提供一种加载存储单元的实现装置,所述装置包括存储器、处理器以及存储在所述存储器并可在所述处理器上运行的加载存储单元的实现程序,所述加载存储单元的实现程序被所述处理器执行时实现如上所述的加载存储单元的实现方法的各个步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有加载存储单元的实现程序,所述加载存储单元的实现程序被处理器执行时实现如上所述的加载存储单元的实现方法的各个步骤。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种加载存储单元的实现方法,其特征在于,所述加载存储单元的实现方法包括以下步骤:
当接收到写数据指令时,将所述写数据指令进行地址转译后保存于写数据缓冲区,并准备接收下一条写数据指令;
当接收到读数据指令时,将所述读数据指令进行地址转译后向所述写数据缓冲区查询是否存在地址冲突;
当存在地址冲突时,从所述写数据缓冲区中读取数据;
当不存在地址冲突时,从系统存储器读取数据;
其中,所述当接收到写数据指令时,将所述写数据指令进行地址转译后保存于写数据缓冲区,并准备接收下一条写数据指令,包括:允许接收写数据指令;接收写数据指令;判断所述写数据指令中的内存管理单元页表缓存是否命中;当所述内存管理单元页表缓存命中时,判断所述写数据缓冲区是否写满,或,当所述内存管理单元页表缓存未命中时,等待所述内存管理单元完成地址转译,判断所述写数据缓冲区是否写满;若写数据缓冲区未写满,将写数据指令对应的虚拟地址、物理地址及数据存入所述写数据缓冲区,并准备接收下一条写数据指令。
2.如权利要求1所述的加载存储单元的实现方法,其特征在于,所述当接收到写数据指令时,将所述写数据指令进行地址转译后保存于写数据缓冲区,并准备接收下一条写数据指令,还包括:
向系统存储器发起写数据请求;
当所述写数据请求被执行后,将写数据指令对应的虚拟地址、物理地址及数据从所述写数据缓冲区中删除。
3.如权利要求1所述的加载存储单元的实现方法,其特征在于,还包括:
读出写数据缓冲区中的当前写数据指令;
根据所述当前写数据指令向系统存储器发起写数据请求;
根据所述物理地址将所述数据写入所述系统存储器中。
4.如权利要求1所述的加载存储单元的实现方法,其特征在于,所述当接收到读数据指令时,将所述读数据指令进行地址转译后向所述写数据缓冲区查询是否存在地址冲突,包括:
允许接收读数据指令;
接收读数据指令,向内存管理单元提起地址转译请求;
将所述读数据指令对应的虚拟地址与所述写数据缓冲区中写数据指令对应的虚拟地址进行比对;
根据比对后的结果查询是否存在地址冲突。
5.如权利要求4所述的加载存储单元的实现方法,其特征在于,所述当不存在地址冲突时,从系统存储器读取数据,包括:
根据所述比对后的结果查询到不存在地址冲突时,判断读数据指令中的内存管理单元页表缓存是否命中;
向系统存储器提起读数据指令请求;
当所述内存管理单元页表缓存命中时,修改去向所述系统存储器的读数据指令请求的物理地址;
根据修改后的物理地址从所述系统存储器中读取数据。
6.如权利要求5所述的加载存储单元的实现方法,其特征在于,还包括:
当所述内存管理单元页表缓存未命中时,将所述读数据指令请求杀死,等待内存管理单元完成地址转译;
重新向所述系统存储器提起读数据指令请求;
修改去向所述系统存储器读数据指令请求的物理地址;
根据修改后的物理地址从所述系统存储器中读取数据。
7.一种加载存储单元的实现装置,其特征在于,所述装置包括存储器、处理器以及存储在所述存储器并可在所述处理器上运行的加载存储单元的实现程序,所述加载存储单元的实现程序被所述处理器执行时实现如权利要求1-6任一项所述的加载存储单元的实现方法的各个步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有加载存储单元的实现程序,所述加载存储单元的实现程序被处理器执行时实现如权利要求1-6任一项所述的加载存储单元的实现方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110145632.7A CN112463658B (zh) | 2021-02-03 | 2021-02-03 | 加载存储单元的实现方法、装置和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110145632.7A CN112463658B (zh) | 2021-02-03 | 2021-02-03 | 加载存储单元的实现方法、装置和计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463658A CN112463658A (zh) | 2021-03-09 |
CN112463658B true CN112463658B (zh) | 2021-05-28 |
Family
ID=74802218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110145632.7A Active CN112463658B (zh) | 2021-02-03 | 2021-02-03 | 加载存储单元的实现方法、装置和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463658B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870625A (en) * | 1995-12-11 | 1999-02-09 | Industrial Technology Research Institute | Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command |
CN1851673A (zh) * | 2005-12-13 | 2006-10-25 | 华为技术有限公司 | 处理器系统及其数据操作方法 |
CN108536473A (zh) * | 2017-03-03 | 2018-09-14 | 华为技术有限公司 | 读取数据的方法和装置 |
CN110275841A (zh) * | 2019-06-20 | 2019-09-24 | 上海燧原智能科技有限公司 | 访问请求处理方法、装置、计算机设备和存储介质 |
CN111736900A (zh) * | 2020-08-17 | 2020-10-02 | 广东省新一代通信与网络创新研究院 | 一种并行双通道的cache设计方法和装置 |
-
2021
- 2021-02-03 CN CN202110145632.7A patent/CN112463658B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870625A (en) * | 1995-12-11 | 1999-02-09 | Industrial Technology Research Institute | Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command |
CN1851673A (zh) * | 2005-12-13 | 2006-10-25 | 华为技术有限公司 | 处理器系统及其数据操作方法 |
CN108536473A (zh) * | 2017-03-03 | 2018-09-14 | 华为技术有限公司 | 读取数据的方法和装置 |
CN110275841A (zh) * | 2019-06-20 | 2019-09-24 | 上海燧原智能科技有限公司 | 访问请求处理方法、装置、计算机设备和存储介质 |
CN111736900A (zh) * | 2020-08-17 | 2020-10-02 | 广东省新一代通信与网络创新研究院 | 一种并行双通道的cache设计方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112463658A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11237728B2 (en) | Method for accessing extended memory, device, and system | |
KR102612155B1 (ko) | 어드레스 변환 요구의 처리 | |
US7188217B2 (en) | Embedded DRAM cache memory and method having reduced latency | |
US8473717B2 (en) | Coprocessor reset controller with queue for storing configuration information of subsequent sessions prior to completion of current session | |
US9262318B1 (en) | Serial flash XIP with caching mechanism for fast program execution in embedded systems | |
US9195621B2 (en) | System and method for assigning memory access transfers between communication channels | |
US20080065855A1 (en) | DMAC Address Translation Miss Handling Mechanism | |
KR20190059221A (ko) | 메모리 어드레스 변환 | |
CN112463658B (zh) | 加载存储单元的实现方法、装置和计算机存储介质 | |
US10223261B2 (en) | Lightweight architecture for aliased memory operations | |
US8850159B2 (en) | Method and system for latency optimized ATS usage | |
CN110941565B (zh) | 用于芯片存储访问的内存管理方法和装置 | |
KR20190087500A (ko) | 메모리 어드레스 변환 | |
US8244919B2 (en) | Data transfer apparatus, system and method using the same | |
US20140136796A1 (en) | Arithmetic processing device and method for controlling the same | |
US6615337B1 (en) | Method and apparatus for maintaining coherency in a translation lookaside buffer | |
JP4037806B2 (ja) | キャッシュメモリ装置 | |
JP7140972B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置の制御方法 | |
TW201800928A (zh) | 資料處理電路與資料處理方法 | |
JP2001142840A (ja) | Dmaコントローラ回路およびメモリ制御方法 | |
CN114116283A (zh) | 一种访问目标设备的方法、装置、计算设备及存储介质 | |
CN117234416A (zh) | 固态硬盘随机读性能提升实现方法、装置和计算机设备 | |
JP2021190002A (ja) | 情報処理装置及びプログラム | |
KR20190059220A (ko) | 복수의 데이터 유형을 위한 데이터 스토리지 | |
JP2008123389A (ja) | 半導体集積回路装置 |
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 |