CN114385216A - 存储装置及操作该存储装置的方法 - Google Patents
存储装置及操作该存储装置的方法 Download PDFInfo
- Publication number
- CN114385216A CN114385216A CN202110548988.5A CN202110548988A CN114385216A CN 114385216 A CN114385216 A CN 114385216A CN 202110548988 A CN202110548988 A CN 202110548988A CN 114385216 A CN114385216 A CN 114385216A
- Authority
- CN
- China
- Prior art keywords
- memory
- image
- firmware image
- bootloader
- stored
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- 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/4401—Bootstrapping
-
- 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/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- 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/4401—Bootstrapping
- G06F9/4406—Loading of operating system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请涉及一种存储装置,该存储装置包括存储器装置和存储器控制器,该存储器控制器包括多个内核。存储器控制器可以将用于固件更新运行的启动加载程序映像加载到从多个内核之中任意选择的内核的存储器中,响应于在所选择的内核中运行的启动加载程序映像从主机接收新固件映像,并且利用新固件映像来更新多个内核中的每一个的存储器中存储的固件映像。
Description
相关申请的交叉引用
本申请要求于2020年10月6日向韩国知识产权局提交的、申请号为10-2020-0128796的韩国专利申请的优先权,该韩国专利申请的全部公开内容通过引用并入本文。
技术领域
本公开的各个实施例总体上涉及一种电子装置,并且更特别地,涉及一种存储装置及操作该存储装置的方法。
背景技术
通常,存储装置是在诸如计算机、智能电话等的主机装置的控制下存储数据的装置。存储装置可以包括被配置为存储数据的存储器装置以及被配置为控制该存储器装置的存储器控制器。存储器装置主要被分类为易失性存储器装置和非易失性存储器装置。
易失性存储器装置是仅在向其供电时才存储数据并且在电源关闭时丢失其中所存储的数据的存储器装置。易失性存储器装置的示例包括静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。
非易失性存储器装置是即使在电源关闭时也可以保持其中所存储的数据的存储器装置。非易失性存储器装置的示例包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器等。
发明内容
本公开的各个实施例针对一种具有改进的固件更新性能的存储装置以及操作该存储装置的方法。
根据本公开的实施例的存储器控制器可以包括处理器以及缓冲存储器,该处理器包括多个内核。缓冲存储器可以存储用于固件更新运行的启动加载程序映像。处理器可以将启动加载程序映像从缓冲存储器加载到从多个内核之中任意选择的内核的存储器中,响应于在所选择的内核中运行的启动加载程序映像从主机接收新固件映像,并且利用新固件映像来更新多个内核中的每一个的存储器中存储的固件映像。
根据本公开的实施例的操作存储器控制器的方法,该存储器控制器包括多个内核和缓冲存储器,并且被配置为控制存储器装置,该方法可以包括:将启动加载程序映像加载到从多个内核之中任意选择的内核的存储器中,该启动加载程序映像存储在缓冲存储器中并且被提供用于固件更新运行;响应于在所选择的内核中运行的启动加载程序映像,从主机接收新固件映像;并且利用新固件映像来更新多个内核中的每一个的存储器中存储的固件映像。
根据本公开的实施例的存储装置可以包括:存储器装置;以及存储器控制器,包括多个内核。存储器控制器可以将用于固件更新运行的启动加载程序映像加载到从多个内核之中任意选择的内核的存储器中,响应于在所选择的内核中运行的启动加载程序映像从主机接收新固件映像,并且利用新固件映像来更新多个内核中的每一个的存储器中存储的固件映像。
附图说明
图1是示出根据本公开的实施例的存储装置的示图。
图2是用于描述根据实施例的图1的处理器的配置和操作的示图。
图3是用于描述图2的固件映像的示图。
图4是用于描述根据实施例的图1的处理器的配置和操作的示图。
图5是用于描述图4的固件映像的示图。
图6是用于描述根据本公开的实施例的存储器控制器的操作的流程图。
图7是用于描述图6的方法的流程图。
图8是示出根据本公开的实施例的图1的存储器控制器的示图。
图9是示出应用了根据本公开的实施例的存储装置的存储卡系统的框图。
图10是示出应用了根据本公开的实施例的存储装置的固态驱动器(SSD)系统的框图。
图11是示出应用了根据本公开的实施例的存储装置的用户系统的框图。
具体实施方式
本说明书或申请中引入的本公开的实施例中的特定结构或功能描述仅用于描述本公开的实施例。该描述不应被解释为限于说明书或申请中描述的实施例。
图1是示出根据本公开的实施例的存储装置50的示图。
参照图1,存储装置50可以包括存储器装置100和被配置为控制存储器装置100的操作的存储器控制器200。存储装置50可以是被配置为在诸如以下的主机300的控制下存储数据的装置:蜂窝电话、智能电话、MP3播放器、膝上型计算机、台式计算机、游戏机、TV、平板PC、车载信息娱乐系统等。
根据主机接口,存储装置50可以被制造为各种存储装置中的任意一种,该主机接口是用于与主机300通信的通信系统。例如,存储装置50可以由诸如以下的各种存储装置中的任意一种来配置:SSD,MMC、eMMC、RS-MMC、微型MMC型多媒体卡,SD、迷你SD、微型SD型安全数字卡,通用串行总线(USB)存储装置,通用闪存(UFS)装置,个人计算机存储卡国际协会(PCMCIA)卡型存储装置,外围组件互连(PCI)卡型存储装置,高速PCI(PCI-E)型存储装置,紧凑型闪存(CF)卡,智能媒体卡,记忆棒等。
存储装置50可以以诸如以下的各种封装类型中的任意一种的形式制造:堆叠封装(POP)型、系统级封装(SIP)型、片上系统(SOC)型、多芯片封装(MCP)型、板上芯片(COB)型、晶圆级制造封装(WFP)型、晶圆级堆叠封装(WSP)型等。
存储器装置100可以在其中存储数据。存储器装置100可以在存储器控制器200的控制下进行操作。存储器装置100可以包括存储器单元阵列,该存储器单元阵列包括被配置为在其中存储数据的多个存储器单元。
存储器单元可以包括能够存储单位数据的单层单元(SLC)、能够存储两位数据的多层单元(MLC)、能够存储三位数据的三层单元(TLC)或能够存储四位数据的四层单元(QLC)。
存储器单元阵列可以包括多个存储块。每个存储块可以包括多个存储器单元。每个存储块可以包括多个页面。在实施例中,页面可以是将数据存储在存储器装置100中或者从存储器装置100读取所存储的数据的单位。
存储块可以是擦除数据的单位。在实施例中,存储器装置100可以是双倍数据速率同步动态随机存取存储器(DDR SDRAM)、第四代低功率双倍数据速率(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)、rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器装置、电阻式随机存取存储器(RRAM)、相变随机存取存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)、自旋转移力矩随机存取存储器(STT-RAM)等。在本说明书中,为了简化说明,假设存储器装置100是NAND闪速存储器。
存储器装置100可以从存储器控制器200接收命令和地址,并且访问存储器单元阵列的由该地址选择的区域。换句话说,存储器装置100可以对由该地址选择的区域执行由该命令指示的操作。例如,存储器装置100可以执行写入(或编程)操作、读取操作和擦除操作。在编程操作期间,存储器装置100可以将数据编程到由该地址选择的区域。在读取操作期间,存储器装置100可以从由该地址选择的区域读取数据。在擦除操作期间,存储器装置100可以从由该地址选择的区域擦除数据。
存储器控制器200可以控制存储装置50的全部操作。
当向存储装置50施加电力时,存储器控制器200可以运行固件(FW)。在存储器装置100是闪速存储器装置的情况下,存储器控制器200可以运行诸如闪存转换层(FTL)的固件以控制主机300与存储器装置100之间的通信。
在实施例中,存储器控制器200可以从主机300接收数据和逻辑块地址(LBA),并且将LBA转换为指示待存储数据的存储器单元的地址的物理块地址(PBA),该存储器单元包括在存储器装置100中。
存储器控制器200可以响应于来自主机300的请求来控制存储器装置100执行编程操作、读取操作或擦除操作。在编程操作期间,存储器控制器200可以将写入命令、PBA和数据提供到存储器装置100。在读取操作期间,存储器控制器200可以将读取命令和PBA提供到存储器装置100。在擦除操作期间,存储器控制器200可以将擦除命令和PBA提供到存储器装置100。
在实施例中,存储器控制器200可以自主地生成命令、地址和数据,而不管来自主机300的请求如何,并且将它们传输到存储器装置100。例如,存储器控制器200可以将命令、地址和数据提供到存储器装置100以执行后台操作,诸如用于损耗均衡的编程操作和用于垃圾收集的编程操作。
在实施例中,存储器控制器200可以控制至少两个或更多个存储器装置100。在这种情况下,存储器控制器200可以根据交错方案来控制存储器装置100,从而提高操作性能。交错方案可以是至少两个或更多个存储器装置100的操作时段重叠的操作方案。
在实施例中,存储器控制器200可以包括处理器210和缓冲存储器220。处理器210可以包括多个内核。每个内核可以存储用于存储装置50的操作的固件映像。每个内核可以运行所存储的固件,从而控制存储装置50的全部操作。
存储器控制器200可以将启动加载程序映像从缓冲存储器220加载到多个内核中任意选择的内核的存储器中。存储器控制器200可以在所选择的内核的存储器中动态地分配启动加载程序映像待被加载到其中的目标存储器区域的地址。存储器控制器200可以运行加载到目标存储器区域中的启动加载程序映像。存储器控制器200可以响应于所运行的启动加载程序映像从主机300接收新固件映像。存储器控制器200可以利用新固件映像来更新多个内核中的每一个的存储器中存储的固件映像。在实施例中,存储器控制器200可以与处理从主机300接收的请求并行地,利用新固件映像来更新多个内核中的每一个的存储器中存储的固件映像。
存储器控制器200可以控制存储器装置100,使得存储器装置100在断电之前在其中存储多个内核中的每一个的存储器中存储的经更新的固件映像。
缓冲存储器220可以存储用于固件更新运行的启动加载程序映像。在实施例中,缓冲存储器220可以由易失性存储器装置形成。在这种情况下,在通电之后,可以将存储器装置100中存储的启动加载程序映像加载到缓冲存储器220中。在另一实施例中,缓冲存储器220可以由非易失性存储器装置形成。在这种情况下,可以省略从存储器装置100加载启动加载程序映像。
主机300可以使用诸如以下的各种通信方法中的至少一种与存储装置50通信:通用串行总线(USB)、串行AT附件(SATA)、串列SCSI(SAS)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、外围组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和低负载DIMM(LRDIMM)通信方法。
图2是用于描述根据实施例的图1的处理器210的配置和操作的示图。
参照图2,处理器210可以包括多个内核Core 1至Core 4。处理器210中包括的内核的数量不限于本实施例的数量。
第一内核Core 1可以是专门用于固件更新运行的处理器。待加载到第一内核Core1的存储器中的固件映像可以包括用于固件更新运行的固件更新代码。包括固件更新代码的固件映像(例如,主固件映像)可以被加载到与第一内核Core 1的存储器中的静态地址相对应的存储器区域中。
第一内核Core 1可以响应于所运行的固件更新代码,利用从主机300接收的新固件映像来更新其它内核Core 2至Core 4的存储器中存储的固件映像。
在固件更新运行期间,因为运行了主固件映像中包括的固件更新代码,所以可能不会更新第一内核Core 1的存储器中存储的主固件映像。换句话说,因为第一内核Core 1响应于所运行的固件更新代码与主机300通信,所以在执行与主机300的通信时不能对第一内核Core 1执行固件映像更新。
在断电之前,在其它内核Core 2至Core 4的存储器中更新的新固件映像可存储在存储器装置100中。此后,在通电之后,存储器装置100中存储的新固件映像被加载到第一内核Core 1的存储器中,从而可以更新与第一内核Core 1相对应的主固件映像。
换句话说,在与主机300的通信已经完成之后,可以通过断电或通电处理来更新第一内核Core 1的存储器中存储的主固件映像。
图3是用于描述图2的固件映像的示图。
参照图3,处理器210的每个内核的存储器可以存储相应的固件映像。
此处,用于固件更新运行的固件更新代码可以包括在与专门用于固件更新的第一内核Core 1相对应的主固件映像中。固件更新代码可以存储在与第一内核Core 1的存储器中的静态地址相对应的存储器区域中。
图4是用于描述根据实施例的图1的处理器210的配置和操作的示图。
参照图4,处理器210可以包括多个内核Core 1至Core 4。处理器210中包括的内核的数量不限于本实施例的数量。
在图4中,可能不存在专门用于固件更新运行的单独处理器。因此,可以选择多个内核Core 1至Core 4中的任意一个内核来进行固件更新运行。
固件更新代码可以作为启动加载程序映像生成。生成的启动加载程序映像可以存储在缓冲存储器220中。可以将用于固件更新运行的启动加载程序映像从缓冲存储器220加载到多个内核Core 1至Core 4中任意选择的内核的存储器中。在实施例中,启动加载程序映像可以生成为二进制代码。
所选择的内核可以在所选择的内核的存储器区域之中动态地分配启动加载程序映像待被加载到其中的目标存储器区域。目标存储器区域可以是未存储数据的空区域。因此,目标存储器区域的地址可以是可变的。
参照图4,所选择的内核可以是第二内核Core 2。第二内核Core 2可以运行加载到其中的目标存储器区域中的启动加载程序映像。第二内核Core 2可以响应于所运行的启动加载程序映像,从主机300接收新固件映像。第二内核Core 2可以响应于所运行的启动加载程序映像,利用新固件映像来更新其它内核Core 1、Core 3和Core 4中的每一个的存储器中存储的固件映像。
还可以利用新固件映像来更新第二内核Core 2的存储器中存储的固件映像。这样做的原因是,因为不管第二内核Core 2的存储器中加载固件映像的区域如何,启动加载程序映像已经被加载到作为空区域的目标存储器区域中。因此,即使在运行启动加载程序映像时,也可以利用新固件映像来更新第二内核Core 2的存储器中目标存储器区域以外的区域中存储的固件映像。
换句话说,第二内核Core 2可以响应于被加载到目标存储器区域中的所运行的启动加载程序映像代码来执行与主机300的通信,但是无论运行第二内核Core 2的其它区域中存储的固件映像如何,都执行该操作,使得第二内核Core 2可以在执行与主机300的通信的同时更新其中存储的固件映像。换句话说,第二内核Core 2可以与处理从主机300接收的请求并行地执行更新多个内核Core 1至Core 4中的每一个的存储器中存储的固件映像的操作。
在断电之前,可以将每个内核的存储器中更新的新固件映像存储在存储器装置100中。
图5是用于描述图4的固件映像的示图。
参照图5,每个内核的存储器可以存储相应的固件映像。
此处,用于固件更新运行的启动加载程序映像可以单独生成,而不是包括在特定的固件映像中。启动加载程序映像可以加载到多个内核Core 1至Core 4之中任意选择的内核的存储器中。
在图5的实施例中,在任意选择的内核(例如,第二内核Core 2)的存储器中,响应于动态分配的地址,即,动态地址,可以将启动加载程序映像加载到作为空存储器区域的目标存储器区域中。
图6是用于描述根据本公开的实施例的图1的存储器控制器200的操作的流程图。
参照图6,在S601,存储器控制器200可以将启动加载程序映像从缓冲存储器220加载到处理器210中的多个内核中所选择内核的存储器中,该启动加载程序映像被提供用于固件更新运行并存储在缓冲存储器220中。加载到所选择的内核的存储器中的启动加载程序映像存储在所选择的内核的存储器中的空目标存储器区域中,而不是包括在所选择的内核的固件映像中。
在S603,存储器控制器200可以响应于在所选择的内核中运行的启动加载程序映像,从主机300接收新固件映像。
在S605,存储器控制器200可以利用新固件映像来更新多个内核中的每一个的存储器中存储的固件映像。
图7是用于详细描述图6的方法的流程图。
参照图7,在S701,存储器控制器200可以在所选择的内核的存储器中动态地分配启动加载程序映像待被加载到其中的目标存储器区域的地址。
在S703,存储器控制器200可以将启动加载程序映像加载到目标存储器区域中,然后运行启动加载程序映像。
在S705,存储器控制器200可以响应于被运行的启动加载程序映像,从主机300接收新固件映像。
在S707,存储器控制器200可以与处理从主机300接收的请求并行地,利用新固件映像来更新多个内核中的每一个的存储器中存储的固件映像。
图8是示出根据实施例的存储器控制器1000的示图。图8的存储器控制器1000可以对应于图1的存储器控制器200。
参照图8,存储器控制器1000联接到主机(例如,图1的主机300)和存储器装置(例如,图1的存储器装置100)。响应于来自主机300的请求,存储器控制器1000可以访问存储器装置100。例如,存储器控制器1000可以控制存储器装置100的写入操作、读取操作、擦除操作和后台操作。存储器控制器1000可以在存储器装置100和主机300之间提供接口。存储器控制器1000可以驱动用于控制存储器装置100的固件。
存储器控制器1000可以包括处理器1010、存储器缓冲器1020、错误校正码(ECC)电路1030、主机接口1040、缓冲器控制器1050、存储器接口1060和总线1070。
总线1070可以在存储器控制器1000的组件之间提供通道。
处理器1010可以控制存储器控制器1000的全部操作并执行逻辑运算。处理器1010可以通过主机接口1040与主机300通信,并且通过存储器接口1060与存储器装置100通信。另外,处理器1010可以通过缓冲器控制器1050与存储器缓冲器1020通信。处理器1010可以通过使用存储器缓冲器1020作为操作存储器、高速缓存存储器或缓冲存储器来控制存储装置(例如,图1的存储装置50)的操作。
处理器1010可以执行闪存转换层(FTL)的功能。处理器1010可以通过FTL将由主机300提供的逻辑块地址(LBA)转换为物理块地址(PBA)。FTL可以接收LBA,并且使用映射表将LBA转换为PBA。可以根据映射单位以各种方式来修改使用FTL的地址映射方法。代表性的地址映射方法可以包括页面映射方法、块映射方法和混合映射方法。
处理器1010可以使从主机300接收到的数据随机化。例如,处理器1010可以使用随机化种子来使从主机300接收的数据随机化。经随机化的数据可以作为待存储的数据被提供到存储器装置100,并且可以被编程到存储器装置100的存储器单元阵列。
在读取操作期间,处理器1010可以使从存储器装置100接收的数据去随机化。例如,处理器1010可以使用去随机化种子来使从存储器装置100接收到的数据去随机化。经去随机化的数据可以被输出到主机300。
在实施例中,处理器1010可以驱动软件或固件以执行随机化操作或去随机化操作。
存储器缓冲器1020可以用作处理器1010的操作存储器、高速缓存存储器或缓冲存储器。存储器缓冲器1020可以存储待由处理器1010运行的代码和命令。存储器缓冲器1020可以存储待由处理器1010处理的数据。存储器缓冲器1020可以包括静态RAM(SRAM)或动态RAM(DRAM)。
ECC电路1030可以执行错误校正。ECC电路1030可以基于待通过存储器接口1060写入存储器装置100的数据来执行ECC编码操作。经ECC编码的数据可以通过存储器接口1060传输到存储器装置100。ECC电路1030可以对通过存储器接口1060从存储器装置100接收的数据执行ECC解码操作。例如,ECC电路1030可以作为存储器接口1060的组件包括在存储器接口1060中。
主机接口1040可以在处理器1010的控制下与外部主机300通信。主机接口1040可以使用诸如以下的各种通信方法中的至少一种来执行通信:通用串行总线(USB)、串行AT附件(SATA)、串列SCSI(SAS)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、外围组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和低负载DIMM(LRDIMM)通信方法。
缓冲器控制器1050可以在处理器1010的控制下控制存储器缓冲器1020。
存储器接口1060可以在处理器1010的控制下与存储器装置100通信。存储器接口1060可以通过通道与存储器装置100通信命令、地址和数据。
在另一实施例中,存储器控制器1000可以既不包括存储器缓冲器1020,也不包括缓冲器控制器1050在其中。
例如,处理器1010可以使用代码来控制存储器控制器1000的操作。处理器1010可以从设置在存储器控制器1000中的非易失性存储器装置(例如,只读存储器)加载代码。可选地,处理器1010可以通过存储器接口1060从存储器装置100加载代码。
例如,存储器控制器1000的总线1070可以分为控制总线和数据总线。数据总线可以在存储器控制器1000中传输数据。控制总线可以在存储器控制器1000中传输诸如命令和地址的控制信息。数据总线和控制总线可以彼此分开,并且可以既不相互干扰,也不相互影响。数据总线可以联接到主机接口1040、缓冲器控制器1050、ECC电路1030和存储器接口1060。控制总线可以联接到主机接口1040、处理器1010、缓冲器控制器1050、存储器缓冲器1020和存储器接口1060。
在实施例中,图1的处理器210可以包括在处理器1010中。图1的缓冲存储器220可以包括在存储器缓冲器1020中。
图9是示出应用了根据本公开的实施例的存储装置的存储卡系统2000的框图。
参照图9,存储卡系统2000可以包括存储器控制器2100、存储器装置2200和连接器2300。
存储器控制器2100联接到存储器装置2200。存储器控制器2100可以访问存储器装置2200。例如,存储器控制器2100可以控制存储器装置2200的读取操作、写入操作、擦除操作和后台操作。存储器控制器2100可以在存储器装置2200与主机之间提供接口。存储器控制器2100可以驱动用于控制存储器装置2200的固件。存储器控制器2100可以以与参照图1描述的存储器控制器200相同的方式来实现。
在实施例中,存储器控制器2100可以包括诸如随机存取存储器(RAM)、处理单元、主机接口、存储器接口和ECC电路中的一个或多个的组件。
存储器控制器2100可以通过连接器2300与外部装置(例如,主机)通信。存储器控制器2100可以基于特定的通信协议与外部装置通信。在实施例中,存储器控制器2100可以通过诸如以下的各种通信协议中的至少一种与外部装置通信:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCI-E)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、Wi-Fi、蓝牙和高速非易失性存储器(NVMe)协议。在实施例中,连接器2300可以通过上述各种通信协议中的至少一种来定义。
在实施例中,存储器装置2200可以被实施为诸如以下的各种非易失性存储器装置中的任意一种:电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)和自旋转移力矩磁性RAM(STT-MRAM)。
在实施例中,存储器控制器2100和存储器装置2200可以被集成到单个半导体装置中以形成诸如以下的存储卡:个人计算机存储卡国际协会(PCMCIA)、紧凑型闪存(CF)卡、智能媒体卡(SM或SMC)、记忆棒、多媒体卡(MMC、RS-MMC或微型MMC)、SD卡(SD、迷你SD、微型SD或SDHC)或通用闪存(UFS)。
图10是示出应用了根据本公开的实施例的存储装置的固态驱动器(SSD)系统3000的框图。
参照图10,SSD系统3000可以包括主机3100和SSD 3200。SSD 3200可以通过信号连接器3001与主机3100交换信号SIG,并且可以通过电源连接器3002接收电力PWR。SSD 3200可以包括SSD控制器3210、多个非易失性存储器(NVM)3221至322n、辅助电源3230和缓冲存储器3240。
在实施例中,SSD控制器3210可以执行以上参照图1描述的存储器控制器200的功能。
SSD控制器3210可以响应于从主机3100接收的信号SIG来控制多个NVM 3221至322n。在实施例中,信号SIG可以是基于主机3100和SSD3200之间的接口的信号。例如,信号SIG可以是通过诸如以下的各种接口中的至少一种来定义的信号:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCI-E)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、Wi-Fi、蓝牙和高速非易失性存储器(NVMe)接口。
辅助电源3230可以通过电源连接器3002联接到主机3100。可以从主机3100向辅助电源3230供应电力PWR,并且可以通过电力PWR对辅助电源3230充电。当来自主机3100的电力的供应执行地不平稳时,辅助电源3230可以向SSD 3200供应电力。在实施例中,辅助电源3230可以位于SSD 3200内部或位于SSD 3200外部。例如,辅助电源3230可以被设置在主板中并且可以向SSD 3200供应辅助电力。
缓冲存储器3240用作SSD 3200的缓冲存储器。例如,缓冲存储器3240可以临时存储从主机3100接收的数据或从多个NVM 3221至322n接收的数据,或者可以临时存储多个NVM 3221至322n的元数据(例如,映射表)。缓冲存储器3240可以包括诸如DRAM、SDRAM、DDRSDRAM、LPDDR SDRAM和GRAM的易失性存储器以及诸如FRAM、ReRAM、STT-MRAM和PRAM的非易失性存储器中的任意一种。
图11是示出应用了根据本公开的实施例的存储装置的用户系统4000的框图。
参照图11,用户系统4000可以包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
应用处理器4100可以运行用户系统4000中包括的组件、操作系统(OS)或用户程序。在实施例中,应用处理器4100可以包括用于控制用户系统4000中包括的组件的控制器、接口、图形引擎等中的一个或多个。应用处理器4100可以被设置为片上系统(SoC)。
存储器模块4200可以用作用户系统4000的主存储器、工作存储器、缓冲存储器或高速缓存存储器。存储器模块4200可以包括诸如DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3SDRAM、LPDDR SDRAM、LPDDR2 SDRAM或LPDDR3 SDRAM的易失性存储器,或者诸如PRAM、ReRAM、MRAM或FRAM的非易失性存储器。在实施例中,应用处理器4100和存储器模块4200可以基于堆叠封装(POP)进行封装,然后被设置为单个半导体封装。
网络模块4300可以与外部装置通信。例如,网络模块4300可以支持无线通信,诸如码分多址(CDMA)、全球移动通信系统(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进(LTE)、WiMAX、WLAN、UWB、蓝牙或Wi-Fi通信。在实施例中,网络模块4300可以被包括在应用处理器4100中。
存储模块4400可以在其中存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。可选地,存储模块4400可以将存储模块4400中存储的数据传输到应用处理器4100。在实施例中,存储模块4400可以被实施为非易失性存储器,诸如相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、NAND闪速存储器、NOR闪速存储器、具有三维(3D)结构的NAND闪速存储器等。在实施例中,存储模块4400可以被设置为可移动存储介质(即,可移动驱动器),诸如存储卡或用户系统4000的外部驱动器。
在实施例中,存储模块4400可以包括多个非易失性存储器装置,并且多个非易失性存储器装置中的每一个可以以与以上参照图1描述的存储器装置100相同的方式操作。存储模块4400可以以与以上参照图1描述的存储装置50相同的方式操作。
用户接口4500可以包括用于向应用处理器4100输入数据或指令或者向外部装置输出数据的一个或多个接口。在实施例中,用户接口4500可以包括诸如以下的用户输入接口中的一个或多个:键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、照相机、麦克风、陀螺仪传感器、振动传感器、压电装置等。用户接口4500可以进一步包括诸如以下的用户输出接口中的一个或多个:液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器、监视器等。
如上所述,本公开的各个实施例可以提供一种具有改进的固件更新性能的存储装置以及操作该存储装置的方法。
本文已经公开了实施例的示例,尽管采用了具体的术语,但是对它们的使用和解释仅在于通用和描述性意义,而不是出于限制的目的。在一些实例中,如本申请提交时本领域的普通技术人员将显而易见的,除非另外特别指出,否则结合特定实施例描述的特征、特性和/或元件可以单独使用,或者与结合其它实施例描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解的是,在不脱离如所附权利要求书中所阐述的本公开的精神和范围的情况下,可以在形式和细节上进行各种改变。
Claims (20)
1.一种存储器控制器,包括:
处理器,包括多个内核;以及
缓冲存储器,存储用于固件更新运行的启动加载程序映像,
其中所述处理器将所述启动加载程序映像从所述缓冲存储器加载到从所述多个内核之中任意选择的内核的存储器中,响应于在所选择的内核中运行的所述启动加载程序映像从主机接收新固件映像,并且利用所述新固件映像来更新所述多个内核中的每一个的存储器中存储的固件映像。
2.根据权利要求1所述的存储器控制器,其中所选择的内核在所选择的内核的存储器中动态地分配所述启动加载程序映像待被加载到其中的目标存储器区域的地址,并且运行加载到所述目标存储器区域中的所述启动加载程序映像。
3.根据权利要求2所述的存储器控制器,其中所选择的内核与处理从所述主机接收的请求并行地,利用响应于被运行的所述启动加载程序映像接收到的所述新固件映像来更新所述多个内核中的每一个的存储器中存储的固件映像。
4.根据权利要求3所述的存储器控制器,其中所选择的内核利用所述新固件映像来更新所选择的内核的存储器中除所述目标存储器区域以外的存储器区域中存储的固件映像。
5.根据权利要求1所述的存储器控制器,其中在断电之前,在所述多个内核中的每一个的存储器中更新的所述新固件映像存储在由所述存储器控制器控制的存储器装置中。
6.根据权利要求1所述的存储器控制器,其中所述缓冲存储器包括易失性存储器装置。
7.一种操作存储器控制器的方法,所述存储器控制器包括多个内核和缓冲存储器,并且控制存储器装置,所述方法包括:
将启动加载程序映像加载到从所述多个内核之中任意选择的内核的存储器中,所述启动加载程序映像存储在所述缓冲存储器中并且被提供用于固件更新运行;
响应于在所选择的内核中运行的所述启动加载程序映像,从主机接收新固件映像;并且
利用所述新固件映像来更新所述多个内核中的每一个的存储器中存储的固件映像。
8.根据权利要求7所述的方法,其中加载所述启动加载程序映像包括:
在所选择的内核的存储器中动态地分配所述启动加载程序映像待被加载到其中的目标存储器区域的地址;并且
将所述启动加载程序映像加载到所述目标存储器区域中。
9.根据权利要求8所述的方法,其中更新所述固件映像包括:与处理从所述主机接收的请求并行地,利用响应于被运行的所述启动加载程序映像接收到的所述新固件映像来更新所述多个内核中的每一个的存储器中存储的固件映像。
10.根据权利要求9所述的方法,其中更新所述固件映像包括:利用所述新固件映像来更新所选择的内核的固件映像,所选择的内核的固件映像存储在所选择的内核的存储器中除所述目标存储器区域以外的存储器区域中。
11.根据权利要求7所述的方法,进一步包括:在断电之前,将在所述多个内核中的每一个的存储器中更新的所述新固件映像存储在所述存储器装置中。
12.根据权利要求7所述的方法,其中所述缓冲存储器包括易失性存储器装置。
13.根据权利要求12所述的方法,其中所述启动加载程序映像存储在所述存储器装置中,所述方法进一步包括:在通电之后,将存储在所述存储器装置中的所述启动加载程序映像加载到所述缓冲存储器中。
14.根据权利要求7所述的方法,其中所述缓冲存储器包括非易失性存储器装置。
15.一种存储装置,包括:
存储器装置;以及
存储器控制器,包括多个内核,
其中所述存储器控制器将用于固件更新运行的启动加载程序映像加载到从所述多个内核之中任意选择的内核的存储器中,响应于在所选择的内核中运行的所述启动加载程序映像从主机接收新固件映像,并且利用所述新固件映像来更新所述多个内核中的每一个的存储器中存储的固件映像。
16.根据权利要求15所述的存储装置,其中所述存储器控制器在所选择的内核的存储器中动态地分配所述启动加载程序映像待被加载到其中的目标存储器区域的地址,并且运行加载到所述目标存储器区域中的所述启动加载程序映像。
17.根据权利要求16所述的存储装置,其中所述存储器控制器与处理从所述主机接收的请求并行地,利用响应于被运行的所述启动加载程序映像接收到的所述新固件映像来更新所述多个内核中的每一个的存储器中存储的固件映像。
18.根据权利要求16所述的存储装置,其中所述存储器控制器利用所述新固件映像来更新所选择的内核的固件映像,所选择的内核的固件映像存储在所选择的内核的存储器中除所述目标存储器区域以外的存储器区域中。
19.根据权利要求15所述的存储装置,其中所述存储器控制器控制所述存储器装置在断电之前将在所述多个内核中的每一个的存储器中更新的所述新固件映像存储在所述存储器装置中。
20.根据权利要求15所述的存储装置,其中所述启动加载程序映像存储在所述存储器装置中,所述启动加载程序映像在通电之后被加载到所述存储器控制器的易失性存储器装置中,并且加载到所述易失性存储器装置中的所述启动加载程序映像被加载到所选择的内核的存储器中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0128796 | 2020-10-06 | ||
KR1020200128796A KR20220045764A (ko) | 2020-10-06 | 2020-10-06 | 저장 장치 및 그 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385216A true CN114385216A (zh) | 2022-04-22 |
Family
ID=80932244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110548988.5A Pending CN114385216A (zh) | 2020-10-06 | 2021-05-20 | 存储装置及操作该存储装置的方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11561785B2 (zh) |
KR (1) | KR20220045764A (zh) |
CN (1) | CN114385216A (zh) |
TW (1) | TW202215228A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115151895A (zh) * | 2020-04-01 | 2022-10-04 | 松下知识产权经营株式会社 | 存储系统 |
KR20220033311A (ko) * | 2020-09-09 | 2022-03-16 | 삼성전자주식회사 | 전자 디바이스 및 이의 동작 방법과 네트워크 시스템 |
US12026506B2 (en) | 2022-07-08 | 2024-07-02 | Sk Hynix Nand Product Solutions Corp. | Methods and systems for updating device firmware while maintaining state and connectivity |
KR102551737B1 (ko) * | 2022-10-12 | 2023-07-05 | (주)미섬시스텍 | 부트로더 시스템 및 그 방법 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7506335B1 (en) * | 2003-11-29 | 2009-03-17 | Cisco Technology, Inc. | Method and apparatus for software loading and initialization in a distributed network |
US20050223359A1 (en) * | 2004-03-30 | 2005-10-06 | Rao Nagaraju Kodalapura N | Techniques for multi-core debugging |
US20070245333A1 (en) * | 2006-03-27 | 2007-10-18 | Ferlitsch Andrew R | Methods and Systems for Managing Firmware |
US9268542B1 (en) * | 2011-04-28 | 2016-02-23 | Google Inc. | Cache contention management on a multicore processor based on the degree of contention exceeding a threshold |
US9665719B2 (en) * | 2012-06-04 | 2017-05-30 | Oracle International Corporation | System and method for supporting host-based firmware upgrade of input/output (I/O) devices in a middleware machine environment |
US9092233B2 (en) * | 2012-09-07 | 2015-07-28 | Apple Inc. | Accessory booting over USB |
KR102261815B1 (ko) | 2014-10-30 | 2021-06-07 | 삼성전자주식회사 | 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 |
US20160266894A1 (en) * | 2015-03-11 | 2016-09-15 | Cavium, Inc. | Systems and methods for live upgrade and update of firmware on an embedded networking device |
US10440121B2 (en) * | 2015-04-09 | 2019-10-08 | Web Sensing, Llc | Endpoints for performing distributed sensing and control and methods of operating the same |
JP6565389B2 (ja) * | 2015-07-02 | 2019-08-28 | セイコーエプソン株式会社 | プリンターのファームウェア書き換え方法およびプリンター |
US9959125B2 (en) | 2015-08-05 | 2018-05-01 | Samsung Electronics Co., Ltd. | Field update of boot loader using regular device firmware update procedure |
US10275259B1 (en) * | 2016-01-27 | 2019-04-30 | Xilinx, Inc. | Multi-stage booting of integrated circuits |
US20170249155A1 (en) | 2016-02-26 | 2017-08-31 | Sandisk Technologies Inc. | Memory System and Method for Fast Firmware Download |
US10185664B1 (en) * | 2017-06-30 | 2019-01-22 | Vmware, Inc. | Method for switching address spaces via an intermediate address space |
-
2020
- 2020-10-06 KR KR1020200128796A patent/KR20220045764A/ko unknown
-
2021
- 2021-04-02 US US17/221,588 patent/US11561785B2/en active Active
- 2021-05-20 CN CN202110548988.5A patent/CN114385216A/zh active Pending
- 2021-06-17 TW TW110122110A patent/TW202215228A/zh unknown
-
2023
- 2023-01-20 US US18/157,677 patent/US11861359B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20220045764A (ko) | 2022-04-13 |
TW202215228A (zh) | 2022-04-16 |
US20220107797A1 (en) | 2022-04-07 |
US11561785B2 (en) | 2023-01-24 |
US11861359B2 (en) | 2024-01-02 |
US20230153103A1 (en) | 2023-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11561785B2 (en) | Storage device and method of operating the same | |
CN112905502A (zh) | 存储装置及其操作方法 | |
CN113721835A (zh) | 数据存储装置及其操作方法 | |
CN113377692A (zh) | 计算系统及其操作方法 | |
CN115708042A (zh) | 储存装置、存储器装置及其操作方法 | |
US11775211B2 (en) | Memory controller and method of operating the same | |
US11520519B2 (en) | Storage device and method of operating the same | |
US11960733B2 (en) | Memory controller and method of operating the same | |
CN113867619B (zh) | 存储器控制器及其操作方法 | |
US20220405009A1 (en) | Storage device and operating method thereof | |
US11922048B2 (en) | Memory controller managing map data and operating method thereof | |
US11455249B2 (en) | Storage device for performing dump operation, method of operating storage device, computing system including storage device and host device for controlling storage device, and method of operating computing system | |
US20220391133A1 (en) | Memory controller and memory system including the same | |
US20240045590A1 (en) | Storage device, electronic device including the same, and operating method thereof | |
US20240094945A1 (en) | Memory controller and memory system including the same | |
KR20240003648A (ko) | 메모리 시스템 및 그에 포함된 메모리 컨트롤러의 동작 방법 | |
KR20230050012A (ko) | 스토리지 장치 및 그 동작 방법 | |
TW202405660A (zh) | 儲存裝置、包括儲存裝置的電子裝置及其操作方法 | |
KR20230011214A (ko) | 스토리지 장치 및 이의 동작 방법 | |
KR20220159269A (ko) | 스토리지 장치 및 그 동작 방법 | |
CN115390745A (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 |