CN111796763A - 存储器系统、存储器控制器及存储器控制器的操作方法 - Google Patents
存储器系统、存储器控制器及存储器控制器的操作方法 Download PDFInfo
- Publication number
- CN111796763A CN111796763A CN201911156859.0A CN201911156859A CN111796763A CN 111796763 A CN111796763 A CN 111796763A CN 201911156859 A CN201911156859 A CN 201911156859A CN 111796763 A CN111796763 A CN 111796763A
- Authority
- CN
- China
- Prior art keywords
- memory
- area
- binary file
- address
- function
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种存储器系统。该存储器系统包括存储器装置和存储器控制器,存储器装置包括存储块,并且存储器控制器被配置成控制该存储器装置。存储器装置存储固件,该固件包括二进制文件,并且该二进制文件包括第一二进制文件和第二二进制文件。存储器控制器将固件加载到工作存储器中的第一区域,将第一二进制文件加载到第一区域中包括的第二区域,并且将第二二进制文件加载到包括在第一区域中并且不同于第二区域的第三区域。存储器控制器将关于与第二二进制文件中包括的目标函数相对应的入口函数的信息存储在不同于第一区域的第四区域中。确定第二区域的起始地址为固定值,并且动态地确定第三区域的起始地址。
Description
相关申请的交叉引用
本申请要求于2019年4月1日向韩国知识产权局提交的申请号为10-2019-0038088的韩国专利申请的优先权,其通过引用整体并入本文。
技术领域
各个实施例总体涉及存储器系统、存储器控制器及存储器控制器的操作方法。
背景技术
与存储装置相对应的存储器系统基于诸如计算机、例如智能手机和平板电脑的移动终端或各种其它电子装置中的任意一种的主机的请求来存储数据。存储器系统可以是一种将数据存储在诸如硬盘驱动器(HDD)的磁盘中的类型,或者是一种将数据存储在诸如固态驱动器(SDD)、通用闪存(UFS)装置以及嵌入式MMC(eMMC)装置的非易失性存储器中的类型。
存储器系统中的非易失性存储器可包括以下中的任意一种:只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)和铁电RAM(FRAM)。
存储器系统可进一步包括用于控制存储器装置的存储器控制器。存储器控制器可驱动固件,用于在启动和执行逻辑计算时控制存储器控制器的一般操作。
随着存储器控制器的功能逐渐变得更加多样和复杂,固件的大小也在增加。因此,用于加载固件的存储器的存储容量也在增加,这增加了存储器系统的总成本。
发明内容
各个实施例涉及一种能够优化用于加载固件的存储器的大小的存储器系统、存储器控制器及其操作方法。
而且,各个实施例涉及一种能够最小化存储器系统的总成本的存储器系统、存储器控制器及其操作方法。
在一个方面,将在本公开的实施例中描述的存储器系统可包括存储器装置和存储器控制器,存储器装置包括多个存储块,存储器控制器被配置成控制存储器装置。
存储器装置可存储固件,该固件包括多个二进制文件,该二进制文件包括第一二进制文件和第二二进制文件。
存储器控制器可将第一二进制文件加载到工作存储器的第一区域中包括的第二区域中,并且可将第二二进制文件加载到包括在第一区域中并且不同于第二区域的第三区域中。
存储器控制器可将关于与第二二进制文件中的目标函数相对应的入口函数的信息存储在不同于第一区域的第四区域中。
可确定第二区域的起始地址为固定值,并且可动态地确定第三区域的起始地址。
在调用目标函数时,存储器控制器可将第二二进制文件加载到第三区域。
第四区域与第一区域之间的偏移量可等于或大于阈值偏移量。
可根据存储器控制器的存储器寻址方案中使用的位来设置阈值偏移量。
可基于目标函数的编译时间地址、第二二进制文件的编译时间地址以及第三区域的起始地址来确定目标函数的地址。
存储器控制器可包括具有针对存储器地址的基于非映射的架构的处理器。
存储器控制器可将逻辑存储器地址和物理存储器地址设置为相同。
第一二进制文件可包括用于执行读取操作的函数、用于执行编程操作的函数和用于执行映射更新操作的函数中的至少一种。
第二二进制文件可包括用于执行启动操作的函数和用于执行后台操作的函数中的至少一种。
后台操作可包括垃圾收集(GC)操作、损耗均衡(WL)操作和映射清除操作中的至少一种。
在另一方面,将在本公开的实施例中描述的存储器控制器可包括:主机接口,被配置成与主机通信;存储器接口,被配置成与存储器装置通信;以及控制电路,被配置成控制存储器装置。
存储器装置可存储固件,该固件包括多个二进制文件,该二进制文件包括第一二进制文件和第二二进制文件。
控制电路可将第一二进制文件加载到工作存储器中的第一区域中包括的第二区域中,并且可将第二二进制文件加载到包括在第一区域中并且不同于第二区域的第三区域中。
控制电路可将关于与第二二进制文件中的目标函数相对应的入口函数的信息存储在不同于第一区域的第四区域中。
可确定第二区域的起始地址为固定值,并且可动态地确定第三区域的起始地址。
在调用目标函数时,存储器控制器可将第二二进制文件加载到第三区域中。
第四区域与第一区域之间的偏移量可等于或大于阈值偏移量。
可基于目标函数的编译时间地址、第二二进制文件的编译时间地址以及第三区域的起始地址来确定目标函数的地址。
在又一方面,将在本公开的实施例中描述的操作用于控制存储器装置的存储器控制器的方法可包括将存储器装置中存储的固件中的多个二进制文件之中的第一二进制文件加载到工作存储器的第一区域中包括的第二区域中。
操作存储器控制器的方法可包括将固件中包括的多个二进制文件之中的第二二进制文件加载到包括在第一区域中并且不同于第二区域的第三区域中。
操作存储器控制器的方法可包括将关于与第二二进制文件中的目标函数相对应的入口函数的信息存储在不同于第一区域的第四区域中。
可确定第二区域的起始地址为固定值,并且可动态地确定第三区域的起始地址。
操作存储器控制器的方法可进一步包括在调用目标函数时,将第二二进制文件加载到第三区域中。
第四区域与第一区域之间的偏移量可等于或大于阈值偏移量。
可基于目标函数的编译时间地址、第二二进制文件的编译时间地址以及第三区域的起始地址来确定目标函数的地址。
在又一方面中,将在本公开的实施例中描述的存储器系统可包括存储器装置,该存储器装置适于存储固件,该固件包括多个二进制文件,该二进制文件包括不可覆盖(non-overlayable)二进制文件和可覆盖(overlayable)二进制文件。
存储器系统可进一步包括控制器,该控制器包括具有第一区域和第二区域的存储器。
控制器可将不可覆盖二进制文件加载到第一区域中。
当调用与可覆盖二进制文件相对应的函数时,控制器可将可覆盖二进制文件加载到第二区域中。
本公开的实施例可提供一种能够优化用于加载固件的存储器的大小的存储器系统、存储器控制器及存储器控制器的操作方法。
而且,本公开的实施例可提供一种能够最小化存储器系统的总成本的存储器系统、存储器控制器及存储器控制器的操作方法。
附图说明
图1是示意性地示出根据实施例的存储器系统的框图。
图2是示意性地示出根据实施例的存储器装置的框图。
图3是示出根据实施例的固件的结构的示图。
图4是示出根据实施例的存储器控制器加载存储器装置中存储的固件中的一些二进制文件的操作的示图。
图5是示出根据实施例的存储器控制器执行第二二进制文件中包括的目标函数的操作的示图。
图6是示出根据实施例的存储器控制器加载固件中包括的二进制文件以执行目标函数的操作的示图。
图7是示出根据实施例的存储器控制器调用目标函数的操作方法的流程图。
图8是示出根据实施例的固件中的二进制文件与加载到存储器控制器的工作存储器中的二进制文件之间的对应关系的示例的示图。
图9是示出根据实施例的加载到存储器控制器的工作存储器中的二进制文件与覆盖管理器之间的对应关系的示例的示图。
图10是示出根据实施例的操作存储器控制器的方法的流程图。
图11是示意性地示出根据实施例的计算系统的框图。
具体实施方式
下面通过各个实施例并参照附图描述存储器系统、存储器控制器及存储器控制器的操作方法。
图1是示意性地示出根据实施例的存储器系统100的框图。
参照图1,存储器系统100可包括存储数据的存储器装置110和控制存储器装置110的存储器控制器120。
存储器装置110包括多个存储块,并且响应于存储器控制器120的控制而进行操作。存储器装置110的操作可包括例如读取操作、编程操作(也称为写入操作)及擦除操作。
存储器装置110可包括存储器单元阵列,该存储器单元阵列包括存储数据的多个存储器单元。这种存储器单元阵列可存在于存储块中。
例如,存储器装置110可由双倍数据速率(DDR)同步动态随机存取存储器(SDRAM)、低功率双倍数据速率4(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器、电阻式随机存取存储器(RRAM)、相变存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)或自旋转移力矩随机存取存储器(STT-RAM)来实现。
存储器装置110可以三维阵列结构来实现。本实施例不仅可应用于电荷存储层由导电浮栅配置的闪速存储器装置,而且还可应用于电荷存储层由介电层配置的电荷撷取闪存(CTF)。
存储器装置110被配置成从存储器控制器120接收命令和地址,并且访问存储器单元阵列中通过地址选择的区域。换言之,存储器装置110可对通过地址选择的区域执行与命令相对应的操作。
例如,存储器装置110可执行编程操作、读取操作和擦除操作。就此而言,在编程操作中,存储器装置110可将数据编程到通过地址选择的区域中。在读取操作中,存储器装置110可从通过地址选择的区域中读取数据。在擦除操作中,存储器装置110可擦除通过地址选择的区域中存储的数据。
存储器控制器120可根据主机50的请求来控制存储器装置110的操作,或者不考虑主机50的请求而控制存储器装置110的操作。
例如,存储器控制器120可控制对存储器装置110的写入(或编程)操作、读取操作、擦除操作和后台操作。例如,后台操作可以是垃圾收集(GC)操作、损耗均衡(WL)操作、坏块管理(BBM)操作等。
存储器控制器120可包括主机接口(I/F)121、存储器接口122及控制电路123。
主机接口121提供用于与主机50通信的接口。当从主机50接收命令时,控制电路123可通过主机接口121接收命令,然后可执行处理所接收的命令的操作。
存储器接口122与存储器装置110联接,从而提供与存储器装置110通信的接口。也就是说,存储器接口122可被配置成响应于控制电路123的控制而提供存储器装置110与存储器控制器120之间的接口。
控制电路123可执行存储器控制器120的一般控制操作,从而控制存储器装置110的操作。控制电路123可包括处理器124、工作存储器125和错误检测和校正(ECC)电路126中的至少一个。
处理器124可控制存储器控制器120的一般操作并且执行逻辑计算。处理器124可通过主机接口121与主机50通信,并且可通过存储器接口122与存储器装置110通信。
可使用特定的架构来设计处理器124。
例如,可使用被优化以实现微控制器单元(MCU)的ARM Cortex-M架构来设计处理器124。
ARM Cortex-M架构使用32位存储器寻址方案。
ARM Cortex-M架构可支持ARM Thumb指令,并且可被扩展为支持被定义为Thumb-2指令集的16位和32位指令。
在ARM Cortex-M架构中,可由被称为嵌套矢量中断控制器(NVIC)的内置中断控制器来管理中断处理。内置中断控制器可执行中断和系统异常的自动优先化、嵌套和屏蔽功能。
进一步地,ARM Cortex-M架构可支持能够分开管理存储器空间的存储器保护单元(MPU)。
ARM Cortex-M架构是一种针对存储器地址的基于非映射的架构。基于非映射的架构不使用提供逻辑存储器地址与物理存储器地址之间的映射功能的存储器管理单元(MMU)。在不使用存储器管理单元的情况下,可将逻辑存储器地址和物理存储器地址设置为相同。
处理器124可执行闪存转换层(FTL)的功能。处理器124可通过闪存转换层(FTL)将由主机50提供的逻辑块地址(LBA)转换成物理块地址(PBA)。闪存转换层(FTL)可接收逻辑块地址(LBA),并且通过使用映射表来将该逻辑块地址转换成物理块地址(PBA)。根据映射单元,存在闪存转换层的各种地址映射方法。代表性的地址映射方法包括页面映射方法、块映射方法和混合映射方法。
处理器124被配置成使从主机50接收的数据随机化。例如,处理器124可通过使用随机化种子来使从主机接收的数据随机化。经随机化数据作为待存储的数据被提供到存储器装置110,并且被编程在存储器单元阵列中。
处理器124被配置成在读取操作中使从存储器装置110接收的数据去随机化。例如,处理器124可通过使用去随机化种子来使从存储器装置110接收的数据去随机化。经去随机化数据可被输出到主机50。
处理器124可通过执行固件(FW)来控制存储器控制器120的操作。换言之,为了控制存储器控制器120的一般操作并执行逻辑计算,处理器124可在启动时执行(或驱动)加载到工作存储器125的固件。例如,固件可存储在存储器装置110中,并被加载到工作存储器125中。
作为在存储器系统100中执行的程序的固件可包括例如闪存转换层(FTL)、主机接口层(HIL)及闪存接口层(FIL)。闪存转换层(FTL)执行从主机50向存储器系统100请求的逻辑地址与存储器装置110的物理地址之间的转换功能。主机接口层(HIL)用于分析从主机50向作为存储装置的存储器系统100请求的命令,并将该命令传送到闪存转换层(FTL)。闪存接口层(FIL)将从闪存转换层(FTL)指示的命令传送到存储器装置110。
工作存储器125可存储驱动存储器控制器120所需的固件、程序代码、命令和数据。
例如作为易失性存储器的工作存储器125可包括静态RAM(SRAM)、动态RAM(DRAM)和同步DRAM(SDRAM)中的至少一种。
在处理器124使用ARM Cortex-M架构的情况下,工作存储器125可以是紧密联接的存储器(TCM)。
错误检测和校正电路126可被配置成通过使用错误校正码来检测工作存储器125中存储的数据(即,从存储器装置110传送的读取数据)的错误位,并且校正检测到的错误位。
错误检测和校正电路126可被配置成通过使用错误校正码来解码数据。错误检测和校正电路126可由各种代码解码器中的任意一种来实现。例如,可使用执行非系统代码解码的解码器或执行系统代码解码的解码器。
例如,错误检测和校正电路126可针对每个读取数据以扇区为单位来检测错误位。即,每个读取数据可由多个扇区构成。扇区可表示小于作为闪存读取单位的页面的数据单位。构成每个读取数据的扇区可通过地址媒介彼此匹配。
错误检测和校正电路126可以扇区为单位计算位错误率(BER),并且可确定错误是否是可校正的。例如,在位错误率(BER)大于参考值的情况下,错误检测和校正电路126可确定相应的扇区是不可校正的或失败的。相反,在位错误率(BER)小于参考值的情况下,错误检测和校正电路126可确定相应的扇区是可校正的或通过的。
错误检测和校正电路126可对所有读取数据顺序地执行错误检测和校正操作。在读取数据中包括的扇区是可校正的情况下,错误检测和校正电路126可省略对下一读取数据的相应扇区的错误检测和校正操作。如果对所有读取数据的错误检测和校正操作以这种方式结束,则错误检测和校正电路126可检测最后被确定为不可校正的扇区。可能存在被确定为不可校正的一个或多个扇区。错误检测和校正电路126可将关于被确定为不可校正的扇区的信息(例如,地址信息)传送到处理器124。
总线127可被配置成在存储器控制器120的组件121、122、124、125和126之间提供通道。总线127可包括例如用于传送各种控制信号、命令等的控制总线、用于传送各种数据的数据总线等。
如图所示和所述,存储器控制器120的组件121、122、124、125和126的配置仅是示例性的。可省略这些组件中的一个或多个,并且/或者可将这些组件中的一个或多个的功能组合到单个集成组件中。当然,存储器控制器120可包括图1中未示出的附加组件。
参照图2进一步详细地描述存储器装置110。
图2是示意性地示出根据实施例的存储器装置110的框图。
参照图2,存储器装置110可包括存储器单元阵列210、地址解码器220、读取和写入电路230、控制逻辑240以及电压生成电路250。
存储器单元阵列210可包括多个存储块BLK1至BLKz(其中,z是2或更大的自然数)。
在多个存储块BLK1至BLKz中,可设置多个字线WL和多个位线BL,并且可布置多个存储器单元(MC)。
多个存储块BLK1至BLKz可通过多个字线WL联接到地址解码器220。多个存储块BLK1至BLKz可通过多个位线BL联接到读取和写入电路230。
多个存储块BLK1至BLKz中的每一个可包括多个存储器单元。例如,多个存储器单元可以是非易失性存储器单元,并且可由具有垂直沟道结构的非易失性存储器单元来配置。存储器单元阵列210可由二维结构的存储器单元阵列或三维结构的存储器单元阵列来配置。
存储器单元阵列210中的多个存储器单元中的每一个可存储至少1位数据。例如,存储器单元阵列210中的多个存储器单元中的每一个可以是存储1位数据的单层单元(SLC)。再例如,存储器单元阵列210中的多个存储器单元中的每一个可以是存储2位数据的多层单元(MLC)。再例如,存储器单元阵列210中的多个存储器单元中的每一个可以是存储3位数据的三层单元(TLC)。再例如,存储器单元阵列210中的多个存储器单元中的每一个可以是存储4位数据的四层单元(QLC)。又例如,存储器单元阵列210可包括多个存储器单元,多个存储器单元中的每一个存储5位或更多位数据。
上面参照图1描述的固件可存储在上述多个存储块中的至少一个中。下面将参照图3详细地描述存储器装置110中存储的固件的结构。
参照图2,地址解码器220、读取和写入电路230、控制逻辑240和电压生成电路250可操作为驱动存储器单元阵列210的外围电路。
地址解码器220可通过多个字线WL联接到存储器单元阵列210。地址解码器220可被配置成响应于控制逻辑240的控制进行操作。地址解码器220可通过存储器装置110中的输入/输出缓冲器来接收地址。
地址解码器220可被配置成对所接收的地址中的块地址进行解码。地址解码器220可根据经解码块地址来选择至少一个存储块。在读取操作期间,地址解码器220可将电压生成电路250生成的读取电压Vread施加到所选择的字线,并且可将通过电压Vpass施加到剩余未选择的字线。进一步地,在编程验证操作期间,地址解码器220可将通过电压生成电路250生成的验证电压施加到所选择的字线,并且可将通过电压Vpass施加到剩余的未选择的字线。
地址解码器220可被配置成对所接收的地址中的列地址进行解码。地址解码器220可将解码的列地址传送到读取和写入电路230。
可以页面为单位来执行存储器装置110的读取操作和编程操作。在请求读取操作或编程操作时接收的地址可包括块地址、行地址和列地址。
地址解码器220可根据块地址和行地址来选择一个存储块和一个字线。列地址可通过地址解码器220进行解码,并被提供到读取和写入电路230。
地址解码器220可包括块解码器、行解码器、列解码器以及地址缓冲器中的至少一个。
读取和写入电路230可包括多个页面缓冲器PB。读取和写入电路230可在存储器单元阵列210的读取操作中作为读取电路来操作,并且可在存储器单元阵列210的写入操作中作为写入电路来操作。
上述读取和写入电路230可包括页面缓冲器电路或数据寄存器电路。例如,数据寄存器电路可包括用于执行数据处理功能的数据缓冲器,并且可进一步包括用于执行高速缓存功能的高速缓存缓冲器。
多个页面缓冲器PB可通过多个位线BL联接到存储器单元阵列210。在读取操作和编程验证操作中,多个页面缓冲器PB可连续地向与存储器单元联接的位线提供感测电流,以感测该存储器单元的阈值电压(Vth)。进一步地,多个页面缓冲器PB可通过感测节点感测根据相应存储器单元的编程状态而改变的电流量来锁存感测数据。读取和写入电路230可响应于从控制逻辑240输出的页面缓冲器控制信号进行操作。
在读取操作中,读取和写入电路230通过感测存储器单元的数据来暂时存储读取数据,然后将数据DATA输出到存储器装置110的输入/输出缓冲器。在实施例中,读取和写入电路230除了包括页面缓冲器(或页面寄存器)之外,还可包括列选择电路。
控制逻辑240可与地址解码器220、读取和写入电路230以及电压生成电路250联接。控制逻辑240可通过存储器装置110的输入/输出缓冲器接收命令CMD和控制信号CTRL。
控制逻辑240可被配置成响应于控制信号CTRL来控制存储器装置110的一般操作。进一步地,控制逻辑240可输出用于调整多个页面缓冲器PB的感测节点的预充电电势电平的控制信号。
控制逻辑240可控制读取和写入电路230来执行存储器单元阵列210的读取操作。
电压生成电路250可在读取操作中响应于从控制逻辑240输出的电压生成电路控制信号而生成读取电压Vread和通过电压Vpass。
图3是示出根据实施例的固件(FW)的示图。
如上面参照图1所述,为了使存储器控制器120驱动固件,需要将固件加载到工作存储器125中。
为了将整个固件加载到工作存储器125中,工作存储器125的存储容量应当大于或等于固件的总大小。然而,随着固件大小增加,工作存储器125的成本也增加。
因此,如图3所示,固件可被配置成包括多个二进制文件。存储器控制器120可仅将固件中所有二进制文件之中的一些二进制文件加载到工作存储器125中。在这种情况下,因为工作存储器125不需要确保容纳固件的总大小的存储容量来驱动固件,所以可降低工作存储器125的成本。
也就是说,如果仅固件中的多个二进制文件中的一些二进制文件在运行时被动态加载到工作存储器125中,则可以有效地使用工作存储器125,从而降低工作存储器125的成本。这种技术可被称为运行时覆盖技术(runtime overlay technique)。
存在两种类型的运行时覆盖技术:静态运行时覆盖技术和动态运行时覆盖技术。在静态运行时覆盖技术中,可将特定二进制文件仅加载到工作存储器125的特定区域。另一方面,在动态运行时覆盖技术中,可将二进制文件加载到工作存储器125的所有区域。
当比较上述两种运行时覆盖技术时,静态运行时覆盖技术的问题在于需要保留工作存储器125的特定区域来操作特定二进制文件。因此,当与静态运行时覆盖技术相比时,动态运行时覆盖技术的优点在于可以有效地使用工作存储器125。
然而,在使用动态运行时覆盖技术的情况下,加载到工作存储器125中的二进制文件的物理存储器地址可被动态地改变。因此,需要一种模块,该模块管理与加载到工作存储器125的二进制文件中包括的函数相对应的物理存储器地址的改变,从而管理相应的函数,使得该函数可被正常调用。
特别地,在存储器控制器120的处理器124中使用ARM Cortex-M架构的情况下,因为未使用存储器管理单元(MMU),所以将逻辑存储器地址和物理存储器地址设置为相同。因此,当加载到工作存储器125的二进制文件的物理存储器地址动态改变时,不可能固定与该物理存储器地址相对应的逻辑存储器地址。
此外,在使用ARM Cortex-M架构的情况下,由于ARM编译器的优化函数,当调用函数时,使用基于程序计数器(PC)的相对位置信息。因此,如果加载到工作存储器125中的二进制文件的物理存储器地址改变,则可能无法正确执行函数的调用。
另外,在使用动态运行时覆盖技术的情况下,在动态加载固件中的二进制文件的进程中和调用所加载的二进制文件的函数的进程中可能会产生开销。
因此,为了最小化由于使用动态运行时覆盖技术而可能发生的这些问题,本公开的实施例提出仅对固件中的多个二进制文件中的一些使用动态运行时覆盖技术。
换言之,在本公开的实施例中,可将固件中的多个二进制文件之中包括对操作性能至关重要的函数的二进制文件设置为不可覆盖二进制文件。认定特定函数是否至关重要可能会因系统配置而异。
二进制文件不可覆盖的事实表示运行时覆盖技术未应用于相应的二进制文件。不可覆盖二进制文件可能一直处于被加载到工作存储器125中的状态。
对操作性能至关重要的函数的示例可以是存储器控制器120高频调用的函数,例如用于执行读取操作的函数、用于执行编程操作的函数以及用于执行映射更新操作的函数。
另一方面,可将包括对操作性能并非至关重要的函数的二进制文件设置为可覆盖二进制文件。
二进制文件可覆盖的事实表示运行时覆盖技术适用于相应的二进制文件。可覆盖二进制文件在运行时可被动态地加载到工作存储器125中。
对操作性能并非至关重要的函数的示例可以是存储器控制器120低频调用的函数,例如用于执行启动操作的函数和用于执行后台操作(例如,垃圾收集(GC)操作、损耗均衡(WL)操作和映射清除操作)的函数。
例如,如图3所示,在固件中的多个二进制文件之中,第一二进制文件可以是不可覆盖二进制文件,第二二进制文件、第三二进制文件及第四二进制文件可以是可覆盖二进制文件。
如上所述,对操作性能至关重要的函数可包括在不可覆盖的第一二进制文件中。例如,用于执行读取操作的函数FUNC_Read、用于执行编程操作的函数FUNC_Program以及用于执行映射更新操作的函数FUNC_MapUpdate可包括在第一二进制文件中。
另一方面,对操作性能并非至关重要的函数可包括在可覆盖的第二二进制文件、第三二进制文件和第四二进制文件中的一个中。例如,用于执行启动操作的函数FUNC_Boot可包括在第二二进制文件中,并且用于执行垃圾收集操作的函数FUNC_GC可包括在第三二进制文件中。
对于固件中的多个二进制文件中的每一个,当编译这种二进制文件时,可确定对应于每个二进制文件的起始地址。这可被称为每个二进制文件的编译时间地址。
而且,即使对于每个二进制文件中的每个函数,当编译每个函数时,可确定对应于该函数的起始地址。这可被称为每个函数的编译时间地址。
例如,在编译第一二进制文件的时间,可确定第一二进制文件的编译时间地址为0x00000000。在编译第二二进制文件、第三二进制文件和第四二进制文件的时间,可确定第二二进制文件、第三二进制文件和第四二进制文件的编译时间地址为0x03000000。
如上所述,例如,可确定第二二进制文件、第三二进制文件和第四二进制文件的编译时间地址值相同。其原因在于,第二二进制文件、第三二进制文件和第四二进制文件是可覆盖二进制文件,并且可覆盖二进制文件被加载到工作存储器125的地址是动态地确定的,并且可覆盖二进制文件在工作存储器125中不重叠。
参照图4至图9,作为示例描述了固件中的二进制文件之中不可覆盖的第一二进制文件和可覆盖的第二二进制文件被加载到存储器控制器120的工作存储器125中的情况。
图4是示出根据实施例的存储器控制器120加载存储器装置110中存储的固件中的一些二进制文件的操作的示图。
参照图4,可将存储器装置110中存储的固件加载到存储器控制器120的工作存储器125中的第一区域A。第一区域A是被分配来加载固件的区域,并且固件中的二进制文件可被加载到第一区域A中的一部分中。
加载固件的第一区域A可包括第二区域B和第三区域C。第二区域B是待加载不可覆盖二进制文件的区域,并且可确定第二区域B的起始地址为固定值。
另一方面,与第二区域B不同,第三区域C是待加载可覆盖二进制文件的区域,并且可动态地确定第三区域C的起始地址。
关于动态地确定第三区域C的起始地址的时间,例如,可在可覆盖二进制文件被加载到第三区域C的时间动态地确定第三区域C的起始地址。
再例如,可在可覆盖二进制文件被加载到第三区域C的时间之前动态地确定第三区域C的起始地址。
在图4中,因为第一二进制文件是不可覆盖二进制文件,所以可将其加载到第二区域B。另一方面,因为第二二进制文件是可覆盖二进制文件,所以可将其加载到第三区域C。
图5是示出根据实施例的存储器控制器120执行第二二进制文件中的目标函数的操作的示图。
作为示例,描述了以下操作:在将第一二进制文件加载到第二区域B,将第二二进制文件加载到第三区域C的情况下,第一二进制文件中的源函数SOURCE_FUNC调用第二二进制文件中的目标函数TARGET_FUNC。
然而,应当注意的是,调用第二二进制文件中的目标函数的源函数不一定包括在第一二进制文件中。源函数可包括在第二二进制文件中,或者可包括在除第二二进制文件之外的另一可覆盖二进制文件中。
如上参照图4所述,当将第二二进制文件加载到第三区域C时,在加载第二二进制文件的时间,动态地确定第三区域C的起始地址。因此,在将第二二进制文件加载到第三区域C的时间,也动态地确定第二二进制文件中的目标函数TARGET_FUNC的地址。因此,因为源函数SOURCE_FUNC不能预先知道目标函数TARGET_FUNC的地址,所以源函数SOURCE_FUNC不能直接调用目标函数TARGET_FUNC。
因此,源函数SOURCE_FUNC调用与该目标函数TARGET_FUNC相对应的入口函数ENTRY_FUNC,从而调用与该入口函数ENTRY_FUNC相对应的目标函数TARGET_FUNC。第一二进制文件中的函数可基于相应的入口函数的绝对地址信息来调用相应的入口函数。
因为与入口函数相对应的目标函数包括在第二二进制文件中,所以目标函数的地址可被动态地改变。因此,需要动态地管理入口函数与目标函数之间的对应关系的模块。这种模块可被称为覆盖管理器。
相对于第二二进制文件中的目标函数,覆盖管理器可存储关于与目标函数相对应的入口函数的信息。
关于入口函数的信息可存储在不同于第一区域A的第四区域D中。
关于第四区域D的位置,该第四区域D可包括在其中包括第一区域A的工作存储器125中。例如,在工作存储器125是紧密联接存储器(TCM)的情况下,第一区域A可包括在指令TCM(ITCM)中,并且第四区域D可包括在数据TCM(DTCM)中。
另一方面,第四区域D可包括在与包括第一区域A的工作存储器125不同的单独的工作存储器中。
当源函数SOURCE_FUNC调用第四区域D中存储的入口函数ENTRY_FUNC时,覆盖管理器可控制与待被调用的入口函数ENTRY_FUNC相对应的目标函数TARGET_FUNC。
图5示出存储器控制器120在包括目标函数TARGET_FUNC的第二二进制文件被加载到工作存储器125中的第三区域C的状态下的操作。
然而,第二二进制文件被动态加载到工作存储器125中。因此,当源函数SOURCE_FUNC调用第四区域D中存储的入口函数ENTRY_FUNC时,第二二进制文件可能处于未被加载到工作存储器125中的状态。
在这种情况下,下面参照图6详细描述将第二二进制文件加载到工作存储器125以允许调用第二二进制文件中的目标函数TARGET_FUNC的操作。
图6是示出根据实施例的存储器控制器120加载固件中的二进制文件以执行目标函数的操作的示图。
参照图6,首先,第一二进制文件中的源函数SOURCE_FUNC调用第四区域D中的入口函数ENTRY_FUNC。
覆盖管理器检查与该入口函数ENTRY_FUNC相对应的目标函数TARGET_FUNC是否处于当前未被加载到工作存储器125的状态。
覆盖管理器在存储器装置110中存储的固件中搜索存储目标函数TARGET_FUNC的第二二进制文件。覆盖管理器可将第二二进制文件加载到工作存储器125的第一区域A中的第三区域C。如果第二二进制文件被加载到第三区域C,则之后可调用目标函数TARGET_FUNC。
图7是示出根据实施例的存储器控制器120调用目标函数的操作方法的流程图。
描述了存储器控制器120根据上面参照图5和图6描述的操作调用目标函数的示例。
参照图7,首先,调用与目标函数相对应的入口函数(S710)。如上所述,加载到存储器控制器120的工作存储器125中的第一二进制文件中的源函数可调用与目标函数相对应的入口函数。
如果在步骤S710调用了入口函数,则覆盖管理器确定与入口函数相对应的目标函数是否被加载到工作存储器125中(S720)。
在确定目标函数被加载到工作存储器125的情况下(S720,是),覆盖管理器调用与入口函数相对应的目标函数(S730)。
在确定目标函数未被加载到工作存储器125的情况下(S720,否),覆盖管理器搜索其中包括与入口函数相对应的目标函数的二进制文件(S740)。
如果在搜索中找到包括目标函数的二进制文件,则覆盖管理器将该二进制文件加载到工作存储器125中(S750)。此后,覆盖管理器调用与入口函数相对应的目标函数(S730)。
例如,上述图7的流程图也可由以下伪代码表示。
参照图8和图9描述固件中的二进制文件、加载到工作存储器125的二进制文件以及覆盖管理器之间的对应关系。
图8是示出根据实施例的固件中的二进制文件与加载到存储器控制器120的工作存储器125中的二进制文件之间的对应关系的示例的示图。
在编译固件的进程中,可确定固件中的多个二进制文件中的每一个的编译时间地址。而且,可确定每个二进制文件中的每个函数的编译时间地址。
参照图8,第一二进制文件的编译时间地址为0x00000000。可确定工作存储器125中加载第一二进制文件的区域的起始地址为0x00000000,并且为固定值。
换言之,可确定第一二进制文件的编译时间地址与加载第一二进制文件的区域的起始地址相同。
另一方面,因为工作存储器125中加载第二二进制文件的区域的起始地址是动态地确定的,所以可确定第二二进制文件的编译时间地址与加载第二二进制文件的区域的起始地址彼此不同。
在图8中,第二二进制文件的编译时间地址为0x03000000,但工作存储器125中加载第二二进制文件的区域的起始地址是不同的,为0x04000000。
进一步地,加载到工作存储器125中的第二二进制文件中的目标函数TARGET_FUNC的地址不同于目标函数TARGET_FUNC的编译时间地址。加载到工作存储器125中的第二二进制文件中的目标函数TARGET_FUNC的地址可基于目标函数TARGET_FUNC的编译时间地址、第二二进制文件的编译时间地址以及工作存储器125中加载第二二进制文件的区域的起始地址来确定。
详细地,当第二二进制文件被加载到工作存储器125时,第二二进制文件中的函数的地址中的每一个具有与第二二进制文件的编译时间地址和工作存储器125中加载第二二进制文件的区域的起始地址之间的偏移量相对应的差异。因此,可确定目标函数TARGET_FUNC的地址为通过将相应偏移量应用于目标函数TARGET_FUNC的编译时间地址而获得的值。
例如,在图8中,假设目标函数TARGET_FUNC的编译时间地址为0x03300000,第二二进制文件的编译时间地址为0x03000000,并且工作存储器125中加载第二二进制文件的区域的起始地址为0x04000000。在这种情况下,确定加载到工作存储器125的目标函数TARGET_FUNC的地址为(0x03300000-0x03000000+0x04000000)=0x04300000。
例如,图8中确定目标函数TARGET_FUNC的地址的操作也可通过下面的伪代码来表示。
图9是示出根据实施例的加载到存储器控制器120的工作存储器125中的二进制文件与覆盖管理器之间的对应关系的示图。
类似于图8,作为示例描述第二二进制文件的编译时间地址为0x03000000,但工作存储器125中加载第二二进制文件的区域的起始地址为0x04000000的情况。
为了执行第二二进制文件中的目标函数TARGET_FUNC,第一二进制文件中的源函数SOURCE_FUNC首先调用与该目标函数TARGET_FUNC相对应的入口函数ENTRY_FUNC。为了使源函数SOURCE_FUNC调用相应的入口函数ENTRY_FUNC,源函数SOURCE_FUNC需要能够访问相应的入口函数ENTRY_FUNC的绝对地址,而不考虑源函数SOURCE_FUNC的位置。
为此,通过限制存储相应的入口函数ENTRY_FUNC的区域,可以允许源函数SOURCE_FUNC访问相应的入口函数ENTRY_FUNC的绝对地址,而不考虑加载第一二进制文件的位置。
例如,可将存储相应的入口函数ENTRY_FUNC的区域和加载固件的区域之间的偏移量设置为大于或等于阈值偏移量,该阈值偏移量可以是预设的。阈值偏移量可根据存储器控制器120的存储器寻址方案中使用的位来设置。
作为示例,描述存储器控制器120包括通过使用ARM Cortex-M架构设计的处理器的情况。如上所述,ARM Cortex-M架构作为存储器地址的基于非映射的架构,不使用存储器管理单元。
如上参照图1所述,ARM Cortex-M架构使用32位存储器寻址方案。即,在利用ARMCortex-M架构设计存储器控制器120中的处理器124的情况下,在存储器控制器120的存储器寻址方案中使用的位为32位。
当利用ARM Cortex-M架构设计的处理器124调用函数时,可分支与当前程序计数器(PC)的偏移量处于32MB以内的函数。然而,在处理器采用不同于ARM Cortex-M架构的架构设计的情况下,可分支偏移量可被设置为不同于32MB。
在调用基于当前程序计数器具有大于或等于32MB的偏移量的函数的情况下,ARMCortex-M架构支持通过使用切换函数(veneer function)来跳转到相应函数的绝对地址。
因此,在存储器控制器120包括使用ARM Cortex-M架构的处理器124的情况下,如果存储入口函数的区域和加载固件的区域之间的偏移量大于或等于阈值偏移量(即,32MB),则源函数可访问入口函数的绝对地址。
参照图9,在工作存储器125中,加载固件的区域被设置为从0x00000000至0x10000000,并且存储入口函数ENTRY_FUNC的区域从0x20000000开始。
存储入口函数ENTRY_FUNC的区域和加载固件的区域之间的偏移量为0x10000000=256MB,大于或等于阈值偏移量Thr_Offset 32MB。因此,当源函数SOURCE_FUNC调用入口函数ENTRY_FUNC时,源函数SOURCE_FUNC可通过使用入口函数ENTRY_FUNC的绝对地址0x20007000来调用入口函数ENTRY_FUNC。
如果入口函数ENTRY_FUNC被调用,则覆盖管理器可调用与被调用的入口函数ENTRY_FUNC相对应的目标函数TARGET_FUNC。
在这种情况下,如上参照图8所述,加载到工作存储器125中的第二二进制文件中的目标函数TARGET_FUNC的地址不同于目标函数TARGET_FUNC的编译时间地址。因此,加载到工作存储器125中的第二二进制文件中的目标函数TARGET_FUNC的地址0x04300000可基于目标函数TARGET_FUNC的编译时间地址0x03300000、第二二进制文件的编译时间地址0x03000000以及工作存储器125中加载第二二进制文件的区域的起始地址0x04000000来确定。
图10是示出根据实施例的操作存储器控制器120的方法的流程图。
参照图10,操作存储器控制器120以控制存储器装置110的方法可包括将存储器装置110中存储的固件中的多个二进制文件之中的第一二进制文件加载到工作存储器125的第一区域中包括的第二区域中(S1010)。
操作存储器控制器120以控制存储器装置110的方法可包括将存储器装置110中存储的固件中的多个二进制文件之中的第二二进制文件加载到包括在第一区域中并且不同于第二区域的第三区域中(S1020)。
操作存储器控制器120以控制存储器装置110的方法可包括将关于与第二二进制文件中的每个目标函数相对应的入口函数的信息存储在不同于第一区域的第四区域中(S1030)。
存储器控制器120可包括工作存储器125,并且该工作存储器125可包括第一区域。
可确定第二区域的起始地址为固定值,并且可动态地确定第三区域的起始地址。确定第三区域的起始地址的时间可以是例如将第二二进制文件加载到第三区域的时间。再例如,确定第三区域的起始地址的时间可以是在将第二二进制文件加载到第三区域的时间之前。
操作存储器控制器120以控制存储器装置110的方法可进一步包括在调用目标函数时第二二进制文件未被加载到第三区域的情况下,将第二二进制文件加载到第三区域。
图11是示意性地示出根据实施例的计算系统1100的框图。
参照图11,计算系统1100可包括存储器系统100、中央处理单元(CPU)1110、随机存取存储器(RAM)1120、用户接口/用户体验(UI/UX)模块1130、基于至少一种通信方案的通信模块1140以及电联接到系统总线1160的电源管理模块1150。
计算系统1100可以是个人计算机(PC),或者包括诸如智能手机和平板电脑的移动终端或各种其它电子装置中的任意一种。
计算系统1100可进一步包括用于提供操作电压的电池,并且可进一步包括应用芯片组、图形相关模块、相机图像处理器(CIS)、DRAM等。如本领域技术人员所认识到的,计算系统1100可包括其它组件。
存储器系统100可以是一种将数据存储在磁盘中的类型,诸如硬盘驱动器(HDD),或者是一种将数据存储在非易失性存储器中的类型,诸如固态驱动器(SDD)、通用闪存(UFS)装置以及嵌入式MMC(eMMC)装置。
非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)和铁电RAM(FRAM)。
另外,存储器系统100可被实现为各种类型的存储装置中的任意一种,并且/或者可安装在各种电子装置中的任意一种。例如,存储器系统100可安装到物联网(IoT)装置或需要最小化存储器使用量的小型家用电器。
通过本公开的上述实施例,可提供一种能够优化用于加载固件的存储器的大小的存储器系统、存储器控制器及存储器控制器的操作方法。
而且,本公开的实施例可提供一种能够最小化存储器系统的总成本的存储器系统、存储器控制器及存储器控制器的操作方法。
虽然已经示出和描述了各个实施例,但本领域的技术人员根据本公开将理解的是,在不脱离本公开的范围和精神的情况下,可进行各种修改、添加和替换。因此,所公开的实施例应当仅被认为是描述性的,而不是用于限制本发明的范围。本发明的范围由所附权利要求及其等同方案限定。
Claims (18)
1.一种存储器系统,包括:
存储器装置,包括多个存储块;以及
存储器控制器,控制所述存储器装置,
其中所述存储器装置存储固件,所述固件包括多个二进制文件,所述多个二进制文件包括第一二进制文件和第二二进制文件,
其中所述存储器控制器将所述第一二进制文件加载到工作存储器的第一区域中包括的第二区域中,将所述第二二进制文件加载到包括在所述第一区域中并且不同于所述第二区域的第三区域中,并且将关于与所述第二二进制文件中的目标函数相对应的入口函数的信息存储在不同于所述第一区域的第四区域中,并且
其中确定所述第二区域的起始地址为固定值,并且动态地确定所述第三区域的起始地址。
2.根据权利要求1所述的存储器系统,其中在调用所述目标函数的时间,所述存储器控制器将所述第二二进制文件加载到所述第三区域中。
3.根据权利要求1所述的存储器系统,其中所述第四区域与所述第一区域之间的偏移量大于或等于阈值偏移量。
4.根据权利要求3所述的存储器系统,其中根据所述存储器控制器的存储器寻址方案中使用的位来设置所述阈值偏移量。
5.根据权利要求1所述的存储器系统,其中基于所述目标函数的编译时间地址、所述第二二进制文件的编译时间地址以及所述第三区域的起始地址来确定所述目标函数的地址。
6.根据权利要求1所述的存储器系统,其中所述存储器控制器包括处理器,所述处理器具有针对存储器地址的基于非映射的架构。
7.根据权利要求1所述的存储器系统,其中所述存储器控制器将逻辑存储器地址和物理存储器地址设置为相同。
8.根据权利要求1所述的存储器系统,其中所述第一二进制文件包括用于执行读取操作的函数、用于执行编程操作的函数和用于执行映射更新操作的函数中的至少一种。
9.根据权利要求1所述的存储器系统,其中所述第二二进制文件包括用于执行启动操作的函数和用于执行后台操作的函数中的至少一种。
10.根据权利要求9所述的存储器系统,其中所述后台操作包括垃圾收集操作即GC操作、损耗均衡操作即WL操作和映射清除操作中的至少一种。
11.一种存储器控制器,包括:
主机接口,与主机通信;
存储器接口,与存储器装置通信;以及
控制电路,控制所述存储器装置,
其中所述存储器装置存储固件,所述固件包括多个二进制文件,所述多个二进制文件包括第一二进制文件和第二二进制文件,
其中所述控制电路将所述第一二进制文件加载到工作存储器的第一区域中包括的第二区域中,将所述第二二进制文件加载到包括在所述第一区域中并且不同于所述第二区域的第三区域中,并且将关于与所述第二二进制文件中的目标函数相对应的入口函数的信息存储在不同于所述第一区域的第四区域中,并且
其中确定所述第二区域的起始地址为固定值,并且动态地确定所述第三区域的起始地址。
12.根据权利要求11所述的存储器控制器,其中在调用所述目标函数的时间,将所述第二二进制文件加载到所述第三区域中。
13.根据权利要求11所述的存储器控制器,其中所述第四区域与所述第一区域之间的偏移量大于或等于阈值偏移量。
14.根据权利要求11所述的存储器控制器,其中基于所述目标函数的编译时间地址、所述第二二进制文件的编译时间地址以及所述第三区域的起始地址来确定所述目标函数的地址。
15.一种操作存储器控制器的方法,所述存储器控制器用于控制存储器装置,所述方法包括:
将所述存储器装置中存储的固件中的多个二进制文件之中的第一二进制文件加载到工作存储器的第一区域中包括的第二区域中;
将所述固件中的多个二进制文件之中的第二二进制文件加载到包括在所述第一区域中并且不同于所述第二区域的第三区域中;并且
将关于与所述第二二进制文件中的目标函数相对应的入口函数的信息存储在不同于所述第一区域的第四区域中。
其中确定所述第二区域的起始地址为固定值,并且动态地确定所述第三区域的起始地址。
16.根据权利要求15所述的方法,其中:
在调用所述目标函数的时间,将所述第二二进制文件加载到所述第三区域中。
17.根据权利要求15所述的方法,其中所述第四区域与所述第一区域之间的偏移量大于或等于阈值偏移量。
18.根据权利要求15所述的方法,其中基于所述目标函数的编译时间地址、所述第二二进制文件的编译时间地址以及所述第三区域的起始地址来确定所述目标函数的地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190038088A KR20200116373A (ko) | 2019-04-01 | 2019-04-01 | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
KR10-2019-0038088 | 2019-04-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111796763A true CN111796763A (zh) | 2020-10-20 |
Family
ID=72606143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911156859.0A Withdrawn CN111796763A (zh) | 2019-04-01 | 2019-11-22 | 存储器系统、存储器控制器及存储器控制器的操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11079967B2 (zh) |
KR (1) | KR20200116373A (zh) |
CN (1) | CN111796763A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237514A (zh) * | 2021-12-24 | 2022-03-25 | 深圳市宝佳乐电子科技有限公司 | 区块管理方法、存储器控制器和存储器存储装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210023184A (ko) | 2019-08-22 | 2021-03-04 | 에스케이하이닉스 주식회사 | 런타임 오버레이를 통해 펌웨어를 관리하는 장치 및 방법 |
US11809750B1 (en) * | 2022-04-26 | 2023-11-07 | Western Digital Technologies, Inc. | Automated overlay regrouping |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8171206B2 (en) | 2008-07-22 | 2012-05-01 | Sandisk Technologies Inc. | Avoidance of self eviction caused by dynamic memory allocation in a flash memory storage device |
CN101441566B (zh) | 2008-11-18 | 2012-04-25 | 腾讯科技(深圳)有限公司 | 一种在嵌入式平台上动态链接程序的方法 |
JP5728982B2 (ja) * | 2010-02-26 | 2015-06-03 | 株式会社Jvcケンウッド | 処理装置および書込方法 |
EP2680137A4 (en) * | 2011-07-27 | 2014-03-26 | Huawei Tech Co Ltd | METHOD AND SYSTEM FOR MANAGING BIOS CONFIGURATION DATA OF A BASE INPUT / OUTPUT SYSTEM |
WO2016003646A1 (en) * | 2014-06-30 | 2016-01-07 | Unisys Corporation | Enterprise management for secure network communications over ipsec |
KR102400384B1 (ko) * | 2015-06-26 | 2022-05-23 | 삼성전자 주식회사 | 외장 메모리를 구비하는 전자장치 및 그 동작 방법 |
-
2019
- 2019-04-01 KR KR1020190038088A patent/KR20200116373A/ko not_active Application Discontinuation
- 2019-11-06 US US16/676,201 patent/US11079967B2/en active Active
- 2019-11-22 CN CN201911156859.0A patent/CN111796763A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237514A (zh) * | 2021-12-24 | 2022-03-25 | 深圳市宝佳乐电子科技有限公司 | 区块管理方法、存储器控制器和存储器存储装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20200116373A (ko) | 2020-10-12 |
US20200310692A1 (en) | 2020-10-01 |
US11079967B2 (en) | 2021-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114097033A (zh) | 存储器子系统的被取消映射分配单元的管理 | |
US11079967B2 (en) | Memory system, memory controller and operating method of memory controller | |
US11086795B2 (en) | Memory system, memory controller and operating method thereof | |
US11681619B2 (en) | Controller and operation method thereof for managing read count information of memory block | |
CN112445733A (zh) | 存储器系统、存储器控制器以及操作方法 | |
CN112181283A (zh) | 存储器系统、存储器控制器及操作方法 | |
CN113806254B (zh) | 存储器系统、存储器控制器及存储器系统的操作方法 | |
CN112349315B (zh) | 存储器系统、存储器控制器和操作方法 | |
CN113703662A (zh) | 存储器系统、存储器控制器及其操作方法 | |
US11960888B2 (en) | Memory system, memory controller, and method for operating memory system | |
US11237767B2 (en) | Memory system, memory controller and method for operating memory controller | |
CN111798913A (zh) | 存储器系统、存储器控制器及其操作方法 | |
CN112445726A (zh) | 存储器系统、存储器控制器及操作方法 | |
KR20210028335A (ko) | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 | |
US20240176407A1 (en) | Storage device for executing background operation based on power state and operating method thereof | |
US20240184657A1 (en) | Storage device for setting operation parameters for random access memory upon power-on and operation | |
US20240202090A1 (en) | Storage device for storing temperature log information according to temperature storage level and operating method thereof | |
US20240143222A1 (en) | Storage device controlling write buffer while processing power off request and method of operating the storage device | |
US20240176541A1 (en) | Storage device controlling target operation based on collected performance information and operating method thereof | |
US20240094952A1 (en) | System and storage device for executing read command using read recovery level and methods of operation | |
US20240004566A1 (en) | Memory system for managing namespace using write pointer and write count, memory controller, and method for operating memory system | |
TW202422282A (zh) | 基於電力狀態運行後台操作的控制器、儲存裝置及其操作方法 | |
CN112951285A (zh) | 系统、控制器和用于操作系统的方法 | |
KR20240014309A (ko) | 다이 레벨의 리드 리트라이 테이블을 제공하는 메모리 제어 회로, 메모리 패키지 및 스토리지 장치 | |
KR20230135334A (ko) | 가비지 컬렉션을 제어하는 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201020 |
|
WW01 | Invention patent application withdrawn after publication |