CN117435522A - 地址重映射单元、片上系统、终端及数据读写方法 - Google Patents

地址重映射单元、片上系统、终端及数据读写方法 Download PDF

Info

Publication number
CN117435522A
CN117435522A CN202210837338.7A CN202210837338A CN117435522A CN 117435522 A CN117435522 A CN 117435522A CN 202210837338 A CN202210837338 A CN 202210837338A CN 117435522 A CN117435522 A CN 117435522A
Authority
CN
China
Prior art keywords
memory
address
channel
target
channels
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
CN202210837338.7A
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.)
Zeku Technology Shanghai Corp Ltd
Original Assignee
Zeku Technology Shanghai Corp 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 Zeku Technology Shanghai Corp Ltd filed Critical Zeku Technology Shanghai Corp Ltd
Priority to CN202210837338.7A priority Critical patent/CN117435522A/zh
Publication of CN117435522A publication Critical patent/CN117435522A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)

Abstract

本申请实施例公开了一种地址重映射单元、片上系统、终端及数据读写方法,属于存储技术领域。所述地址重映射单元与内存管理单元相连;所述内存管理单元用于将虚拟地址转换为物理地址;所述地址重映射单元用于对所述内存管理单元转换得到的所述物理地址进行内存重映射,其中,内存重映射后的所述物理地址被划分至n条内存通道中处于开启状态的目标内存通道,且所述n条内存通道支持部分开启和关闭,n为大于或等于2的整数。在对内存读写带宽需求较低的场景下,通过关闭部分内存通道,并利用地址映射单元进行内存重映射,在保证数据访问的前提下有助于降低功耗。

Description

地址重映射单元、片上系统、终端及数据读写方法
技术领域
本申请实施例涉及存储技术领域,特别涉及一种地址重映射单元、片上系统、终端及数据读写方法。
背景技术
随着终端功能的不断丰富,终端对内存的要求也越来越高。比如,终端的处理器在运行人工智能(Artificial Intelligence,AI)算法时,对内存的数据读写带宽的要求较高。
多通道(channel)作为一种提高内存读写带宽的技术,被广泛应用于终端中。然而,随着内存通道数的增加,终端的功耗也在不断增加。
发明内容
本申请实施例提供了一种地址重映射单元、片上系统、终端及数据读写方法。所述技术方案如下:
一方面,本申请实施例提供了一种地址重映射单元,所述地址重映射单元与内存管理单元相连;
所述内存管理单元用于将虚拟地址转换为物理地址;
所述地址重映射单元用于对所述内存管理单元转换得到的所述物理地址进行内存重映射,其中,内存重映射后的所述物理地址被划分至n条内存通道中处于开启状态的目标内存通道,且所述n条内存通道支持部分开启和关闭,n为大于或等于2的整数。
另一方面,本申请实施例提供了一种数据读写方法,所述方法包括:
通过内存管理单元将数据读写指令中的虚拟地址转换为物理地址;
通过地址重映射单元对所述内存管理单元转换得到的物理地址进行内存重映射,其中,内存重映射后的所述物理地址被划分至n条内存通道中处于开启状态的目标内存通道,且所述n条内存通道支持部分开启和关闭,n为大于或等于2的整数;
通过所述目标内存通道进行数据读写操作。
另一方面,本申请实施例提供了一种片上系统,所述片上系统包括:主设备、内存管理单元、地址重映射单元、存储控制器以及存储器;
所述主设备与内存管理单元相连,所述内存管理单元与所述地址重映射单元相连;
所述地址重映射单元通过主总线与所述存储控制器相连;
所述存储控制器通过物理层接口与所述存储器相连;
所述地址重映射单元包括如上述方面所述的地址重映射单元。
另一方面,本申请实施例提供了一种终端,所述终端中设置有上述方面所述的片上系统。
本申请实施例中,通过设置地址映射单元,在多条内存通道中部分内存通道开启而部分内存通道关闭的情况下,利用该地址映射单元对内存管理单元转换得到的物理地址进行内存重映射,将物理地址划分至处于开启状态的目标内存通道,保证后续能够通过目标内存通道进行正常数据访问;在对内存读写带宽需求较低的场景下,通过关闭部分内存通道,并利用地址映射单元进行内存重映射,在保证数据访问的前提下有助于降低功耗。
附图说明
图1是相关技术中内存读取架构的架构示意图;
图2是相关技术中数据访问过程的实施示意图;
图3是本申请一个示意性实施例示出的数据访问过程的实施示意图;
图4是本申请一个示例性实施例示出的片上系统的结构示意图;
图5是本申请一个示例性实施例示出的地址重映射单元的示意图;
图6是本申请一个示例性实施例示出的基于通道交织映射表将物理地址划分至内存通道的实施示意图;
图7是本申请一个示例性实施例示出的数据迁移过程的实施示意图;
图8是本申请一个示例性实施例提供的数据读写方法的方法流程图;
图9示出了本申请一个示例性实施例提供的目标工作模式进入过程的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
如图1所示,终端中设置有N个主设备(Master)101至10N,主设备可以包括但不限于中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics ProcessingUnit,GPU)、神经网络处理器(Neural-network Processing Unit,NPU)、数字信号处理器(Digital Signal Processor,DSP)等处理器,以及图像传感器(Image Sensor)、图像信号处理单元(Image Signal Processing Unit,ISP)、视频处理单元(Video ProcessingUnit,VPU)等非处理器。上述主设备在运行过程中均具有内存数据读和/或写的需求。
图1中各个主设备与主总线11建立有4条总线链路,以通过总线链路向主总线11发送数据读写指令。主总线11与从总线12之间也建立有4条链路,而从总线12则与4个控制器13之间建立有4条内存通道。进行数据读写时,从总线12将数据读写指令发送某一内存通道对应的控制器13,由控制器13通过物理层接口14实现对存储器15的数据读写。
由于主设备发起的数据读写请求中包含的访问地址为虚拟地址(virtualaddress),而实际进行数据访问时需要基于物理地址(physicaladdress),因此需要通过内存管理单元(Memory Management Unit,MMU)将虚拟地址转换(或称为映射)为物理地址。其中,内存管理单元通过软件查找表(lookuptable)的方式实现地址转换。
在一些实施例中,该MMU可以设置在主设备中,比如设置在CPU中的MMU,或者,该MMU可以设置在主设备外,比如设置在输入输出(IO,Input/Output)设备(比如传感器)外的系统内存管理单元(System Memory Management Unit,SMMU),本申请实施例对MMU的具体设置位置以及类型不作限定。
在一个示意性的例子中,如图2所示,实现数据访问的过程可以包括如下步骤:(1)CPU配置内存管理单元25的查找表(可以存储在由框架&核心层(Framework&Kernel)22管理的固件层(Firmware)23中);(2)CPU使能内存管理单元25;(3)在应用层(App)21的应用或线程存在数据访问需求时,主设备24发起数据访问,内存管理单元25基于查找表将数据访问请求中的虚拟地址转换为物理地址(地址换换对于应用层21、框架&内核层22以及固件层23都是透明的,即不感知地址转换);(4)在系统中传递物理地址,基于物理地址完成对存储器26的数据访问。
相关技术中,不同内存通道(与存储器对应)被统一控制,即在运行过程中各个内存通道均需要保持开启状态,当内存通道较多时,虽然能够提升数据读写带宽,但会造成功耗增加。然而,在实际应用中,并非所有场景均对数据读写带宽具有较高需求,在这类场景下开启所有内存通道,不仅不会提升使用体验,反而会影响终端续航。
本申请实施例中,如图3所示,运行过程中,n条内存通道支持部分开启而部分关闭(即部分存储器26上电,而部分存储器26下电),在利用内存管理单元25完成虚拟地址到物理地址的转换后,进一步通过额外设置的地址重映射单元27,将该物理地址划分至处于开启状态的目标内存通道(图中以第二个存储器26对应的内存通道为例),以通过目标内存通道完成数据访问,在保证数据访问正常执行的前提下,由于仅开启了部分内存通道,因此功耗得以降低。
请参考图4,其示出了本申请一个示例性实施例提供的片上系统的结构示意图,该片上系统可以包括:主设备401、内存管理单元402、地址重映射单元403、主总线404、存储控制器405以及存储器406。
主设备201是具有数据访问需求的电子器件,可以包括处理器或者非处理器。其中,处理器可以包括CPU、GPU、NPU、DSP等等,而非处理器可以包括图像传感器、ISP、VPU等等。主设备201可以是有数据读和写的需求的主设备,如处理器,也可能只有读或者写的需求,如图像传感器。主设备201是否同时具有读和写的需求不构成对本申请的限定。本申请实施例中以处理器包括CPU、GPU和NPU,非处理器包括图像传感器与VPU为例进行示意性说明,但并不对此构成限定。
其中,处理器利用各种接口和线路连接整个终端设备内的各个部分,通过运行或执行存储在存储器内的指令、程序、代码集或指令集,以及调用存储在存储器内的数据,执行终端设备的各种功能和处理数据。
在一些实施例中,处理器可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。
处理器可集成CPU、GPU、NPU和基带芯片等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;NPU用于实现AI功能;基带芯片用于处理无线通信。
内存管理单元402是负责处理主设备的内存访问请求的电子器件。内存管理单元402可以设置在主设备401内部,也可以设置在主设备401外部。比如,CPU、GPU等处理器内部设置有内存管理单元,图像传感器、ISP等非处理器的外部设置有内存管理单元。图4中仅以内存管理单元402设置在主设备401外部为例进行示意性说明,但并不对此构成限定。
主设备401存在数据访问需求时,即向内存管理单元402发送包含待访问数据对应虚拟地址的数据访问请求,由内存管理单元402将该虚拟地址转换为物理地址。在一些实施例中,系统中内核层管理的固件层中配置有地址映射表,该地址映射表包含虚拟地址与物理地址间的映射关系,内存管理单元402即根据该地址映射表进行地址转换。
本实施例中,内存管理单元402完成地址转换后,进一步交由相连的地址重映射单元403对该物理地址进行内存重映射。其中,地址重映射单元与内存管理单元相连可以指地址重映射单元设置在内存管理单元内部,也可以指地址重映射单元设置在内存管理单元外部(且位于内存管理单元的下游)。图4中仅以地址重映射单元403设置在内存管理单元402内部为例进行示意性说明,但并不对此构成限定。
其中,内存重映射的过程即将物理地址划分至n条内存通道中处于开启状态的目标内存通道的过程,以此保证在n条内存通道部分开启且部分关闭的情况下,能够通过处于开启状态的内存通道进行正常数据访问。
在一些实施例中,在存在至少两条处于开启状态的内存通道的情况下,地址重映射单元按照交织颗粒度将物理地址交织(interleave)到不同的内存通道中。
比如,按照1GB这一交织颗粒度将8GB内存(交织)划分至8个内存通道时,第0至1GB被划分至第一内存通道,第1至2GB被划分至第二内存通道,第2至3GB被划分至第三内存通道,以此类推。
按照1MB这一交织颗粒度将8GB内存划分至8个内存通道时,第8i至(8i+1)MB将被划分至第一内存通道,第(8i+1)至(8i+2)MB将被划分至第二内存通道,第(8i+2)至(8i+3)MB将被划分至第三内存通道,以此类推,i为整数。
显然,不同交织颗粒度下各个内存通道划分到的内存块不同(总量相同)。且随着交织颗粒度的降低,通过内存通道进行数据读写的速度会不断提高。因此,在一种可能的实施方式中,不同场景下,地址重映射单元可以基于不同的交织颗粒度进行内存交织,以此满足不同场景下对数据读写带宽的需求。
相较于开启全部内存通道,开启部分内存通道虽然会一定程度降低数据读写带宽,但是有助于降低功耗。因此,在一些对数据读写带宽要求较低的场景,关闭部分内存通道能够在不影响使用体验的情况下,降低系统的整体功耗。
需要说明的是,为了实现内存通道部分开启和关闭,需要针对不同内存通道进行电压域划分,即可以通过控制不同的电压域,实现对不同内存通道的开闭控制。
在一个示意性的例子中,当设置有8个内存通道时,可以划分8个电压域,即内存通道与电压域一一对应;或者,可以划分为4个电压域,即两个内存通道对应同一电压域。本申请实施例并不对电压域的划分方式进行限定。
地址重映射单元403完成内存重映射后,进一步通过主总线404,在目标内存通道进行数据访问。其中,地址重映射单元403通过主总线404与存储控制器405相连。
在一些实施例中,主设备401与主总线404之间通过m条链路相连(即m条内存通道),主总线404则通过对不同主设备对应的链路进行交织,从而与存储控制器405建立m条链路,m为不小于1的整数。本申请实施例以m为4为例进行说明。
在一些实施例中,主设备401与主总线403之间的链路,以及主总线403与存储控制器405之间的链路采用相同的总线协议。比如,该链路均采用先进可扩展接口(AdvancedeXtensible Interface,AXI)总线协议。本申请实施例并不对链路所采用的具体总线协议进行限定。
在一些实施例中,主总线404实现成为系统缓存(System Cache,SC)总线,或者,主总线实现成为SC总线和SC片(或称条带,Slice)。可选地,SC片数量为m。主总线404具有数据缓存能力。
存储控制器405可以包括从总线、k个控制器(对应k条内存通道)以及物理层接口,k为正整数。在一些实施例中,从总线实现成为双倍数据速率(Double Data Rate,DDR)总线,控制器实现成为动态存储控制器(Dynamic Memory Controller,DMC)。
在一些实施例中,从总线与控制器之间建立有k条内存通道。其中,内存通道的数量与从总线中的分路结构相关,k可以为m的整数倍或者非整数倍,本实施例对此不作限定。示例性地,主总线与从总线之间建立有4条链路,经过从总线分路后,从总线与8个控制器相连,建立8条内存通道。
存储器406为存储数据的硬件载体。存储控制器405通过物理层接口与存储器406相连。在一些实施例中,该存储器406为动态随机存取存储器(Dynamic Random AccessMemory,DRAM)
在一些实施例中,存储器406的数量与内存通道的数量相关。比如,当从总线与8个控制器建立有8条内存通道时,存储器406的数量为8个,分别对应不同内存通道。
需要说明的是,图4以片上系统中包含存储器(即存储器集成在片上系统内部)为例进行说明,在其他可能的设计中,存储器也可以设置在片上系统外部,本实施例对此不作限定。
为了实现上述内存重映射功能,如图5所示,地址重映射单元51包括基于软件(software)的通道交织映射表511(channelinterleavedmappingtable),该通道交织映射表511用于实现物理地址与内存通道之间的交织映射。
在一种可能的实施方式中,地址重映射单元用于基于通道交织映射表对内存管理单元转换得到的物理地址进行内存重映射。且为了避免将物理地址划分至处于关闭状态的内存通道,通道交织映射表基于n条内存通道的通道状态进行更新,其中,该通道状态包括开启状态和关闭状态。
在一些实施例中,该通道交织映射表设置在固件层。内存管理单元完成地址转换后,地址重映射单元即从固件中读取通道交织映射表,从而基于该通道交织映射表所指示的交织方式,对物理地址进行内存重映射。
在一些实施例中,在内存通道的通道状态发生变化的情况下,处理器(比如CPU)基于变化后各个内存通道的通道状态,对固件层中存储的通道交织映射表进行更新,保证后续地址重映射单元基于更新后的通道交织映射表将物理地址划分至开启的内存通道。
示意性的,如图6所示,在设置有4条内存通道,且内存通道1和4处于关闭状态,而内存通道2和3处于开启状态的情况下,地址重映射单元基于通道交织映射表511,将物理地址划分至内存通道2和3,而不会将物理地址划分至内存通道1和4,以保证通过开启状态的内存通道进行正常数据访问。
关于通道交织映射表的更新时机,在一种可能的实施方式中,通道交织映射表在进入或离开目标工作模式的情况下进行更新,其中,该目标工作模式下部分内存通道处于开启状态,且部分内存通道处于关闭状态。
其中,在进入目标工作模式的情况下,由于原先处于开启状态的部分内存通道需要关闭,因此需要更新通道交织映射表;而在退出目标工作模式的情况下,由于处于关闭状态的内存通道需要开启,因此同样需要更新通知交织映射表。
可选的,不同工作模式下,该通道交织映射表对应的交织颗粒度可以相同,也可以不同。比如,目标工作模式下通道交织映射表对应的交织颗粒度(例如5MB)大于其他工作模式下通道交织映射表对应的交织颗粒度(例如1MB)。
在一种可能的实施方式中,该目标工作模式是对数据访问带宽需求较低的工作模式,比如省电模式或者功耗模式。比如,当进入电模式时,处理器对通道交织映射表进行更新,并关闭部分内存通道。
需要说明的是,在支持至少两种目标工作模式的情况下,在目标工作模式之间进行切换时,同样需要对通道交织映射表进行更新,其中,不同目标工作模式下开启的内存通道的数量不同,或,开启的内存通道不同。
比如,第一目标工作模式下,8条内存通道中的4条内存通道开启,4条内存通道关闭;第二目标工作模式下,8条内存通道中的2条内存通道开启,6条内存通道关闭。
又比如,第一目标工作模式下,8条内存通道中第1、2条内存通道开启,第3、4、5、6、7、8条内存通道关闭;第二目标工作模式下,8条内存通道中的7、8条内存通道开启,第1、2、3、4、5、6条内存通道关闭。
为了保证待关闭内存通道中存储的数据在通道关闭后仍旧能够被继续访问,在将内存通道由开启状态切换为关闭状态前,需要在内存通道之间进行数据迁移。为了实现数据迁移,如图5所示,地址重映射单元51还包括基于硬件(hardware)的矩阵历史表512(matrixhistorytable),其中,不同的内存通道对应不同的矩阵历史表。
在一些实施例中,该矩阵历史表512用于存储对应内存通道中地址域(addressregion)的历史分配情况,以便后续在内存通道关闭前,基于矩阵历史表512(所指示的地址域),对待关闭内存通道中的数据进行数据迁移。
可选的,该矩阵历史表中存储由地址域的起始地址和结束地址。该地址域对应内存页(page)的大小可以为4KB、16KB或64KB等等,本申请实施例对此不作限定。
在一种可能的实施方式中,该矩阵历史表与内存通道一一对应设置。当应用或线程请求在内存通道中分配地址域(即请求分配内存页)时,该内存通道对应的矩阵历史表中即添加为应用或线程分配的地址域。当然,当应用或者线程退出而无需继续使用该地址域时,矩阵历史表中该地址域将被移除。
示意性的,如图7所示,内存管理单元25中设置有地址重映射单元,该地址重映射单元基于软件和硬件实现。其中,地址重映射单元的软件部分基于固件层23中存储的通道交织映射表271实现通道交织;地址重映射单元的硬件部分则包含与各个内存通道一一对应设置的矩阵历史表272,并通过矩阵历史表272记录对应内存通道下的地址域分配情况。
在一些实施例中,在进入目标工作模式的情况下,处理器基于矩阵历史表在不同内存通道之间进行地址域对应数据的迁移,其中,该目标工作模式下部分内存通道处于开启状态,且部分内存通道处于关闭状态,相应的,数据迁移即发生在目标工作模式下待关闭的内存通道与保持开启的内存通道之间。
由于并非待关闭内存通道中的所有数据均需要在内存通道关闭后使用,因此为了实现仅将需要使用数据迁移至开启的内存通道,在一种可能的实施方式中,矩阵历史表中存储的地址域对应设置有目标比特位,该目标比特位的比特值用于表征地址域对应的数据是否需要在目标工作模式下使用。
相应的,在关闭内存通道前,处理器通过读取待关闭内存通道对应矩阵历史表中各个地址域对应目标比特位的比特值,即可确定待关闭内存通道下哪些地址域对应的数据需要被迁移至开启的内存通道。
在一种可能的实施方式中,矩阵历史表中各个地址域均设置有目标比特位,该目标比特位的比特长度可以为1bit,即通过额外1bit指示地址域的数据是否需要被迁移。
关于目标比特位中比特值的写入时机,在一种可能的实施方式中,在请求分配地址域时,由处理器将请求到的地址域的起始、结束地址以及该地址域对应的比特值写入矩阵历史表中。
在一种可能的设计中,目标比特位的比特值包括第一比特值和第二比特值,其中,第一比特值用于标识内存通道中需要在目标工作模式下使用的地址域,第二比特值则用于标识内存通道中无需在目标工作模式下使用的地址域。比如,第一比特值为1,第二比特值为0,本申请实施例对此并不进行限定。
可选的,n条内存通道至少包括第一内存通道和第二内存通道,目标工作模式下,第一内存通道处于关闭状态,且第二内存通道处于开启状态。因此,在进入目标工作模式前,需要将第一内存通道中的重要数据迁移至第二内存通道。
在进入目标工作模式的情况下,第一内存通道中目标地址域对应的数据由第一内存通道迁移至第二内存通道,其中,目标地址域对应目标比特位的比特值为第一比特值。
在一个示意性的例子中,第一内存通道对应的矩阵历史表如表一所示。
表一
地址域ID 起始地址 结束地址 目标比特位
0 起始地址0 结束地址0 1
1 起始地址1 结束地址1 0
2 起始地址2 结束地址2 0
3 起始地址3 结束地址3 1
当需要进入目标工作模式时,处理器读取第一内存通道对应的矩阵历史表,从而根据各个地址域对应的目标比特位的比特值,将第一内存通道中地址域ID为0和3对应的数据迁移至第二内存通道。
需要说明的是,当存在多个待关闭的内存通道,以及多个保持开启状态的内存通道时,可以基于各个保持开启状态的内存通道的通道剩余空间以及内存通道之间通道距离(影响数据迁移耗时),以能够容纳迁移的数据,以及数据迁移耗时最短为原则,动态确定内存通道之间的数据迁移方式(包括迁出和迁入的内存通道),本实施例对此不作限定。
示意性的,如图7所示,目标工作模式下,四条内存通道仅第二条内存通道保持开启状态,因此在进入目标工作模式前,处理器通过读取待关闭内存通道(即第一、三、四条内存通道)对应的矩阵历史表272,确定各条内存通道中待迁移数据对应的地址域,从而基于该地址域将对应的数据迁移至第二条内存通道。进入目标工作模式后,主设备仍旧能够通过第二条内存通道继续访问原先存储在第一、三、四条内存通道的重要数据。
在一种可能的实施方式中,上述基于硬件的矩阵历史表可以通过静态随机存取存储器(Static Random-Access Memory,SRAM)实现。由于仅需要通过目标比特位(1bit)即可指示地址域对应的数据是否需要进行迁移,因此小容量SRAM即可满足矩阵历史表的存储需求,且由于SRAM的速度较快,因此能够保证数据迁移的效率。
本实施例中,利用基于软硬件实现的地址重映射单元,能够实现对物理地址的动态内存通道划分,适配不同工作模式下内存通道的不同通道状态,在降低功耗的同时,提高了通道交织的灵活性;并且,通过设置基于硬件的矩阵历史表,实现内存通道间重要数据的数据迁移,保证内存通道关闭前后重要数据的正常访问。
如图8所示,其示出了本申请一个示例性实施例提供的数据读写方法的方法流程图。该方法可以包括如下步骤。
步骤801,通过内存管理单元将数据读写指令中的虚拟地址转换为物理地址。
当上游主设备存在数据读写需求时,即发起数据读写指令。当数据读写指令为读数据指令时,该指令中包含待读取数据的存储地址(虚拟地址),当数据读写指令为写数据指令时,该指令中包含待写入数据以及待写入数据的写入地址(虚拟地址)。其中,该主设备可以包括处理器或者非处理器。
在一种可能的实施方式中,当主设备内置有内存管理单元时,即通过内置内存管理单元将数据读写指令中的虚拟地址转换为物理地址,以便后续基于物理地址进行数据读写。
在另一种可能的实施方式中,当主设备未内置内存管理单元时,即通过外部的内存管理单元进行地址转换。比如,IO设备通过SMMU将虚拟地址转换为物理地址。
在一些实施例中,内存管理单元从固件层获取预先配置的地址映射表,从而基于地址映射表将虚拟地址转换为物理地址。其中,该地址映射表可以由处理器(比如CPU)写入固件层。
步骤802,通过地址重映射单元对内存管理单元转换得到的物理地址进行内存重映射,其中,内存重映射后的物理地址被划分至n条内存通道中处于开启状态的目标内存通道,且n条内存通道支持部分开启和关闭,n为大于或等于2的整数。
由于n条内存通道支持部分开启部分关闭,因此为了保证能够通过开启的内存通道进行正常数据读写,完成地址转换后,需要进一步通过地址重映射单元对转换得到的物理地址进行内存重映射,将物理地址划分到处于开启状态的目标内存通道。
在一种可能的实施方式中,地址重映射单元从固件层获取预先配置的通道交织映射表,从而基于通道交织映射表,对物理地址进行内存重映射。其中,该通道交织映射表用于指示物理地址与处于开启状态的内存通道之间的通道交织关系。
可选的,该通道交织映射表由处理器(比如CPU)写入固件层。
由于内存通道的通道状态可能会发生变更,因此,该通道交织映射表基于n条内存通道的通道状态进行更新,该通道状态机包括开启状态和关闭状态。在一些实施例中,在内存通道的通道状态发生变化的情况下,处理器对固件层中的通道交织映射表进行更新。其中,内存通道的通道状态可以在工作模式发生变化的情况下改变。
在一个示意性的例子中,性能模式下,8条内存通道均处于开启状态,以提供较大的数据读写带宽;而在功耗模式下,在保证数据读写带宽需求的情况下,为了降低功耗,8条内存通道中仅2条内存通道保持开启状态。性能模式下,地址重映射单元基于通道交织映射表(物理地址与8条内存通道的通道交织映射关系)进行内存重映射;当由性能模式进入功耗模式时,处理器对通道交织映射表进行更新(物理地址与2条内存通道的通道交织映射关系),后续地址重映射单元基于更新后的通道交织映射表进行内存重映射。
步骤803,通过目标内存通道进行数据读写操作。
完成内存重映射,该物理地址在片上系统流转,最终通过目标内存通道从存储器中读取数据,或者,向存储器中写入数据,完成数据读写指令所指示的数据读写操作。
综上所述,本申请实施例中,通过设置地址映射单元,在多条内存通道中部分内存通道开启而部分内存通道关闭的情况下,利用该地址映射单元对内存管理单元转换得到的物理地址进行内存重映射,将物理地址划分至处于开启状态的目标内存通道,保证后续能够通过目标内存通道进行正常数据访问;在对内存读写带宽需求较低的场景下,通过关闭部分内存通道,并利用地址映射单元进行内存重映射,在保证数据访问的前提下有助于降低功耗。
在一种可能的场景下,当需要由当前工作模式切换为目标工作模式(部分内存通道关闭),以降低片上系统的功耗时,为了保证仍旧能够在目标工作模式下,对关闭的内存通道下原先存储的重要数据进行访问,在进入目标工作模式前,在内存通道间进行数据迁移。
如图7所示,地址重映射单元设置有基于硬件的矩阵历史表,矩阵历史表用于存储对应内存通道中地址域的历史分配情况,且不同的内存通道对应不同的矩阵历史表。在进入目标工作模式前,处理器即根据矩阵历史表进行数据迁移。
如图9所示,其示出了本申请一个示例性实施例提供的目标工作模式进入过程的流程图,该过程可以包括如下步骤。
步骤901,响应于模式进入指令,读取矩阵历史表,模式进入指令用于指示进入目标工作模式,目标工作模式下部分内存通道处于开启状态,且部分内存通道处于关闭状态。
可选的,该模式进入指令由终端自动触发,或者,由模式切换操作触发。
比如,当终端的电量低于电量阈值时,终端自动触发模式进入指令,以进入目标工作模式(由于目标工作模式下部分内存通道关闭,因此有助于降低功耗);或者,当接收到对模式切换控件(例如省电模式控件)的触发操作时,终端确定接收到模式进入指令。
可选的,目标工作模式下,保持开启状态的内存通道为指定内存通道,或者,保持开启状态的内存通道的数量为指定数量(并不指定具体内存通道)。
在一种可能的实施方式中,在接收到模式进入指令,且目标工作模式下保持开启状态的内存通道为指定内存通道时,处理器读取指定内存通道以外其他内存通道(即需要关闭的内存通道)对应的矩阵历史表;在接收到模式进入指令,且目标工作模式下保持开启状态的内存通道的数量为指定数量时,处理器读取各条内存通道对应的矩阵历史表。
在一个示意性的例子中,目标工作模式下,8条内存通道中第1、2条内存通道保持开启状态,而其余6条内存通道则处于关闭状态,处理器读取第3、4、5、6、7、8条内存通道对应的矩阵历史表。
在另一个示意性的例子中,8条内存通道中2条内存通道(可以为第1、2条内存通道,或,第1、3条内存通道,或,第3、5条内存通道等等)保持开启状态,而其余6条内存通道则处于关闭状态,处理器则读取8条内存通道各自对应的矩阵历史表。
步骤902,基于矩阵历史表在不同内存通道之间进行数据迁移。
在一种可能的实施方式中,矩阵历史表中存储的地址域对应设置有目标比特位,该目标比特位的比特值用于表征地址域是否需要在目标工作模式下使用。
在一些实施例中,目标比特位的比特值为第一比特值时,表明地址域对应的数据需要在目标工作模式下使用,目标比特位的比特值为第二比特值时,表明地址域对应的数据无需在目标工作模式下使用。比如,第一比特值为1,第二比特值为0。
可选的,当应用或进程请求在内存通道中分配地址域,以在该地址域下存储数据时,处理器即根据应用或进程的属性,确定分配的地址域是否需要在目标工作模式下使用,若需要使用,则在矩阵历史表中该地址域对应的目标比特位中写入第一比特值;若无需使用,则在矩阵历史表中该地址域对应的目标比特位中写入第二比特值。
可选的,该矩阵历史表中包含地址域起始地址、结束地址以及目标比特位之间的对应关系。
在一些实施例中,n条内存通道至少包括第一内存通道和第二内存通道,目标工作模式下,第一内存通道处于关闭状态,且第二内存通道处于开启状态,本步骤可以包括如下步骤:
1、基于第一内存通道对应矩阵历史表中目标比特位的比特值,确定第一内存通道中需要在目标工作模式下使用的目标地址域。
在一种可能的实施方式中,当目标比特征的比特值为第一比特值时,处理器确定该地址域为目标地址域;当目标比特征的比特值为第二比特值时,处理器确定该地址域不是目标地址域。
2、将目标地址域对应的数据由第一内存通道迁移至第二内存通道。
进一步的,处理器基于目标地址域,将对应的目标数据从第一内存通道迁移至第二内存通道。
需要说明的是,上述实施例仅以第一内存通道与第二内存通道之间进行数据迁移为例进行说明,在一些实施例中,当目标工作模式下,保持开启状态的指定内存通道为至少两个时,在确定数据迁移方式(即确定迁出通道和迁入通道)过程中,处理器可以根据指定内存通道外其它内存通道下待迁移数据的数据量、指定内存通道的通道剩余空间以及其它内存通道与指定内存通道之间的通道距离(影响数据迁移耗时),以最小化数据迁移耗时为原则,动态确定数据迁移方式。
在另一些实施例中,当目标工作模式下,保持开启状态的内存通道为指定数量,在确定数据迁移方式(即确定迁出通道和迁入通道)过程中,处理器可以根据各个内存通道下待迁移数据的数据量、各个内存通道的通道剩余空间以及各个内存通道之间的通道距离(影响数据迁移耗时),以最小化数据迁移耗时为原则,动态确定保持开启状态的内存通道,进而确定内存通道间的数据迁移方式。
步骤903,在完成数据迁移的情况下,基于处于开启状态的内存通道更新通道交织映射表。
在各个目标地址域对应的数据均完成数据迁移的情况下,处理器基于处于开启状态的内存通道,对通道交织映射表进行更新,保证后续进入目标工作模式后,地址重映射单元可以基于更新后的通道交织映射表正确进行内存重映射。其中,处于开启状态内存通道可以为指定内存通道,也可以是完成数据迁移后实际保持开启内存通道。
步骤904,在完成数据迁移的情况下,更新内存管理单元对应的地址映射表,地址映射表用于将虚拟地址转换为物理地址。
由于数据迁移后,待关闭内存通道中部分地址域下数据的物理地址发生变化,因此为了保证进入目标工作模式后虚拟地址被正确转换为物理地址,在完成数据迁移的情况下,处理器需要对内存管理单元对应的地址映射表进行更新。
需要说明的是,上述步骤903与904之间并不存在严格的先后时序,即步骤903和步骤904可以同步执行,也可以先后执行,本实施例对此不作限定。
完成上述数据迁移以及表更新后,处理器即响应模式进入指令,进入目标工作模式。其中,进入目标工作模式时,处理器控制部分内存通道下电。
本实施例中,利用基于软硬件实现的地址重映射单元,能够实现对物理地址的动态内存通道划分,适配不同工作模式下内存通道的不同通道状态,在降低功耗的同时,提高了通道交织的灵活性;并且,通过设置基于硬件的矩阵历史表,实现内存通道间重要数据的数据迁移,保证内存通道关闭前后重要数据的正常访问。
本申请实施例还提供了一种终端,该终端设置有图4所示的片上系统。需要说明的是,除了片上系统外,终端还可以包括其它必要组件,比如只读存储器(Read-Only Memory,ROM)、显示组件、输入单元、音频电路、扬声器、麦克风、电源等部件,本实施例在此不作赘述。
可选的,该终端可以为智能手机、平板电脑、可穿戴式设备、便携式个人计算机等对功耗较高敏感的电子设备。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (15)

1.一种地址重映射单元,其特征在于,所述地址重映射单元与内存管理单元相连;
所述内存管理单元用于将虚拟地址转换为物理地址;
所述地址重映射单元用于对所述内存管理单元转换得到的所述物理地址进行内存重映射,其中,内存重映射后的所述物理地址被划分至n条内存通道中处于开启状态的目标内存通道,且所述n条内存通道支持部分开启和关闭,n为大于或等于2的整数。
2.根据权利要求1所述的地址重映射单元,其特征在于,所述地址重映射单元包括通道交织映射表;
所述地址重映射单元用于基于所述通道交织映射表对所述内存管理单元转换得到的所述物理地址进行内存重映射;
其中,所述通道交织映射表基于所述n条内存通道的通道状态进行更新,所述通道状态包括开启状态和关闭状态。
3.根据权利要求1所述的地址重映射单元,其特征在于,所述通道交织映射表在进入或离开目标工作模式的情况下进行更新,所述目标工作模式下部分内存通道处于开启状态,且部分内存通道处于关闭状态。
4.根据权利要求1所述的地址重映射单元,其特征在于,所述地址重映射单元包括基于硬件的矩阵历史表,其中,不同的内存通道对应不同的矩阵历史表;
所述矩阵历史表用于存储对应内存通道中地址域的历史分配情况,以便在进入目标工作模式的情况下,处理器基于所述矩阵历史表在不同内存通道之间进行地址域对应数据的迁移,所述目标工作模式下部分内存通道处于开启状态,且部分内存通道处于关闭状态。
5.根据权利要求4所述的地址重映射单元,其特征在于,所述矩阵历史表中存储的所述地址域对应设置有目标比特位,所述目标比特位的比特值用于表征所述地址域对应的数据是否需要在所述目标工作模式下使用。
6.根据权利要求5所述的地址重映射单元,其特征在于,所述目标比特位的比特值包括第一比特值和第二比特值,所述第一比特值用于标识内存通道中需要在所述目标工作模式下使用的地址域;
所述n条内存通道至少包括第一内存通道和第二内存通道,所述目标工作模式下,所述第一内存通道处于关闭状态,且所述第二内存通道处于开启状态;
在进入所述目标工作模式的情况下,所述第一内存通道中目标地址域对应的数据由所述第一内存通道迁移至所述第二内存通道,所述目标地址域对应目标比特位的比特值为所述第一比特值。
7.根据权利要求4所述的地址重映射单元,其特征在于,所述矩阵历史表通过静态随机存取存储器实现。
8.根据权利要求1至7任一所述的地址重映射单元,其特征在于,所述地址重映射单元位于所述内存管理单元的外部,或者,所述地址重映射单元位于所述内存管理单元的内部。
9.一种数据读写方法,其特征在于,所述方法包括:
通过内存管理单元将数据读写指令中的虚拟地址转换为物理地址;
通过地址重映射单元对所述内存管理单元转换得到的物理地址进行内存重映射,其中,内存重映射后的所述物理地址被划分至n条内存通道中处于开启状态的目标内存通道,且所述n条内存通道支持部分开启和关闭,n为大于或等于2的整数;
通过所述目标内存通道进行数据读写操作。
10.根据权利要求9所述的方法,其特征在于,所述通过地址重映射单元对所述内存管理单元转换得到的物理地址进行内存重映射,包括:
基于通道交织映射表,通过所述地址重映射单元对所述物理地址进行内存重映射;
其中,所述通道交织映射表基于所述n条内存通道的通道状态进行更新,所述通道状态包括开启状态和关闭状态。
11.根据权利要求10所述的方法,其特征在于,所述地址重映射单元设置有基于硬件的矩阵历史表,所述矩阵历史表用于存储对应内存通道中地址域的历史分配情况,且不同的内存通道对应不同的矩阵历史表;
所述方法还包括:
响应于模式进入指令,读取所述矩阵历史表,所述模式进入指令用于指示进入目标工作模式,所述目标工作模式下部分内存通道处于开启状态,且部分内存通道处于关闭状态;
基于所述矩阵历史表在不同内存通道之间进行数据迁移;
在完成数据迁移的情况下,基于处于开启状态的内存通道更新所述通道交织映射表。
12.根据权利要求11所述的方法,其特征在于,所述矩阵历史表中存储的地址域对应设置有目标比特位,所述目标比特位的比特值用于表征所述地址域是否需要在所述目标工作模式下使用,所述n条内存通道至少包括第一内存通道和第二内存通道,所述目标工作模式下,所述第一内存通道处于关闭状态,且所述第二内存通道处于开启状态;
所述基于所述矩阵历史表在不同内存通道之间进行地址域迁移,包括:
基于所述第一内存通道对应矩阵历史表中所述目标比特位的比特值,确定所述第一内存通道中需要在所述目标工作模式下使用的目标地址域;
将所述目标地址域对应的数据由所述第一内存通道迁移至所述第二内存通道。
13.根据权利要求11所述的方法,其特征在于,所述方法还包括:
在完成数据迁移的情况下,更新所述内存管理单元对应的地址映射表,所述地址映射表用于将虚拟地址转换为物理地址。
14.一种片上系统,其特征在于,所述片上系统包括:主设备、内存管理单元、地址重映射单元、存储控制器以及存储器;
所述主设备与内存管理单元相连,所述内存管理单元与所述地址重映射单元相连;
所述地址重映射单元通过主总线与所述存储控制器相连;
所述存储控制器通过物理层接口与所述存储器相连;
所述地址重映射单元包括如权利要求1至8任一所述的地址重映射单元。
15.一种终端,其特征在于,所述终端中设置有如权利要求14所述的片上系统。
CN202210837338.7A 2022-07-15 2022-07-15 地址重映射单元、片上系统、终端及数据读写方法 Pending CN117435522A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210837338.7A CN117435522A (zh) 2022-07-15 2022-07-15 地址重映射单元、片上系统、终端及数据读写方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210837338.7A CN117435522A (zh) 2022-07-15 2022-07-15 地址重映射单元、片上系统、终端及数据读写方法

Publications (1)

Publication Number Publication Date
CN117435522A true CN117435522A (zh) 2024-01-23

Family

ID=89545002

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210837338.7A Pending CN117435522A (zh) 2022-07-15 2022-07-15 地址重映射单元、片上系统、终端及数据读写方法

Country Status (1)

Country Link
CN (1) CN117435522A (zh)

Similar Documents

Publication Publication Date Title
US11042297B2 (en) Techniques to configure a solid state drive to operate in a storage mode or a memory mode
JP6796304B2 (ja) 最終レベルキャッシュシステム及び対応する方法
CN113424160B (zh) 一种处理方法、装置及相关设备
WO2017112357A1 (en) Compressed caching of a logical-to-physical address table for nand-type flash memory
KR102051698B1 (ko) 단일 페이지 테이블 엔트리 내의 속성 필드들의 다중 세트들
KR100847968B1 (ko) 컴퓨팅 시스템, 전자 통신 디바이스, 컴퓨팅 시스템 운영 방법 및 정보 처리 방법
CN105938458B (zh) 软件定义的异构混合内存管理方法
US9594681B2 (en) Dynamically configurable memory
US20170109090A1 (en) System and method for page-by-page memory channel interleaving
US10628308B2 (en) Dynamic adjustment of memory channel interleave granularity
US11151052B2 (en) Reading sequential data from memory using a pivot table
JP7407134B2 (ja) 記憶システムをメインメモリとして使用するための方法および装置
US20170108914A1 (en) System and method for memory channel interleaving using a sliding threshold address
US10061709B2 (en) Systems and methods for accessing memory
CN112465689B (zh) 基于可见显存交换区的gpu不可见显存管理方法及系统
US20170108911A1 (en) System and method for page-by-page memory channel interleaving
WO2014172078A1 (en) A cache allocation scheme optimized for browsing applications
JP2024509954A (ja) メモリ共有制御方法及びデバイス、コンピュータデバイス、並びにシステム
CN110737607A (zh) 管理hmb内存的方法、装置、计算机设备及存储介质
CN117435522A (zh) 地址重映射单元、片上系统、终端及数据读写方法
CN107066208B (zh) 一种外存设备的非对称读写方法及nvm外存设备
CN117762835A (zh) 存储器、存储控制装置、片上系统、芯片及终端
CN117762236A (zh) 存储器、存储控制装置、片上系统及终端设备
CN117130976A (zh) 存储器、片上系统、终端及数据读写方法
CN118132501A (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