CN117331485A - 存储器控制器、数据读取方法和电子设备 - Google Patents

存储器控制器、数据读取方法和电子设备 Download PDF

Info

Publication number
CN117331485A
CN117331485A CN202210731886.1A CN202210731886A CN117331485A CN 117331485 A CN117331485 A CN 117331485A CN 202210731886 A CN202210731886 A CN 202210731886A CN 117331485 A CN117331485 A CN 117331485A
Authority
CN
China
Prior art keywords
address
processor
data
memory
target
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
Application number
CN202210731886.1A
Other languages
English (en)
Inventor
罗志强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210731886.1A priority Critical patent/CN117331485A/zh
Publication of CN117331485A publication Critical patent/CN117331485A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例提供了一种存储器控制器、数据读取方法和电子设备,用于与处理器和存储器连接;该存储器控制器包括:判决器、数据预取器、第一缓存器。本申请实施例通过判决器对处理器是否在重复读取目标地址区域中存储的数据进行判断,并对处理器重复读取的目标地址区域中的目标数据存储至第一缓存器。当处理器再次读取该目标地址区域中存储的目标数据时,判决器即可直接从第一缓存器向处理器发送该目标数据。通过此种方式使得处理器的流水线不会因为地址回跳而中断的同时,还可以在处理器重复读取数据的时候,控制数据预取器停止读取目标地址区域之后的地址中存储的数据,进而达到了减少存储器的功率损耗的目的。

Description

存储器控制器、数据读取方法和电子设备
技术领域
本申请涉及数据存储技术领域,尤其涉及一种存储器控制器、数据读取方法和电子设备。
背景技术
处理器通过存储器控制器来访问数据,例如,处理器可以通过存储器控制器从存储器中读取数据。随着芯片制造工艺的提升,处理器的运行频率得到大幅提升,而存储器的运行频率却没有得到相应幅度的提升,造成处理器通过存储器控制器从存储器中读取数据时的效率降低。
一种改进方式是:在处理器向存储器控制器发送指示读取存储器中某一地址中的数据的读取命令时,存储器控制器通过提前读取该地址后面连续的多个地址的数据,以提高处理器通过存储器控制器从存储器中读取数据时的效率。同时存储器控制器还用于:在当前的读取命令所指示的地址,相对于上一个读取命令所指示的地址,发生跳转时,将当前的读取命令所指示的地址中存储的数据作为跳转数据进行存储,以备在处理器再次跳转到当前的读取命令所指示的地址时,将跳转数据直接发送给处理器,以提高处理器读取数据的效率。但是当处理器需要重复读取位于存储器中某目标地址区域中的所有数据时,若该目标地址区域过大,则在处理器发送的读取命令从指示该目标地址区域的末尾地址,跳转到指示该目标地址区域的首位地址时,存储器控制器事先存储的跳转数据,不足以完整提供处理器所需的该目标地址区域内的所有数据,则存储器控制器会反复从存储器中读取该目标地址区域的数据并发送给处理器,从而增加了存储器不必要的功率损耗。
发明内容
本申请实施例提供一种存储器控制器、数据读取方法和电子设备,减少了存储器的功率损耗。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请实施例提供了一种存储器控制器,用于与处理器和存储器连接;该存储器控制器包括:判决器、数据预取器、第一缓存器;判决器用于:如果确定处理器重复读取存储器中的目标地址区域中存储的目标数据,则在第一缓存器中查找目标数据;如果在第一缓存器中未查找到目标数据,则控制数据预取器将目标地址区域中存储的所有数据存储至第一缓存器,并将目标数据发送给处理器;如果在第一缓存器中查找到目标数据,则从第一缓存器中将目标数据发送给处理器。
本申请实施例通过判决器对处理器是否在重复读取目标地址区域中存储的数据进行判断,并对处理器重复读取的目标地址区域中的目标数据存储至第一缓存器。当处理器再次读取该目标地址区域中存储的目标数据时,判决器即可直接从第一缓存器向处理器发送该目标数据。通过此种方式使得处理器的流水线不会影响地址回跳而中断的同时,还可以在处理器重复读取数据的时候,控制数据预取器停止读取目标地址区域之后的地址中存储的数据,进而达到了减少存储器的功率损耗的目的。
在一种可能的实施方式中,存储器控制器还包括循环缓存器;判决器具体用于:依次接收来自处理器的第一读取命令和第二读取命令,第一读取命令用于指示读取存储器中第一地址中存储的数据,第二读取命令用于指示读取存储器中第二地址中存储的数据;第一地址大于第二地址;从循环缓存器中查找以下目标信息中的一种:第一地址和第二地址,或者,第一地址和地址偏移量,或者,第二地址和地址偏移量;其中,地址偏移量为第一地址与第二地址的差值;如果未查找到目标信息,则将目标信息存储至循环缓存器;如果查找到目标信息,则确定处理器重复读取从第二地址至第一地址所限定的目标地址区域中存储的目标数据。
本申请实施例通过设置循环缓存器对目标信息进行存储。在每次处理器跳转所需读取数据的地址时,通过计算相应的目标信息,并在循环缓存器中进行查找,若循环缓存器中存储有对应的目标信息,即可判断处理器是否在重复读取目标地址区域中存储的目标数据。
在一种可能的实施方式中,判决器还用于:计算目标信息对应的区域读取次数,并将区域读取次数存储至循环缓存器;区域读取次数为:处理器重复读取目标地址区域中存储的所有数据的总次数;当从循环缓存器中查找到目标信息时,根据已读取次数和区域读取次数,判断重复读取是否结束;已读取次数为处理器已重复读取存储器中存储的所有数据的次数;如果已读取次数小于区域读取次数,则确定重复读取结束,否则确定重复读取未结束。
本申请实施例通过设置已读取次数和区域读取次数来对处理器开始重复读取目标地址区域中的目标数据,以及,处理器停止重复读取目标地址区域中的目标数据进行判断,可以根据判断结果,控制数据预取器读取目标地址区域之后的地址中存储的数据。
在一种可能的实施方式中,判决器还用于:如果确定重复读取未结束,则控制数据预取器暂停读取存储器中的第三地址中存储的数据;第三地址为第一地址的下一地址;如果确定重复读取结束,则控制数据预取器读取存储器中的第三地址中存储的数据。
本申请实施例通过对处理器重复读取目标地址区域的状态进行判断,当进入重复读取目标地址区域中的目标地址的状态时,即可控制数据预取器停止读取后续地址中存储的数据,从而降低存储器的功率损耗。当处理器结束重复读取目标地址区域中的目标数据时,即可控制数据预取器继续读取后续地址中存储的数据。
在一种可能的实施方式中,判决器包括第一寄存器;第一寄存器用于决定判决器是否执行以下操作:确定处理器重复读取存储器中的目标地址区域中存储的目标数据。本申请实施例通过第一寄存器来控制判决器是否进行确定处理器重复读取存储器中的目标地址区域中存储的目标数据的操作,从而增加本申请实施的灵活性。
在一种可能的实施方式中,判决器包括第二寄存器;第二寄存器用于确定从循环缓存器中查找的地址偏移量的最大值。本申请实施例通过第二寄存器设置地址偏移量的最大值。对于判决器检测到的超过该最大值的地址偏移量,不进行目标信息及目标数据的查找。
在一种可能的实施方式中,判决器包括第三寄存器;第三寄存器用于清除循环缓存器中存储的目标信息。本申请实施例通过第三寄存器对循环缓存器中存储的目标信息进行清楚,增加了方案实现的灵活性。
在一种可能的实施方式中,目标数据为指令。处理器通常在执行指令时,会遇到循环执行某一段指令的情况,从而需要循环从存储器中读取对应的指令。
第二方面,本申请实施例提供了一种数据读取方法,基于存储器控制器;存储器控制器用于根据处理器的读取命令来读取存储器中存储的数据;存储器控制器包括:数据预取器、第一缓存器;该方法包括:如果确定处理器重复读取存储器中的目标地址区域中存储的目标数据,则在第一缓存器中查找目标数据;如果在第一缓存器中未查找到目标数据,则控制数据预取器将目标地址区域中存储的所有数据存储至第一缓存器,并将目标数据发送给处理器;如果在第一缓存器中查找到目标数据,则从第一缓存器中将目标数据发送给处理器。
在一种可能的实施方式中,存储器控制器还包括循环缓存器;该方法中,确定处理器重复读取存储器中的目标地址区域中存储的目标数据的操作包括:依次接收来自处理器的第一读取命令和第二读取命令,第一读取命令用于指示读取存储器中第一地址中存储的数据,第二读取命令用于指示读取存储器中第二地址中存储的数据;第一地址大于第二地址;从循环缓存器中查找以下目标信息中的一种:第一地址和第二地址,或者,第一地址和地址偏移量,或者,第二地址和地址偏移量;其中,地址偏移量为第一地址与第二地址的差值;如果未查找到目标信息,则将目标信息存储至循环缓存器;如果查找到目标信息,则确定处理器重复读取从第二地址至第一地址所限定的目标地址区域中存储的目标数据。
在一种可能的实施方式中,该方法具体还包括:计算目标信息对应的区域读取次数,并将区域读取次数存储至循环缓存器;区域读取次数为:处理器重复读取目标地址区域中存储的所有数据的总次数;当从循环缓存器中查找到目标信息时,根据已读取次数和区域读取次数,判断重复读取是否结束;已读取次数为处理器已重复读取存储器中存储的所有数据的次数;如果已读取次数小于区域读取次数,则确定重复读取结束,否则确定重复读取未结束。
在一种可能的实施方式中,该方法还包括:如果确定重复读取未结束,则控制数据预取器暂停读取存储器中的第三地址中存储的数据;第三地址为第一地址的下一地址;如果确定重复读取结束,则控制数据预取器读取存储器中的第三地址中存储的数据。
在一种可能的实施方式中,存储器控制器还包括第一寄存器;该方法还包括:第一寄存器决定是否执行以下操作:确定处理器重复读取存储器中的目标地址区域中存储的目标数据。
在一种可能的实施方式中,存储器控制器还包括第二寄存器;该方法还包括:第二寄存器用于确定从循环缓存器中查找的地址偏移量的最大值。
在一种可能的实施方式中,存储器控制器还包括第三寄存器;该方法还包括:第三寄存器用于清除循环缓存器中存储的目标信息。
在一种可能的实施方式中,目标数据为指令。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括如上述第一方面的存储器控制器;存储器控制器用于根据处理器的命令来读取存储器中存储的数据,并发送给处理器。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质包括指令,当指令在如上述的电子设备上运行时,使得电子设备执行如上述第二方面的方法。
第五方面,本申请实施例还提供一种芯片系统。该芯片系统包括至少一个处理器和至少一个接口电路。至少一个处理器和至少一个接口电路可通过线路互联。处理器用于支持电子设备实现上述方法实施例中的各个功能或者步骤,至少一个接口电路可用于从其它装置(例如存储器)接收信号,或者,向其它装置(例如通信接口)发送信号。该芯片系统可以包括芯片,还可以包括其他分立器件。
第六方面,本申请实施例还提供一种包括指令的计算机程序产品,当指令在上述电子设备或芯片系统上运行时,使得该电子设备或芯片系统执行上述第二方面记载的方法。
关于第二方面、第三方面、第四方面、第五方面和第六方面的技术效果,具体参加第一方面的描述。
附图说明
图1为本申请实施例提供的一种处理器的流水线的示意图;
图2为本申请实施例提供的一种电子设备的结构示意图;
图3为本申请实施例提供的一种存储器控制器的结构示意图;
图4为本申请实施例提供的再一种存储器控制器的结构示意图;
图5为本申请实施例提供的又一种存储器控制器的结构示意图;
图6为本申请实施例提供的又一种存储器控制器的结构示意图;
图7为本申请实施例提供的又一种存储器控制器的结构示意图;
图8为本申请实施例提供的又一种存储器控制器的结构示意图;
图9为本申请实施例提供的又一种存储器控制器的结构示意图;
图10为本申请实施例提供的一种处理器的流水线工作示意图;
图11为本申请实施例提供的再一种处理器的流水线工作示意图;
图12为本申请实施例提供的又一种处理器的流水线工作示意图;
图13为本申请实施例提供的又一种处理器的流水线工作示意图;
图14为本申请实施例提供的又一种处理器的流水线工作示意图;
图15为本申请实施例提供的又一种处理器的流水线工作示意图;
图16为本申请实施例提供的又一种处理器的流水线工作示意图;
图17为本申请实施例提供的又一种处理器的流水线工作示意图;
图18为本申请实施例提供的一种目标地址区域的示例图;
图19为本申请实施例提供的一种数据读取方法的步骤示意图;
图20为本申请实施例提供的再一种数据读取方法的步骤示意图;
图21为本申请实施例提供的一种判决器的工作流程示意图;
图22为本申请实施例提供的再一种判决器的工作流程示意图;
图23为本申请实施例提供的又一种判决器的工作流程示意图;
图24为本申请实施例提供的一种芯片系统的结构示意图。
具体实施方式
需要说明的是,本申请实施例涉及的术语“第一”、“第二”等仅用于区分同一类型特征的目的,不能理解为用于指示相对重要性、数量、顺序等。
本申请实施例涉及的术语“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例涉及的术语“耦合”、“连接”应做广义理解,例如,可以指物理上的直接连接,也可以指通过电子器件实现的间接连接,例如通过电阻、电感、电容或其他电子器件实现的连接。
首先对本申请涉及的一些概念进行描述:
数据是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。数据可以是连续的值,比如声音、图像,称为模拟数据;也可以是离散的,如符号、文字,称为数字数据。在计算机系统中,数据以二进制信息单元0、1的形式表示。
存储器是用来存储程序和各种数据信息的记忆部件。存储器可分为主存储器(简称主存或内存)和辅助存储器(简称辅存或外存)两大类。和处理器直接交换信息的是主存。主存的工作方式是按存储单元的地址存放或读取各类信息,统称访问存储器。主存中汇集存储单元的载体称为存储体,存储体中每个单元能够存放一串二进制码表示的信息,该信息的总位数称为一个存储单元的字长。存储单元的地址与存储在其中的信息是一一对应的,地址只有一个,固定不变,而存储在其中的信息是可以更换的。指示每个存储单元的二进制编码称为地址码。寻找某个存储单元时,先要给出它的地址码。暂存这个地址码的寄存器叫存储器地址寄存器(Memory Address Register,MAR)。为可存放从主存的存储单元内取出的信息或准备存入某存储单元的信息,还要设置一个存储器数据寄存器(Memory DataRegister,MDR)。
处理器,是电子设备的主要器件之一,也是电子设备中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。处理器是电子设备中负责读取指令,对指令译码并执行指令的核心部件。处理器主要包括两个部分,即控制器、运算器,其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。
处理器的流水线(Pipeline)是指处理器在执行程序的时候将多条指令重叠进行操作的一种准并行处理技术。通俗的讲是将一个时序过程,分解成若干个子过程;每个过程都能有效的与其他子过程同时执行。这种方法旨在提高处理器处理效率,争取在一个时钟周期中完成一条指令。如图1所示,处理器的一个流水线包括同时进行的指令取指、指令译码、指令执行、数据访存和数据写回:指令取指是指将指令从存储器中读取出来的过程。指令译码是指将存储器中取出的指令进行翻译的过程。经过译码之后得到指令需要的操作数寄存器索引,可以使用此索引从通用寄存器组中将操作数读出。指令译码之后所需要进行的计算类型都已得知,并且已经从通用寄存器组中读取出了所需的操作数,那么接下来便进行指令执行。指令执行是指对指令进行真正运算的过程。譬如,如果指令是一条加法运算指令,则对操作数进行加法操作;如果是减法运算指令,则进行减法操作。在指令执行阶段的最常见部件为算术逻辑部件运算器(Arithmetic Logical Unit,ALU),作为实施具体运算的硬件功能单元。数据访存是由处理器向存储器发送数据访问指令,数据访问指令往往是指令集中最重要的指令类型之一,是指存储器通过访问指令将数据从存储器中读出,或者写入存储器的过程。数据写回是指将指令执行的结果写回通用寄存器组的过程。如果是普通运算指令,该结果值来自于指令执行阶段计算的结果;如果是存储器读指令,该结果来自于数据访存阶段从存储器中读取出来的数据。
处理器所处理的如图形、音频、指令、字符等等类型的数据都以二进制的形式进行表达,同时二进制的数据也可以转换为其他进制的数据在存储器中进行存储。除此以外,对于存储器中用于存储不同数据的地址,也可以采用不同的进制进行地址码排序。当处理器需要从存储器中读取某一所需的数据时,只需要发送读取访问对应地址码的地址的相关指令,即可读取到该地址中存储的数据。
存储器的存储空间划分为多个存储块,每个存储块划分为多个连续的地址,每个地址用于存储一个字节的数据。因为一个数据的大小(例如单字、双字)不同,一个数据占据的地址的数目也不同。本申请中将存储相邻两个数据的地址称为连续的地址。例如,当一个数据为一个字节时仅占用一个地址,相邻的两个地址即可以存储相邻的两个数据,所以相邻的这两个地址即称为连续的地址。再例如,当一个数据为四个字节时需要占用四个连续的地址(例如0x00-0x03),为便于描述,本申请中将这四个地址中的首个地址(例如0x00)代表该数据的地址,假设第一个数据存储在0x00地址-0x03地址,第二个数据存储在0x04地址-0x07地址,则0x00地址与0x04称为连续的地址。
进位制/位置计数法是一种记数方式,故亦称进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数或底数,基数为n,即可称n进位制,简称n进制。现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8),用十六进制表示为39(16),它们所代表的数值都是一样的。需要说明的是,在非十进制的数值表达形式中,在前的数字为对应进制下的表达,在后括号中的数字为其在十进制表达下对应的数值。
一个数值虽然以不同的进制来进行表达,但其在数值上代表的含义仍然是一致的。如以下表1所示,给出部分数值在二进制、八进制、十进制和十六进制下分别对应的表达举例:
表1不同进制下数值表达示例表
下面结合图2介绍一种电子设备。
电子设备1包括处理器100、存储器控制器200和存储器300。处理器100通过存储器控制器200来读取存储器300中存储的数据。
示例性地,电子设备1可以为手机、智能手环、音频播放器、视频播放器、电脑、相机、录音机、手持检测装置等设备。
随着芯片工艺的提升,处理器100的运行频率大幅提升,而存储器300的运行频率却没有得到相应幅度的提升。为了避免处理器100因迁就存储器300较低的运行频率而降低自身读取数据的工作效率,通常的处理方式为通过拓宽存储器300的位宽的方式来增加存储器300的带宽,使得存储器300的带宽和处理器100的带宽相匹配,从而提升处理器100的工作效率。
如图2所示,存储器控制器200,作为处理器100与存储器300的中间桥梁,主要作用就是将来处理器100发送的命令转发到存储器300,处理器100发送的命令包括数据读取的指令、编程的指令和擦除时序的指令等。同时存储器控制器200还需要匹配处理器100和存储器300之间的运行频率等的差异。在工作过程中,处理器100向存储器控制器200发送读取某一地址中存储的数据的命令;而存储器控制器200从存储器300中读取该地址中存储的数据时,还将该地址所在的存储块中存储的数据都存储到存储器控制器200中,以备处理器100后续可能需要。
具体的工作流程为:当处理器100通过存储器控制器200读取位于存储器300中某一地址中存储的数据时,处理器100向存储器控制器200发送读取存储器300某一地址中存储的数据的请求,存储器控制器200根据处理器100发送的命令对该地址所在的存储块中存储的数据进行读取,此时处理器100的流水线中因没有读取到数据而暂停。当存储器控制器200读取某一地址中存储的数据并发送给处理器100后,处理器100继续运行,并向存储器控制器200发送读取下一地址中存储的数据的请求。处理器100的流水线包括五个同时运行的线程,分别为指令取指、指令译码、指令执行、数据访存和数据写回;这五个线程中,在指令取指阶段中,处理器100读取位于存储器300中的指令;在数据访存阶段中,处理器100读取位于存储器300中存储的数据。而指令取指阶段中读取的指令和数据访存阶段中读取的数据都为本申请所保护的数据,本申请可应用于指令取指阶段,以提高处理器100读取存储器300中存储的指令的效率,同样也可以应用于数据访存阶段,以提高处理器100读取存储器300中存储的数据的效率。
示例性地,以处理器100的运行频率为200MHz、位宽为32位(bit),存储器300的运行频率为50MHz、位宽为128位(bit)为例,两者带宽一致,存储器300中的地址以十六进制的形式进行表达,处理器100通过存储器控制器200读取存储在存储器300中的指令,一个指令占据存储器300四个地址。处理器100的流水线如图10所示,图中第一列表示处理器100的流水线中指令取指阶段的运行过程,图中第二列表示存储器控制器200向存储器300发送的读取命令的运行过程,图中第三列表示存储器控制器200向处理器100发送指令的运行过程。如图10所示,处理器100向存储器控制器200发送请求,以请求读取0x40地址中存储的指令。因为存储器300中根据存储空间划分为多个存储块,每个存储块中包括多个地址,每次处理器100读取某一地址中存储的数据时,都需要将该地址所在的存储块中存储的所有数据进行读取,然后才选出具体需要读取的地址中的数据;所以存储器控制器200需要从存储器300依次读取0x40-0x4F这一个缓存块中存储的指令,具体为0x40地址、0x44地址、0x48地址、0x4C地址中存储的四个指令;在存储器控制器200读取这四个地址中存储的指令时,处理器100的流水线,从给存储器控制器200发送请求以读取0x40地址中存储的数据时开始,到接收到0x40地址中存储的数据为止,会在指令取指阶段暂停四拍。当存储器控制器200返回0x40地址中存储的指令给处理器100后,处理器100继续运行。因为在本示例中处理器100按地址码递增顺序来读取指令,处理器100后续依次发送请求,以请求读取0x44地址、0x48地址、0x4C地址中存储的指令;所以存储器控制器200依次将读取到的0x44地址、0x48地址、0x4C地址中存储的指令发送给处理器100,此时处理器100的运行不中断,但当处理器100向存储器控制器200发送读取0x50地址中存储的指令的请求时,因为存储器控制器200中并没有存储有对应的指令,需要等待存储器控制器200从存储器300中依次读取指令,读取的指令具体为存储在0x50地址、0x54地址、0x58地址、0x5C地址中的指令,然后再将0x50地址中存储的指令发送给处理器100,此时处理器100的流水线的指令取指阶段又将暂停四拍。
一种改进方式如图3所示,在存储器控制器200中设置数据预取器210和缓存器220,通过处理器100发送请求给数据预取器210,以读取存储器300的某一地址中存储的指令;数据预取器210向存储器300发送读取指令的命令,并通过存储器300将读取到的指令传输到缓存器220中,由缓存器220向处理器100发送读取到的指令;在处理器100接收指令的时候,由数据预取器210预先向存储器300发送读取命令,以读取后续的连续的地址中存储的指令;并将从存储器300读取到的指令发送给缓存器220中进行存储,当处理器100继续发送请求以读取后续的连续的地址中存储的指令时,由缓存器220将预先存储的数据发送给处理器100。
示例性地,以处理器100的运行频率为200MHz、位宽为32位(bit),存储器300的运行频率为50MHz、位宽为128为(bit)为例,两者带宽一致。存储器300中的地址以十六进制的形式进行表达,需要读取的数据为指令,一个指令占据存储器300四个地址。处理器100的流水线如图11所示,图中第一列表示处理器100的流水线中指令取指阶段的运行过程,图中第二列表示数据预取器210发送的读取命令的运行过程,图中第三列表示存储器控制器200向处理器100发送指令的运行过程。如图11所示,处理器100向数据预取器210发出读取0x40地址中存储的指令的请求,数据预取器210依次读取0x40地址、0x44地址、0x48地址、0x4C地址中存储的指令并存储到缓存器220中,由缓存器220将0x40地址中存储的指令发送给处理器100。因为在本示例中处理器100按地址递增顺序读取指令,处理器100后续依次发送了读取数据的请求,以读取0x44地址、0x48地址、0x4C地址中存储的指令;所以缓存器220依次将0x44地址、0x48地址、0x4C地址中存储的指令发送给处理器100,此时处理器100的流水线运行不中断。而在缓存器220开始存储0x40地址、0x44地址、0x48地址、0x4C地址中存储的指令时,数据预取器210开始预先读取后续的连续的地址中存储的指令,即0x50地址-0x5F地址这一段的指令,具体为0x50地址、0x54地址、0x58地址、0x5C地址中存储的指令。当处理器100从缓存器220接收完0x4C地址中存储的指令时,缓存器220已经存储了0x50地址、0x54地址、0x58地址、0x5C地址中存储的指令;此时处理器100向数据预取器210发送请求以读取0x50地址中存储的指令,因为缓存器220已经存储了处理器100此时所需的指令,可直接将0x50地址中存储的指令发送给处理器100。因此,处理器100的流水线不会暂停。
通过上述设置数据预取器210和缓存器220的实施方式可以提高处理器100读取数据时的效率,但在处理器100每次访问的地址与上次访问的地址是连续的地址时,处理器100的流水线才能尽可能地保持连贯。而在实际中,处理器100在读取地址中的数据时,常常因为各种指令等产生访问的地址的跳转。此时处理器100需要读取的数据在存储器300中所处的地址,与上一次读取的数据在存储器300中所处的地址,为不连续的地址;那么数据预取器210预先读取的数据中不包括处理器100当前实际需要读取的数据。此时数据预取器210需要向存储器300发送指令,以读取当前实际需要的数据,并存储到缓存器220;然后经由缓存器220发送给处理器100。在这个过程中,处理器100的流水线暂停,直到缓存器220发送了数据后,才能继续运行。
示例性地,以处理器100的运行频率为200MHz、位宽为32位(bit),存储器300的运行频率为50MHz、位宽为128为(bit)为例,两者带宽一致。存储器300中的地址以十六进制的形式进行表达,需要读取的数据为指令,一个指令占据存储器300四个地址。处理器100的流水线如图12所示,图中第一列表示处理器100的流水线中指令取指阶段的运行过程,图中第二列表示数据预取器210发送的读取命令的运行过程,图中第三列表示存储器控制器200向处理器100发送指令的运行过程。如图12所示,处理器100向数据预取器210发送请求,以读取0x54地址中存储的指令,此时数据预取器210在读取0x60地址中存储的指令,由缓存器220向处理器100发送0x50地址中存储的指令。但处理器100下一个需要读取的指令对应的地址跳转到了0x98地址,0x98地址与0x50地址为不连续的地址;且数据预取器210也没有预先发送读取0x98地址中存储的数据的命令给存储器300。故而,此时处理器100需要等待数据预取器210先发送完命令,以读取0x64地址、0x68地址和0x6C地址中存储的指令,再等待数据预取器210发送命令,以读取0x90地址、0x94地址、0x98地址和0x9C地址中存储的指令。当缓存器220接收完毕0x90地址、0x94地址、0x98地址和0x9C地址中存储的指令后,再将0x98地址中存储的数据发送给处理器100。处理器100从发送读取0x98地址中存储的数据的指令开始到实际接收到0x98地址中存储的数据的指令为止,需要等待七拍。
一种改进方式如图4所示,在存储器控制器200中设置判决器230,缓存器220包括第二缓存器221和第一缓存器222,采用数据预取器210向存储器300发送读取位于存储器300中的数据的指令。
由判决器230判断第二地址与第一地址为连续的地址还是不连续的地址。将读取到的与第一地址连续的地址中存储的数据存储到第二缓存器221中,将读取到的与第一地址不连续的地址中存储的数据存储到第一缓存器222中。第二地址为处理器100当前需要读取的数据位于存储器300中的地址;第一地址为处理器100上一次读取的数据位于存储器300中的地址。
示例性地,存储器300中的地址以十六进制的形式进行表达,需要读取的数据为指令,一个指令占据存储器300四个地址。处理器100的流水线如图13所示,图中第一列表示处理器100的流水线中指令取指阶段的运行过程,图中第二列表示数据预取器210发送的读取命令的运行过程,图中第三列表示存储器控制器200向处理器100发送指令的运行过程。如图13所示,当第二地址为0x4C地址时,数据预取器210正在向存储器300发送命令以读取0x58地址中存储的指令,而第二缓存器221正在向处理器100发送0x48地址中存储的指令。而当第二地址从0x4C地址跳转为0x90地址时,数据预取器210正在向处理器100发送命令以读取0x5C地址中存储的指令,第二缓存器221正在向处理器100发送0x4C地址中存储的指令。此时第二缓存器221和第一缓存器222中都没有存储有当前第二地址(即0x90地址)中存储的指令,处理器100的流水线的指令取指阶段处于暂停的状态。等到第二缓存器221接收到0x5C地址中存储的指令后,数据预取器210才开始向存储器300发送命令以读取0x90地址中存储的指令。因为当前的第二地址为0x90地址,第一地址为0x4C地址,两者为不连续的地址,故将0x90地址中存储的指令存储到第一缓存器222中。当数据预取器210读取到0x9C地址中存储的指令后,存储到第一缓存器222中,并由第一缓存器222将0x90地址中存储的指令发送给处理器100,此时处理器100的流水线恢复工作。在后续的运行中,当第一地址为0xB0地址,第二地址为0x90地址时,因为0xB0地址与0x90地址为不连续的地址,此时数据预取器210还没有开始发送命令以读取0x90地址中存储的指令,第二缓存器221中也并未存储有0x90地址中存储的指令,第二缓存器221无法立即向处理器100提供0x90地址中存储的指令,但由于在第一缓存器222中存储有0x90地址中存储的指令,于是可以通过第一缓存器222向处理器100发送0x90地址中存储的指令,从而避免处理器100的流水线暂停的情况发生。
通过上述关于图4所示的存储器控制器200的实施方式,可以提高处理器100从存储器300中读取数据的效率。但其依旧会出现第一缓存器222存储的数据的数量不足,数据预取器210没有充足的时间去发送读取命令,从而导致存储器控制器200无法按时向处理器100发送数据的情况。
示例性地,以处理器100的运行频率为200MHz、位宽为32位(bit),存储器300的运行频率为50MHz、位宽为128为(bit)为例,两者带宽一致。存储器300中的地址以十六进制的形式进行表达,需要读取的数据为指令,一个指令占据存储器300四个地址。处理器100的流水线如图14所示,图中第一列表示处理器100的流水线中指令取指阶段的运行过程,图中第二列表示数据预取器210发送的读取命令的运行过程,图中第三列表示存储器控制器200向处理器100发送指令的运行过程。如图14所示,当第一地址为0xC4地址,第二地址为0x9C地址时,第二地址与第一地址为不连续的地址;假设第一缓存器222中已经存储有0x90地址、0x94地址、0x98地址、0x9C地址中存储的指令以及0xA0地址、0xA4地址、0xA8地址、0xAC地址中存储的指令,此时数据预取器210正在向存储器300发送命令以读取0xD4中存储的指令,第二缓存器221在向处理器100发送0xC4地址中存储的指令;当第二地址变为0xA0地址后,数据预取器210正在向存储器300发送命令以读取0xD8地址中存储的指令,第一缓存器222正在向处理器100发送0x9C地址中存储的指令。当第二地址变为0xB4地址时,第一缓存器222已经发送完毕指令,而数据预取器210还在发送命令以读取0xBC地址中存储的指令,此时第二缓存器221和第一缓存器222都无指令可以发送给处理器100,处理器100的流水线在指令取指阶段暂停。
因此,虽然设置了数据预取器210、判决器230、第二缓存器221和第一缓存器222,使得处理器100的读取存储器300中数据的效率大大的提升,但仍然存在未将处理器100的读取数据的效率最大化的情况。同时以上示例都是基于处理器100的带宽与存储器300的带宽是一致的情况,但当处理器100的带宽与存储器300的带宽不一致时,尤其是处理器100的带宽大于存储器300的带宽时,处理器100的流水线出现暂停的概率会更大。
一种改进方式如图5所示,本申请实施例提供了另一种存储器控制器200,存储器控制器200包括数据预取器210、预取缓存器、判决器230、拾取缓存器240。
判决器230用于接收处理器100发送的读取第二地址中存储的数据的请求,并将请求发送到数据预取器210。第二地址为处理器100当前需要读取的数据位于存储器300中的地址。
数据预取器210用于根据接收到的请求向存储器300发送命令,以读取第二地址及第二地址后连续的多个地址中存储的指令。
预取缓存器接收存储器300发送的第二地址及第二地址后连续的多个地址中存储的数据,并将第二地址中存储的数据发送给处理器100。
拾取缓存器240用于存储在预取缓存器中查找不到的数据,在预取缓存器中查找不到的数据具体是指:当处理器100需要读取第二地址中存储的数据,而此时数据预取器210尚未按时读取到该第二地址中存储的数据并存储到预取缓存器中,则将该第二地址中存储的数据作为在预取缓存器中查找不到的数据。当处理器100后续的运行中,又向判决器230发送了读取该第二地址中存储的数据的请求时,如果在预取缓存器中查找不到对应的数据,则将拾取缓存器240中存储的该第二地址中存储的数据发送给处理器100。
示例性地,如图15所示,当处理器100读取0xB4地址中存储的指令时,由第二缓存器221提供,紧接着,处理器100跳转到读取0x9C地址中存储的指令,此时,假设第一缓存器222中已事先存储有0x9C地址中存储的指令,可由第一缓存器222直接发送给处理器100,处理器100的流水线不暂停。但当处理器开始读取0xB0地址中存储的指令时,依旧因为数据预取器210未及时返回0xB0地址到0xBC地址中存储的指令,而造成流水线暂停一拍。而在处理器100再次从0xB4地址跳转到0x9C地址时,同样的暂停情况又会再次发生一次。综上,可知当处理器100循环读取0x9C地址到0xB4地址中存储的指令的时候,处理器100的流水线会重复出现暂停一拍的情况。除此以外,在处理器100循环读取0x9C地址到0xB4地址中存储的指令的时候,数据预取器210也会重复读取0xC0地址到0xCC地址中存储的指令,而这部分指令是处理器100不需要的,重复读取0xC0地址到0xCC地址这一区域中存储的指令也增加了存储器300的功率损耗。
本申请通过图5所示的存储器控制器200,将处理器100流水线暂停时正在读取的数据所对应的地址中存储的数据存储在拾取缓存器240中。在后续的工作流程中,每当将要出现处理器100的流水线要暂停的情况时,只需要从拾取缓存器240中取出处理器100需要读取的数据。需要注意的是,上述示例中仅为处理器100的带宽大于存储器300的带宽的情况实施例,但在处理器100的带宽等于或小于存储器300的带宽时,也会存在处理器100的流水线暂停的问题,此时拾取缓存器240同样起到上述作用。
在一些实施方式中,如图5所示,预取缓存器包括第二缓存器221和第一缓存器222;判决器230用于:判断第二地址和第一地址为连续的地址还是不连续的地址;第二地址为处理器100当前需要读取的数据位于存储器300中的地址;第一地址为处理器100上一次读取的数据位于存储器300中的地址;指示数据预取器210向存储器300发送读取数据的命令;分别向第二缓存器221、第一缓存器222和拾取缓存器240发送查找指令,以从第二缓存器221、第一缓存器222和拾取缓存器240中查找是否存储有处理器100需要读取的数据。
数据预取器210用于接收判决器230的指示,并根据接收到的指示向存储器300发送命令,以预先读取第二地址后连续的多个地址中存储的数据。第二缓存器221用于存储从存储器300中读取的第一数据;第一数据包括:与第一地址之间为连续的地址的第二地址中存储的数据,以及该第二地址后续的连续的多个地址中存储的数据。第一缓存器222用于存储从存储器300中读取的第二数据;第二数据包括:与第一地址为不连续的地址的第二地址中存储的数据。拾取缓存器240用于存储第三数据;第三数据包括:判决器230在第二缓存器221和第一缓存器222中都查找不到的第二地址中存储的数据。
本申请实施例基于图5所示的存储器控制器200中,以存储器300中的地址以十六进制的形式进行表达,需要读取的数据为指令,一个指令占据存储器300四个地址为例。处理器100的流水线如图16所示,图中第一列表示处理器100的流水线中指令取指阶段的运行过程,图中第二列表示数据预取器210发送的读取命令的运行过程,图中第三列表示存储器控制器200向处理器100发送指令的运行过程。当处理器100需要从0x40地址开始读取存储的指令时,需要等待数据预取器210从存储器300中预先读取0x40地址到0x4C地址中存储的指令并存储到第二缓存器221中,然后再将0x40地址中存储的指令发送给处理器100。而当处理器100读取完0x4C地址中存储的指令后,跳转到需要读取0x9C地址处存储的指令时,假设第一缓存器222已经事先存储有0x90地址到0xAC地址中存储的指令,则由第一缓存器222直接向处理器提供0x9C地址到0xAC地址中存储的指令,此时数据预取器210仍在读取0x50地址到0x5C地址中存储的指令,然后才能读取0xB0地址到0xBC地址中存储的指令。故在第一缓存器222提供完0xAC地址中存储的指令后,处理器100的流水线还需要暂停一拍,等待数据预取器210读取完0xBC地址中存储的指令后,才能提供0xB0地址中存储的数据给处理器100。判决器230将导致流水线暂停一拍的0xB0地址存储到拾取缓存器240中,等到处理器100读取完0xBC地址中存储的指令后,再次跳转回开始读取0x9C地址中存储的指令,数据预取器210在读取0xC0地址中存储的指令而未读取0x90地址到0x9C地址中存储的指令,但通过第一缓存器222和拾取缓存器240可保证处理器100的流水线不会暂停。如上述图16所示的实施例可知,以第一缓存器222、第二缓存器221和拾取缓存器240共同作用虽然可以保证处理器100的流水线不暂停。但在处理器100循环读取0x9C地址到0xBC地址中存储的指令时,数据预取器210也会在处理器100每一次循环读取完0xBC地址中存储的指令后,自动开始读取0xC0地址到0xCC地址中存储的指令,而这部分指令是处理器100当前不需要的。且随着0x9C地址到0xBC地址中存储的指令被处理器100循环读取的次数越多,数据预取器210读取0xC0地址到0xCC地址中存储的指令的次数也会随之增加。而处理器100循环读取存储器300中的数据(尤其是指令)的情况在实际应用中是非常常见的。故数据预取器210重复从存储器300中读取处理器100不需要的数据(如指令)的操作会大大增加存储器300不必要的功耗。
为此,如图6所示,本申请实施例提供了一种存储器控制器200,该存储器控制器200包括数据预取器210、第一缓存器222、第二缓存器221。判决器230。判决器230用于:如果确定处理器100重复读取存储器300中的目标地址区域中存储的目标数据,则在第一缓存器222中查找目标数据;如果在第一缓存器222中未查找到目标数据,则控制数据预取器210将目标地址区域中存储的所有数据存储至第一缓存器222,并将目标数据发送给处理器100;如果在第一缓存器222中查找到目标数据,则从第一缓存器222中将目标数据发送给处理器100。
本申请实施例通过判决器230对处理器100当前是否在重复读取某一地址区域中的数据进行判断。如果判断为处理器100当前正在重复读取存储器300中的目标地址区域中存储的目标数据,则将该目标地址区域中存储的所有数据存储至第一缓存器222中,并通过第一缓存器222直接提供该目标地址区域中的目标数据给处理器100,而不指示数据预取器210继续读取该目标地址区域中存储的目标数据,从而降低存储器300的功耗。
上述如图6所示的存储器控制器200可用于执行以下如图19所示的步骤S110-步骤S130的数据读取方法:
步骤S110、判决器230判断处理器100是否重复读取存储器300中的目标地址区域中存储的目标数据。
在一些可能的实施方式中,如图6所示,存储器控制器200还包括循环缓存器223。
示例性地,判决器230用于:依次接收来自处理器100的第一读取命令和第二读取命令,第一读取命令用于指示读取存储器300中第一地址中存储的数据;第二读取命令用于指示读取存储器中第二地址中存储的数据;其中第一地址为处理器100上一个需要读取的数据位于存储器300中的存储地址;第二地址为处理器100当前需要读取的数据位于存储器300中的地址。
步骤S110的具体操作包括以下如图20所示的步骤S111-步骤S113:
步骤S111、判断第一地址与第二地址的大小。
步骤S112、如果第一地址大于第二地址,在循环缓存器223中查找目标信息;该目标信息包括以下信息中的一种:第一地址和第二地址,或者,第一地址和地址偏移量,或者,第二地址和地址偏移量;其中,地址偏移量为第一地址与第二地址的差值。
示例性地,如图18所示,如果第一地址大于第二地址,则证明处理器100从读取第一地址中存储的数据调整到读取第二地址中存储的数据的行为为地址回跳。当判决器230判断处理器100为跳转回跳时,需要将目标信息存储至循环缓存器223。
步骤S113、如果在循环缓存器223中未查找到目标信息,则将目标信息存储至循环缓存器223;如果查找到目标信息,则确定处理器100重复读取从第二地址至第一地址所限定的目标地址区域中存储的目标数据。
示例性地,当判决器230从循环缓存器223中查找不到对应的目标信息时,证明处理器100从第一地址回跳到第二地址进行数据读取的操作为初次出现;对于初次出现的回跳操作,将对应的目标信息存储到循环缓存器223中。对于上述的目标信息,可选其中任意一种进行存储,即可对地址回跳的起始位置、终止位置及回跳的存储区域范围进行确定。对于在循环缓存器223中可以找到目标信息的,证明处理器100从第一地址回跳到第二地址进行数据读取的操作出现至少两次。对于第二次出现的回跳操作,判决器230即可判断为处理器100在重复读取存储器300中的目标地址区域中存储的目标数据。
步骤S120、判决器230查找第一缓存器222中是否存储有目标地址区域中存储的目标数据。
示例性地,对于第二次出现的回跳操作,判决器230即可判断处理器100在重复读取存储器300中的目标地址区域中存储的目标数据。此时判决器230将目标地址区域中存储的所有数据都存储到第一缓存器222中,当第三次及第三次以上出现回跳操作时,判决器230在循环缓存器223中查找到对应的目标信息,然后可从第一缓存器222中直接寻找到目标数据。
步骤S130、判决器230将查找到的目标数据发送给处理器100。
在一些可能的实施方式中,循环缓存器223中还设置有已读取次数和区域读取次数。
示例性地,当处理器100第二次进行回跳操作时,判决器230将在将目标信息与已读取次数和区域读取次数对应存储到循环缓存器223。其中,已读取次数为:处理器已重复读取存储器中存储的所有数据的次数;区域读取次数为:处理器重复读取目标地址区域中存储的所有数据的总次数。此时,已读取次数为2,并将已读取次数赋值给区域读取次数。当处理器100完成重复读取目标地址区域中的目标数据,并开始读第三地址中存储的数据时,此时已读取次数为N次,将已读取次数N赋值给区域读取次数后,将已读取次数清零。该第三地址为第一地址之后的存储地址。以第二地址和地址偏移量作为目标信息为例,关于图18所示的目标地址区域,循环缓存器223中存储的数据建立表格可如下表2所示:
表2循环缓存器中存储数据表
编号 第一地址 地址偏移量 区域读取次数 已读取次数
1 0x9C 0x18 10 8
当后续处理器100再次开始重复读取该目标地址区域中的目标地址时,区域读取次数为N,已读取次数从0开始根据处理器100重复读取目标地址的次数逐次递增。在已读取次数小于区域读取次数的时候,代表处理器100还处于重复读取目标地址区域的目标地址的状态。当已读取次数等于区域读取次数时,代表处理器100完成重复读取目标地址区域的目标地址的过程,开始继续读取第三地址中存储的数据。
在一种可能的实施方式中,判决器230包括第一寄存器;第一寄存器用于决定判决器230是否执行以下操作:确定处理器100重复读取存储器300中的目标地址区域中存储的目标数据。
本申请实施例通过第一寄存器来控制判决器230是否进行确定处理器100重复读取存储器300中的目标地址区域中存储的目标数据的操作,从而增加本申请实施的灵活性。
在一种可能的实施方式中,判决器230包括第二寄存器;第二寄存器用于确定从循环缓存器223中查找的地址偏移量的最大值。
本申请实施例通过第二寄存器设置地址偏移量的最大值。对于判决器230检测到的超过该最大值的地址偏移量,不进行目标信息及目标数据的查找。
在一种可能的实施方式中,判决器230包括第三寄存器;第三寄存器用于清除循环缓存器223中存储的目标信息。
本申请实施例通过第三寄存器对循环缓存器223中存储的目标信息进行清楚,增加了方案实现的灵活性。
示例性地,如图21所示,判决器230为循环缓存器223中的每一个目标信息都设置对应的状态信息Loop-detect。当判决器230后续每次在循环缓存器223中查找到对应的目标信息后,判断对应的状态信息Loop-detect。当处于重复读取目标地址区域中的目标数据时,将状态信息Loop-detect设置为高,在处理器100每次结束重复读取目标地址区域中的目标数据后,判决器230将状态信息Loop-detect设置为低。
示例性地,当处理器100在重复读取目标地址区域中的目标地址时,判决器230控制数据预取器210暂停读取存储器300中第三地址中存储的数据,从而降低存储器300的功耗。当处理器100结束重复读取目标地址区域中的目标地址时,控制数据预取器210读取存储器中的第三地址中存储的数据。
示例性地,如图17所示,在处理器100第一次读取0xB4地址中存储的数据后,回跳到读取0x9C地址中存储的数据,此时数据预取器210在读取0xD0地址到0xDC地址中存储的指令,但第一缓存器222中已存储有0x90地址到0xAC地址中存储的指令,可直接发送给处理器100,同时判决器230记录下从0xB4地址回跳到0x9C地址的目标信息,并存储到循环缓存器223中。当处理器100读取完0xAC地址中存储的指令,开始读取0xB0地址中存储的指令时,数据预取器210还在读取0xB0地址到0xBC地址这一段的指令,无法发送0xB0地址中存储的指令给处理器。处理器100的流水线暂停。当处理器100继续读取指令,并从0xB4地址再次回跳到0x9C地址时,再次由第一缓存器222提供0x9C地址到0xAC地址的指令。同时判决器230计算出本次回跳的目标信息,并在循环缓存器223中查找到已经有该目标信息,确定处理器100在重复读取0x9C地址到0xB4地址这一段目标地址区域中的指令,然后将0x9C地址到0xB4地址这一段目标地址区域中的指令存储到第一缓存器222中。当处理器100第三次从0xB4地址回跳到0x9C地址时,判决器230根据计算到的目标信息,从循环缓存器223中查找到相应的目标信息,然后在第一缓存器222中查找到0x9C地址到0xB4地址这一段目标地址区域中的指令,直接发送给处理器100。且在循环读取该目标地址区域的指令的过程中,控制数据预取器210不读取0xB4地址之后的地址中存储的指令。
本申请实施例通过判决器230对处理器100当前读取的第一地址和上一次读取的第二地址进行判断。首先,判断第一地址和第二地址之间是否为第二地址大于第一地址的连续地址。当判断为第一地址不是位于第二地址之后的连续地址时,计算第一地址和第二地址之间的地址偏移量,当第一地址大于第二地址时,即可确定处理器100从读取第二地址中存储的数据到读取第一地址中存储的数据的操作为回跳操作,此时将目标信息存储至循环缓存器223中。而当处理器100再次从需要读取第二地址中存储的数据跳转到需要读取第一地址中存储的数据时,计算两者之间的地址偏移量并生成目标信息;然后查询到循环缓存器223中已存储有对应的目标信息,此时即可判断为处理器100在重复读取由第一地址和第二地址确定的目标地址区域中的目标数据。然后将该目标地址区域中的目标数据存储至第一缓存器222。当判决器230后续再次判断为处理器100重复读取该目标地址区域中的目标数据时,即可直接从第一缓存器222中将目标数据发送给处理器100,并控制数据预取器210暂停读取处理器100不需要的数据,从而降低数据预取器210从存储器300中频繁读取处理器100不需要的数据所增加的功率损耗,同时减少了处理器100的流水线暂停的情况。
在一些可能的实施方式中,如图7所示,存储器控制器200中还设置有拾取缓存器240。
关于图7中设置的拾取缓存器240具体原理参考上述关于图5所示的存储器控制器200的描述,在此不再赘述。
示例性地,图6所示的存储器控制器200的工作流程如图22所示,图7所示的存储器控制器200的工作流程如图23所示。两者的区别在于,图7增加了拾取缓存器240后,当在第一缓存器222和第二缓存器221中都未查找到需要的数据时,还要在拾取缓存器240中查找一次,若拾取缓存器240中查找不到,再控制数据预取器210从存储器300中读取需要的数据。
示例性地,如图8和图9所示,存储器控制器200还包括选择器250。判决器230用于从第一缓存器222、第二缓存器221中选择一个缓存器,通过选择的缓存器向处理器100发送需要读取的数据。或者,判决器230用于从第一缓存器222、第二缓存器221和拾取缓存器240中选择一个缓存器,通过选择的缓存器向处理器100发送需要读取的数据。
本申请实施例在需要读取存储器300中不同的地址中存储的数据,存在可能从第一缓存器222中读取数据的情况,存在可能从第二缓存器221中读取数据的情况,也存在可能从拾取缓存器240中读取数据的情况。三者都可能发送数据给处理器100,通过选择器250分别接收发送来的数据,并由选择器250统一发送给处理器100。选择器250可以是多选一的传输芯片、多选一的选择开关、多通一的传输线等等。通过选择器250作为处理器100和存储器控制器200统一传输读取到的数据的通道,使得数据传输更合理也更清晰。
如图24所示,本申请实施例还提供一种芯片系统2。该芯片系统2包括至少一个处理器401和至少一个接口电路402。至少一个处理器401和至少一个接口电路402可通过线路互联。处理器401用于支持电子设备实现上述方法实施例中的各个功能或者步骤,至少一个接口电路402可用于从其它装置(例如存储器)接收信号,或者,向其它装置(例如通信接口)发送信号。该芯片系统可以包括芯片,还可以包括其他分立器件。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括指令,当指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中各个功能或者步骤,例如执行图19和图20所示的方法。
本申请实施例还提供一种包括指令的计算机程序产品,当指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中各个功能或者步骤,例如执行图19或20所示的方法。
关于芯片系统、计算机可读存储介质、计算机程序产品的技术效果参照前面方法实施例的技术效果。
本申请实施例涉及的处理器可以是一个芯片。例如,可以是现场可编程门阵列(field programmable gate array,FPGA),可以是专用集成芯片(application specificintegrated circuit,ASIC),还可以是系统芯片(system on chip,SoC),还可以是中央处理器(central processor unit,CPU),还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(microcontroller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)或其他集成芯片。
本申请实施例涉及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,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 data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DRRAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个设备,或者也可以分布到多个设备上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个设备中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个设备中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (18)

1.一种存储器控制器,用于与处理器和存储器连接,其特征在于,所述存储器控制器包括:判决器、数据预取器、第一缓存器;所述判决器用于:
如果确定所述处理器重复读取所述存储器中的目标地址区域中存储的目标数据,则在所述第一缓存器中查找所述目标数据;
如果在所述第一缓存器中未查找到所述目标数据,则控制所述数据预取器将所述目标地址区域中存储的所有数据存储至所述第一缓存器,并将所述目标数据发送给所述处理器;
如果在所述第一缓存器中查找到所述目标数据,则从所述第一缓存器中将所述目标数据发送给所述处理器。
2.根据权利要求1所述的存储器控制器,其特征在于,所述存储器控制器还包括循环缓存器;所述判决器具体用于:
依次接收来自所述处理器的第一读取命令和第二读取命令,所述第一读取命令用于指示读取所述存储器中第一地址中存储的数据,所述第二读取命令用于指示读取所述存储器中第二地址中存储的数据;所述第一地址大于所述第二地址;
从所述循环缓存器中查找以下目标信息中的一种:所述第一地址和所述第二地址,或者,所述第一地址和地址偏移量,或者,所述第二地址和所述地址偏移量;其中,所述地址偏移量为所述第一地址与所述第二地址的差值;
如果未查找到所述目标信息,则将所述目标信息存储至所述循环缓存器;
如果查找到所述目标信息,则确定所述处理器重复读取从所述第二地址至所述第一地址所限定的所述目标地址区域中存储的目标数据。
3.根据权利要求2所述的存储器控制器,其特征在于,所述判决器还用于:
计算所述目标信息对应的区域读取次数,并将所述区域读取次数存储至所述循环缓存器;所述区域读取次数为:所述处理器重复读取所述目标地址区域中存储的所有数据的总次数;
当从所述循环缓存器中查找到所述目标信息时,根据已读取次数和所述区域读取次数,判断重复读取是否结束;所述已读取次数为所述处理器已重复读取所述存储器中存储的所有数据的次数;
如果所述已读取次数小于所述区域读取次数,则确定重复读取结束,否则确定重复读取未结束。
4.根据权利要求3所述的存储器控制器,其特征在于,所述判决器还用于:
如果确定重复读取未结束,则控制所述数据预取器暂停读取所述存储器中的第三地址中存储的数据;所述第三地址为所述第一地址的下一地址;
如果确定重复读取结束,则控制所述数据预取器读取所述存储器中的所述第三地址中存储的数据。
5.根据权利要求1所述的存储器控制器,其特征在于,所述判决器包括第一寄存器;所述第一寄存器用于决定所述判决器是否执行以下操作:确定所述处理器重复读取所述存储器中的目标地址区域中存储的目标数据。
6.根据权利要求2所述的存储器控制器,其特征在于,所述判决器包括第二寄存器;所述第二寄存器用于确定从所述循环缓存器中查找的所述地址偏移量的最大值。
7.根据权利要求2所述的存储器控制器,其特征在于,所述判决器包括第三寄存器;所述第三寄存器用于清除所述循环缓存器中存储的所述目标信息。
8.根据权利要求1-7任一项所述的存储器控制器,其特征在于,所述目标数据为指令。
9.一种数据读取方法,其特征在于,基于存储器控制器;所述存储器控制器用于根据处理器的读取命令来读取存储器中存储的数据;所述存储器控制器包括:数据预取器、第一缓存器;所述方法包括:
如果确定所述处理器重复读取所述存储器中的目标地址区域中存储的目标数据,则在所述第一缓存器中查找所述目标数据;
如果在所述第一缓存器中未查找到所述目标数据,则控制所述数据预取器将所述目标地址区域中存储的所有数据存储至所述第一缓存器,并将所述目标数据发送给所述处理器;
如果在所述第一缓存器中查找到所述目标数据,则从所述第一缓存器中将所述目标数据发送给所述处理器。
10.根据权利要求9所述的方法,其特征在于,所述存储器控制器还包括循环缓存器;所述确定所述处理器重复读取所述存储器中的目标地址区域中存储的目标数据,包括:
依次接收来自所述处理器的第一读取命令和第二读取命令,所述第一读取命令用于指示读取所述存储器中第一地址中存储的数据,所述第二读取命令用于指示读取所述存储器中第二地址中存储的数据;所述第一地址大于所述第二地址;
从所述循环缓存器中查找以下目标信息中的一种:所述第一地址和所述第二地址,或者,所述第一地址和地址偏移量,或者,所述第二地址和所述地址偏移量;其中,所述地址偏移量为所述第一地址与所述第二地址的差值;
如果未查找到所述目标信息,则将所述目标信息存储至所述循环缓存器;
如果查找到所述目标信息,则确定所述处理器重复读取从所述第二地址至所述第一地址所限定的所述目标地址区域中存储的目标数据。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
计算所述目标信息对应的区域读取次数,并将所述区域读取次数存储至所述循环缓存器;所述区域读取次数为:所述处理器重复读取所述目标地址区域中存储的所有数据的总次数;
当从所述循环缓存器中查找到所述目标信息时,根据已读取次数和所述区域读取次数,判断重复读取是否结束;所述已读取次数为所述处理器已重复读取所述存储器中存储的所有数据的次数;
如果所述已读取次数小于所述区域读取次数,则确定重复读取结束,否则确定重复读取未结束。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
如果确定重复读取未结束,则控制所述数据预取器暂停读取所述存储器中的第三地址中存储的数据;所述第三地址为所述第一地址的下一地址;
如果确定重复读取结束,则控制所述数据预取器读取所述存储器中的所述第三地址中存储的数据。
13.根据权利要求9所述的方法,其特征在于,所述存储器控制器还包括第一寄存器;所述方法还包括:
所述第一寄存器决定是否执行以下操作:确定所述处理器重复读取所述存储器中的目标地址区域中存储的目标数据。
14.根据权利要求10所述的方法,其特征在于,所述存储器控制器还包括第二寄存器;所述方法还包括:
所述第二寄存器确定从所述循环缓存器中查找的所述地址偏移量的最大值。
15.根据权利要求10所述的方法,其特征在于,所述存储器控制器还包括第三寄存器;所述方法还包括:
所述第三寄存器清除所述循环缓存器中存储的所述目标信息。
16.根据权利要求9-15任一项所述的方法,其特征在于,所述目标数据为指令。
17.一种电子设备,其特征在于,包括如权利要求1-8任一项所述的存储器控制器;所述存储器控制器用于根据处理器的命令来读取存储器中存储的数据,并发送给所述处理器。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述指令在如权利要求17所述的电子设备上运行时,使得所述电子设备执行如权利要求9-16任一项所述的方法。
CN202210731886.1A 2022-06-25 2022-06-25 存储器控制器、数据读取方法和电子设备 Pending CN117331485A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210731886.1A CN117331485A (zh) 2022-06-25 2022-06-25 存储器控制器、数据读取方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210731886.1A CN117331485A (zh) 2022-06-25 2022-06-25 存储器控制器、数据读取方法和电子设备

Publications (1)

Publication Number Publication Date
CN117331485A true CN117331485A (zh) 2024-01-02

Family

ID=89288969

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210731886.1A Pending CN117331485A (zh) 2022-06-25 2022-06-25 存储器控制器、数据读取方法和电子设备

Country Status (1)

Country Link
CN (1) CN117331485A (zh)

Similar Documents

Publication Publication Date Title
US20200218662A1 (en) Data caching device and control method therefor, data processing chip, and data processing system
CN106951374B (zh) 用于检查块页地址的方法及其装置
CN109219805B (zh) 一种多核系统内存访问方法、相关装置、系统及存储介质
TWI709854B (zh) 資料儲存裝置及用於存取邏輯至物理位址映射表之方法
KR20150028610A (ko) 데이터 저장 장치 및 그것의 데이터 처리 방법
CN111538679B (zh) 一种基于内嵌dma的处理器数据预取方法
CN112579175B (zh) 分支预测方法、分支预测装置和处理器核
CN111078296B (zh) 分支预测方法、分支预测单元及处理器核
WO2020199058A1 (zh) 分支指令的处理方法、分支预测器及处理器
WO2019019719A1 (zh) 分支预测方法及装置
CN112199304B (zh) 数据预取方法及装置
US7769954B2 (en) Data processing system and method for processing data
CN110806900B (zh) 一种访存指令处理方法及处理器
US9697127B2 (en) Semiconductor device for controlling prefetch operation
CN114925001A (zh) 处理器、页表预取方法、电子设备
CN112612728B (zh) 缓存管理方法及装置、设备
CN112799723A (zh) 一种数据读取方法、装置及电子设备
CN117331485A (zh) 存储器控制器、数据读取方法和电子设备
KR101098689B1 (ko) N개의 경로 선택 방법, 집적 회로 및 캐시 제어 회로
KR20190130570A (ko) 슈퍼-스레드 프로세서
US7089364B2 (en) System and method to stall dispatch of gathered store operations in a store queue using a timer
US11449428B2 (en) Enhanced read-ahead capability for storage devices
JP7170093B2 (ja) 記憶デバイスのための改良された先読み能力
US8452920B1 (en) System and method for controlling a dynamic random access memory
CN113867801A (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