CN101421701B - 用于引导非易失性存储器的方法、设备和系统 - Google Patents

用于引导非易失性存储器的方法、设备和系统 Download PDF

Info

Publication number
CN101421701B
CN101421701B CN2007800129114A CN200780012911A CN101421701B CN 101421701 B CN101421701 B CN 101421701B CN 2007800129114 A CN2007800129114 A CN 2007800129114A CN 200780012911 A CN200780012911 A CN 200780012911A CN 101421701 B CN101421701 B CN 101421701B
Authority
CN
China
Prior art keywords
data
register
nand
flash memory
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2007800129114A
Other languages
English (en)
Other versions
CN101421701A (zh
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.)
Apple Inc
Original Assignee
Apple Computer Inc
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 Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN101421701A publication Critical patent/CN101421701A/zh
Application granted granted Critical
Publication of CN101421701B publication Critical patent/CN101421701B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44573Execute-in-place [XIP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

通过检测与设备相关联的复位信号并从非易失性存储器位置检索数据的预定页到与非易失性存储器相关联的寄存器中,可以实现用于引导设备的系统和过程。非易失性存储器可被设计并实现,使得从非易失性存储器中检索每页数据作为一个单元,且数据页包括用于引导设备的指令。接收读取存储在寄存器中的数据的命令,命令可包括标识寄存器中的一条或多条指令的位置的地址。作为响应,从寄存器中检索一条或多条指令以便由处理器执行。

Description

用于引导非易失性存储器的方法、设备和系统
本申请要求2006年4月10日提交的、序列号为11/400,854的美国专利申请的优先权。
技术领域
本发明涉及引导处理设备,更具体地,涉及从NAND闪存直接进行引导。
背景技术
典型地,当处理设备被开启时,引导序列被启动以加载操作系统和/或软件应用到设备的主存储器(例如,随机存取存储器(RAM))中。处理设备硬件通常使用一小段用于加载操作系统的软件代码。一旦被加载,操作系统可以用于控制由该设备执行的操作。
引导序列涉及使用引导加载器来定位用于实际加载操作系统的代码。在典型的计算机中,引导加载器或基本输入输出系统(BIOS)被存储在只读存储器(ROM)中或在特定地址处的NOR闪存中,并且用作指向放置引导代码或其它应用代码的其它位置的指针。类似地,在诸如MP3播放器或个人数字助理(PDA)那样的典型手持型设备中,引导加载器被存储在ROM中或NOR闪存中。
发明内容
使用ROM或NOR闪存来存储引导加载器代码是相对昂贵的。技术和系统可以被实施,以使存储在NAND闪存或其它非易失性存储设备中的指令能够被就地执行,其中对于NAND闪存或其它非易失性存储设备所存储的数据的各个字节或各条指令的寻址得不到传统系统的支持。
在一个通用方面,与设备相关联的复位信号被检测。作为响应,从非易失性存储器位置检索数据的预定页到与该非易失性存储器相关联的寄存器中,其中从非易失性存储器中检索每页数据作为一个单元,且该页数据包括用于引导设备的指令。读取存储在寄存器中的数据的命令被接收。命令包括标识寄存器中的一条或多条指令的位置的地址。然后从寄存器中检索一条或多条指令以便由处理器执行。
实施方式可以包括以下特征中的一个或多个。从寄存器检索一条或多条指令以便在处理器上直接执行,而不需要在另一存储器中存储指令。执行检索一条或多条指令,作为就地执行(execution in place)的一部分。非易失性存储器是NAND闪存。响应于检测到复位信号,自动执行检索数据的预定页。读取存储在寄存器中的数据的多个命令被接收,并且响应于命令而读取的数据包括用于加载单独的引导加载器代码到与处理器相关联的随机存取存储器的代码。单独的引导加载器代码适于将操作系统或应用代码从非易失性存储器加载到随机存取存储器中。非易失性存储器适于使得能够响应于读取存储在寄存器中的数据的命令,随机存取寄存器中的任意字节。来自处理器的指令提取命令被转换成至少一个读取存储在寄存器中的数据的命令。
由主机设备中的处理器接收复位信号,并且主机设备指令非易失性存储器加载数据的预定页。可替换地,复位信号由非易失性存储器接收,该非易失性存储器响应于该复位信号来加载数据的预定页。进行就地执行包括接收来自处理器的一个或多个命令,其中每个命令提供读取寄存器中相应的一个或多个字节的数据的指令,并且响应于每个命令将相应的一个或多个字节的数据发送给处理器。从寄存器中的不同地址迭代地读取和执行代码。寄存器中的指令包括用于将附加的引导加载器代码从非易失性存储器读取到单独的随机存取存储器中以便由处理器执行的加载器代码。引导加载器代码适于从使用文件系统的非易失性存储器中检索应用或操作系统代码。加载器代码和引导加载器代码使用低级存取技术来存取存储在非易失性存储器中的数据。
在另一个通用方面,非易失性存储器包括被分组为页的第一数量的存储器位置,并且每页数据包括第二数量的存储器位置。第二数量在数量上小于第一数量,并且通过检索作为一个整体的每一页,可存取存储器位置中的数据。寄存器用于临时存储从存储器位置检索到的各页数据,并且控制器适于响应于预定条件将数据的预定页检索到寄存器中,并且通过检索寄存器中一地址处的数据,进一步响应某些接收到的命令。
实施方式可以包括以下特征中的一个或多个。预定条件包括接收到复位信号。某些接收到的命令是从处理器接收的,并且包括对于寄存器中的地址的指示。检索到的数据被发送给处理器以便响应于接收到的命令而就地执行。
在一些实施方式中,一种用于引导设备的方法包括检测与所述设备相关联的复位信号。从NAND闪存块检索数据的预定页到与所述NAND闪存块相关联的NAND寄存器中。每页数据作为一个单元而被检索,且所述数据页包括NAND加载器代码。接收读取存储在所述NAND寄存器中的数据的命令。所述命令包括标识所述NAND加载器代码在所述NAND寄存器中的至少一条指令的位置的特定列地址。从所述NAND寄存器中检索所述NAND加载器代码的所述至少一条指令以便由处理器执行。
在另一些实施方式中,一种引导设备的方法包括接收复位信号。从NAND闪存块检索数据的预定页到与所述NAND闪存块相关联的NAND寄存器中。每页数据作为一个单元而被检索,且所述数据页包括NAND加载器代码。响应于所述复位信号,从NAND闪存中的存储位置加载所述预定页到所述NAND闪存的寄存器中。所述数据页包括用于检索存储在所述NAND闪存中的引导加载器代码的指令。接收读取存储在所述NAND寄存器中的数据的命令。所述命令包括标识所述引导加载器代码在所述NAND寄存器中的位置的特定列地址。对所述寄存器中的指令进行就地执行。
在另一些实施方式中,一种非易失性存储器包括被分组为页的第一多个存储器块。每页数据包括第二多个存储器位置,所述第二多个存储器位置的数量小于所述第一多个存储器位置的数量。通过检索作为一个整体的每一页,可存取所述存储器位置中的数据。所述非易失性存储器还包括寄存器以及控制器。所述控制器适于响应于预定条件将数据的预定页检索到所述寄存器中,并且适于通过检索所述寄存器中一地址处的数据,响应接收到的命令。
在另一些实施方式中,一种引导系统包括用于检测设备的预定条件的装置。所述引导系统还包括用于从NAND闪存块检索数据的预定页到NAND寄存器中的装置。每页数据作为一个单元而被检索,且所述数据页包括NAND加载器代码。所述引导系统还包括用于接收读取存储在所述NAND寄存器中的数据的命令的装置。所述命令包括标识所述NAND加载器代码在所述NAND寄存器中的至少一条指令的位置的特定列地址。所述引导系统还包括用于响应于所述读取数据的命令而从所述寄存器发送所述至少一条指令的装置。
在另一些实施方式中,一种用于引导设备的设备包括用于检测与所述设备相关联的复位信号的装置。所述设备还包括用于从NAND闪存块检索数据的预定页到与所述NAND闪存块相关联的NAND寄存器中的装置。每页数据作为一个单元而被检索,且所述数据页包括NAND加载器代码。所述设备还包括用于接收读取存储在所述NAND寄存器中的数据的命令的装置。所述命令包括标识所述NAND加载器代码在所述NAND寄存器中的至少一条指令的位置的特定列地址。所述设备还包括用于从所述NAND寄存器中检索所述NAND加载器代码的所述至少一条指令以便由处理器执行的装置。
在另一些实施方式中,一种主机设备包括用于接收复位信号的装置。所述主机设备还包括用于从NAND闪存块检索数据的预定页到与所述NAND闪存块相关联的NAND寄存器中的装置。每页数据作为一个单元而被检索,且所述数据页包括NAND加载器代码。所述主机设备还包括用于响应于所述复位信号,从NAND闪存中的存储位置加载所述预定页到所述NAND闪存的寄存器中的装置。所述数据页包括用于检索存储在所述NAND闪存中的引导加载器代码的指令。所述主机设备还包括用于接收读取存储在所述NAND寄存器中的数据的命令的装置。所述命令包括标识所述引导加载器代码在所述NAND寄存器中的位置的特定列地址。所述主机设备还包括用于对所述寄存器中的指令进行就地执行的装置。所述主机设备还包括用于从所述寄存器中的不同地址迭代地读取代码并执行该代码的装置。
在附图和以下描述中给出了一个或多个实施方式的细节。其它特征将从说明和附图以及从权利要求中清楚了解。
附图说明
图1是示出可以使用存储在NAND闪存中的加载器代码来初始化的系统的框图。
图2是图解用于引导计算机系统的方法的流程图。
图3是图解在系统复位期间由复位逻辑、微处理器、NAND内部控制器、寄存器和NAND闪存执行的操作的流程图。
图4是图解NAND加载器代码的一个实施方式的流程图。
各个附图中的相同附图标记指示相同的元件。
具体实施方式
图1示出计算机系统100,计算机系统100能够从NAND闪存芯片102直接执行至少一部分引导处理。计算机系统100可以是便携式设备,诸如便携式音乐设备(例如,便携式MPEG-1音频层3(MP3)播放器),诸如可从位于Cupertino,California的Apple Computer获得的iPodTM、个人数字助理、蜂窝电话、手持型计算机、可移动存储器设备(例如,通用串行总线(USB)闪存驱动器)或其它嵌入式系统。引导处理可以是一组操作,其在计算机系统100被复位时初始化各种软件部件,诸如操作系统和应用程序,以及诸如存储器和其它外围设备之类的硬件。例如,如果计算机系统100是MP3播放器,则引导处理可以包括加载和执行操作系统、运行MP3重放应用,以及从NAND闪存初始化设备驱动器。
如图1所示,计算机系统100还包括复位逻辑104和主机设备106。主机设备106包括微处理器108和随机存取存储器(RAM)110,诸如动态RAM或静态RAM。微处理器108能够检索和执行存储在NAND闪存芯片102中的软件指令。如图1所示,微处理器108可以发送指令到NAND闪存芯片102和从NAND闪存芯片102中检索数据。例如,主机设备106可以向NAND闪存芯片102发送写命令和用于写数据的存储器地址目的地。此外,主机设备106可以向NAND闪存芯片102发送读命令和页地址,以便检索NAND闪存芯片102中的特定存储器页。尽管本说明书着重于NAND闪存的使用,所述技术还可以应用于被设计成以逐块或逐页方式来检索数据的其它类型存储器(例如,其中不能从每一块或页中的各个字节地址检索数据的存储器)。
NAND闪存芯片102包括一个或多个闪存管芯(flash memorydie),其中数据存储在闪存块和闪存页中。如图所示,NAND闪存芯片102包括闪存管芯112。尽管只示出了一个闪存管芯,但是NAND闪存芯片102可以包括任意可行数量的闪存管芯,诸如两个、三个、四个、八个、或十六个。尽管只示出了三个闪存块114,但是闪存管芯112通常包括大量闪存块114。每个闪存块114包括多个(例如,64个或128个)闪存页116。
NAND闪存芯片102通常在文件系统(例如,分层文件系统(HFS)、文件分配表(FAT)文件系统、新技术文件系统(NTFS)、第二版扩展文件系统ext2、ISO 9660文件系统、通用盘格式(UDF)等)中存储程序指令和/或其他数据(例如,用户数据,诸如MP3文件)。当数据被存储在文件系统中时,可能仅能在预定的段或具有预定块大小的块中存取数据。例如,在计算机系统100中,可在具有闪存页116的大小的块中检索数据。在某些实施方式中,操作系统和应用程序被存储在NAND闪存芯片102的文件系统中。
NAND闪存芯片102也可用于使用低级存取技术(即,不使用文件系统)来存储并检索数据。数据无需文件系统而被存储,例如,数据可被存储在一个或多个预定块或页中,而无需使用专门的分配技术、元数据等。
NAND闪存芯片102还可包括寄存器118和内部控制器120。内部控制器120操作以便接收来自外部处理器(例如,微处理器108)的命令,诸如读命令或写命令,从而使能对闪存块114中的数据的存取。寄存器118提供数据段——诸如一页数据——的临时存储,从而该数据可由主机设备106的微处理器108加载到例如RAM 110中。当微处理器108发送读取存储在NAND闪存芯片102上的数据的请求时,包含所请求的数据的适当闪存页被相继从闪存块114加载到寄存器118中。然后,可将每页作为一个整体从主机设备106的寄存器118加载到RAM 110。
典型地,用于执行引导过程的引导代码被存储在与主机设备106和/或微处理器108相关联的ROM或NOR闪存中。这类存储器通常支持这样的寻址方案,其提供对引导代码所在的ROM或NOR闪存中的数据的各个字节的存取。在某些情况下,ROM或NOR闪存中的引导加载器代码可用于为微处理器108将附加的引导代码从另一个位置加载到RAM 110中。一旦设备106被引导,存储在其他非易失性存储器(例如,NAND闪存)中的数据——包括软件代码和用户数据(例如,MP3文件)——可由微处理器108存取。
但是,在计算机系统100中,执行引导过程的引导代码可被存储在NAND闪存芯片102中。当计算机系统100被复位或被加电时,主机设备106可从NAND闪存芯片102直接执行(即,就地执行(XIP))至少一部分引导代码(例如引导加载器),而无需首先将该部分引导代码移入另一个存储器(例如主机设备106中的RAM 110)中。
按照惯例,就地执行(execution in place)不能使用NAND闪存来进行,因为数据只能在块或页中被检索。然而,在计算机系统100中,主机微处理器108可通过寻址在寄存器118中的位置,从NAND闪存芯片102请求并检索数据的各个字节或字。例如,NAND闪存芯片102可支持这样一种能力,其通过将数据的块114或页116加载到寄存器118中并允许微处理器108请求寄存器118中的特定地址,而从NAND闪存芯片102检索数据的特定字节或字。这些能力可用于使微处理器108能够完成存储在NAND闪存芯片102中的代码的就地执行。出于描述的目的,如果代码不被移到RAM、或者闪存管芯112或NAND闪存芯片102之外的其他存储器,就地执行可包括被加载到闪存管芯112的寄存器118中的代码的执行。在某些实施方式中,至少部分引导代码(例如,初始加载器代码)被存储而无需文件系统。微处理器108可使用低级存取技术,诸如使用汇编语言或机器操作码(opcode),来存取这种代码。
微处理器108能够间接或直接地执行存储在NAND闪存芯片102中的代码。例如,微处理器108可通过先将包含代码的数据页加载到RAM 120中,间接执行存储在NAND闪存芯片102中的代码。然后,微处理器108可从RAM 110读取该代码并以传统方式执行该代码。
但是,为便于在计算机系统100中实施就地执行技术,NAND闪存芯片102的内部控制器120可被设计成支持这种寻址系统,其允许微处理器108单独地存取寄存器118中的数据的一部分——诸如一个字节——以便直接执行(即,无需将代码读入RAM 110)。例如,主机设备106可被修改成发送包括存储器页中的列地址的“简单读”命令,以用于一旦检索NAND闪存芯片102中的预定存储器页到NAND闪存芯片102中的寄存器118中,就在该页中随机地存取数据。在某些实施方式中,内部控制器120还可被编程用于当接收到复位信号、复位命令或其他特定信号时,自动加载数据的特定页到寄存器118中。因而,内部控制器120可将代码页预加载到寄存器118中。
然后,通过使用用于存取代码的简单读命令,微处理器108可通过寄存器118的列地址请求该代码。当系统100被复位时,微处理器108可利用该简单读命令来提取并直接执行至少一个引导指令。在某些实施方式中,内部控制器120可响应于来自微处理器108的第一命令将数据的一个或多个字节传送到寄存器118中,而不是自动加载数据的特定页到寄存器118中。然后,内部控制器120可接收来自微处理器108的随后的命令(例如,简单读命令),以将数据的一个或多个特定字节从寄存器118发送到微处理器108。
典型地,引导序列由复位逻辑104启动。复位逻辑104可发送复位信号到主机106和NAND闪存芯片102。可以机械地或电地实现复位逻辑104。在某些实施方式中,复位逻辑104可以是机械开关,诸如按钮,其在该机械开关被触发时,发送复位信号给主机设备106和NAND闪存芯片102。例如,机械开关可以是连接到下拉制动器的按钮。当按下按钮时,逻辑低信号可被生成并被发送给主机设备106和NAND闪存芯片102。在其他实施方式中,复位逻辑104可以从主机设备106光地或电地接收复位命令。然后,复位逻辑104可发送复位信号到主机106和NAND闪存芯片102。
当计算机系统100被重启时,例如当系统100被开启或复位时,计算机系统100在RAM 110中没有操作系统和应用软件。为了将可能存储在文件系统中的操作系统和/或其他软件从NAND闪存芯片102加载到RAM 110,微处理器108可执行引导过程以查找并加载操作系统。在某些实施方式中,可使用多阶段引导过程,直到该过程的最后一个加载操作系统,所述过程中有数个小程序彼此引发(summon)。例如,计算机系统100可利用3级(3-tie)引导过程来实现,其中实施了引导过程的三个阶段。第一阶段的代码(例如,初始加载器代码,或NAND加载器代码)可初始化一小部分硬件,诸如RAM 110,并从NAND闪存块114加载引导加载器代码。在第二阶段可执行引导加载器代码,以初始化计算机系统100中的其他硬件——诸如初始化设备驱动器,以及查找操作系统和应用软件并将其从NAND闪存块114加载到RAM 110。第二阶段引导加载器的一些例子是Linux Loader(LILO)和Grand Unified Bootloader(GRUB)。在第三阶段,操作系统和应用软件被执行以提供计算机系统100的正常功能。
在某些实施方式中,内部控制器120可被编程,以便在引导过程的第一阶段将NAND加载器代码从预定的闪存页(例如,页“0”)自动加载到寄存器118中。然后,微处理器108可使用简单读命令来从寄存器118中的NAND加载器代码中取出并直接执行各条指令或指令的子集,从而引导计算机系统100。例如,可利用允许从RAM 110或寄存器110中提取指令的逻辑来实现微处理器108。复位之后,微处理器108自动执行(即,利用就地执行)一系列指令以搜索引导加载器代码并将其加载到RAM 110中,所述一系列指令来自位于寄存器118中的预定地址处的NAND加载器代码。然后微处理器108执行存储在RAM110中的引导加载器代码以加载操作系统和应用软件。将在下面结合图4更详细地描速NAND加载器代码。
图2示出用于引导计算机系统的过程200的流程图,所述计算机系统是诸如图1的计算机系统100。可由内部存储器控制器来执行引导过程200,所述内部存储器控制器将代码段或代码页从预定的存储器地址自动加载到寄存器,并从该寄存器发送一条或多条指令到处理器,以便在接收到来自处理器的命令之后执行。例如,内部存储器控制器可以是内部控制器120。
计算机系统100被复位(在202)。例如,计算机系统100的用户可按下电源钮以开启计算机系统100。作为结果,复位逻辑104可发送复位信号给NAND闪存芯片102和主机设备106。可替换地,主机设备106可接收复位信号,并且微处理器108可将该复位命令转发给NAND闪存芯片102。内部控制器120检测该复位信号(在204)。
在检测到复位信号之后,内部控制器120从NAND闪存块114中检索数据的预定页到寄存器118中(在206)。可选择该页作为包括用在引导序列中的代码的页。在某些实施方式中,检索到的引导代码可以是引导过程的一个阶段,其可引发(summon)后面阶段中的引导代码完成该引导过程。例如,检索到的代码可以是NAND加载器代码,其用于定位和加载用以执行主引导操作的引导加载器。NAND加载器代码可使用低级存取技术来检索,而引导加载器可使用文件系统存取技术来检索。在其他实施方式中,执行所检索的引导代码可足以完成引导过程。换言之,被检索到寄存器118中的代码完全能够引导主机设备106。
内部控制器120接收用于读取寄存器118中的检索到的代码的命令(在208)。例如,内部控制器120可接收来自微处理器108的命令,以便从寄存器118中的特定的列地址读取数据。通常,在特定列地址处的数据包括用在引导序列中的一条或多条指令。该命令可以是由微处理器108发出的简单读命令。作为响应,内部控制器120可以从寄存器118发送所述一条或多条指令,以便由微处理器108执行而无需在另一个存储器中存储数据。换言之,微处理器108对所述一条或多条指令进行就地执行。
接下来,确定NAND加载器代码的执行是否完成(在212)。例如,当从微处理器108接收到传统的页存取命令(例如,读、写或擦除)时,内部控制器120可确定NAND加载器代码已完成。这样的命令可指令内部控制器120从闪存的另一页加载引导加载器。可替换地,当微处理器108拥有检索引导加载器所必需的信息时,可确定NAND加载器代码的就地执行已经完成。但是,在某些实施方式中,也可利用就地执行技术来执行引导加载器。在某些实施方式中,不必要明确地确定NAND加载器代码的执行已完成;相反,根据其自身的已编程操作,NAND加载器代码的执行可能仅仅导致转换为使用传统页存取命令。一旦完成了NAND加载器代码的执行,则过程200结束(在214)。否则,如果存在附加的NAND加载器代码,则过程200继续在另一个预定地址处从寄存器118中读取附加的代码。例如,一旦微处理器108执行初始指令或指令的子集,微处理器108可发送另一个简单读命令以便跳到下一条指令或指令的子集所位于的寄存器118中的另一个地址。
图3示出图解用于复位计算机系统100的、由各种部件执行的操作300的流程图。操作300可在计算机系统100的控制、监督和/或监控下执行。操作300也可由结合在计算机系统100中的其它处理和/或控制元件来补充或增加。尽管所示出的是由单个元件执行,但是部分或全部操作可由执行有形地(tangibly)嵌入在信号中的指令的一个或多个处理器来执行。该处理可使用模拟和/或数字硬件或技术来单独实现或与一个或多个处理器执行指令共同实现。为清楚起见,操作300被表示为发生在复位逻辑104、微处理器108、内部控制器120、寄存器118和NAND闪存块114处。但是,这些操作或类似操作也可由其他设备或位置来执行,或者具有不同的设备或位置配置。
在这个例子中,计算机系统100包括3级引导过程,其中微处理器108首先直接执行来自NAND闪存芯片102的NAND加载器代码(即,使用就地执行技术),然后通过将引导加载器代码加载到RAM 110中,执行引导加载器代码,最后加载并运行操作系统和应用程序,以正常使用主机设备106和/或计算机系统100。在这个例子中,当复位逻辑104接收到复位命令时,操作300开始。复位逻辑104响应于复位命令,产生复位信号(在302)并将该复位信号发送到微处理器108和内部控制器120。
内部控制器120通过从NAND闪存块114检索数据,将NAND加载器代码加载到寄存器118中(在304)。例如,内部控制器120可被编程以具有预定的页地址,使得内部控制器120一旦接收到复位信号,就发送将NAND加载器代码从预定的页地址加载到寄存器118的命令。例如,可利用NAND闪存芯片102中的机械开关或电路的硬连线,在制造阶段预设该预定的页地址。在可替换实施方式中,内部控制器120可接收来自微处理器108的命令,以将数据的预定页加载到寄存器118中用于引导。当内部控制器120从NAND闪存块114检索到数据时,寄存器118接收并存储所述NAND加载器代码(在306)。
在微处理器108接收到复位信号(在308)之后,微处理器108发出用于从寄存器118检索NAND加载器代码的下一指令的简单读命令。作为例子,当内部控制器120发送就绪信号给微处理器108时,微处理器108可开始从寄存器118检索指令。作为另一个例子,在预定数目的等待状态之后,微处理器108可开始从寄存器118检索指令。
简单读命令不同于传统的读命令,区别在于简单读命令允许微处理器108检索存储在寄存器118中的数据的被选择的部分以便直接执行。在某些实施方式中,通过转换在接收到复位信号后生成的传统的指令提取命令,而在微处理器108中生成简单读命令。在其他的实施方式中,可仅仅在接收到复位信号之后将微处理器108预编程来生成一系列简单读命令。每个简单读命令可用于检索一条或多条指令(例如,通过包括多于一个列地址)。
使用所述简单读命令,微处理器108可随机存取寄存器118,以检索下一条指令。例如,微处理器108可通过规定寄存器118中的列地址,从寄存器118检索指令。然后,当微处理器108接收到下一条指令时,微处理器108可直接执行该检索到的指令(在310)而无需将该指令加载到本地RAM中。在某些实施方式中,微处理器108可被预编程以具有一个地址,从而在复位之后检索第一条指令。例如,微处理器108可被预编程,使得复位之后被检索到的第一条指令位于寄存器118的地址“0”处。
微处理器108可使用各种方法来确定随后的指令的地址。在某些实施方式中,检索到的指令可包含关于下一条指令的地址的信息。在其他实施方式中,微处理器108可通过将当前指令的地址增加一个固定的整数,例如4,来计算下一条指令的地址。在某些实施方式中,微处理器108被预编程以具有一系列地址,将根据该一系列地址从寄存器118检索指令。在某些实施方式中,在微处理器108执行引导代码的其他部分之前,微处理器108可多次重复步骤308和310。NAND加载器代码的执行可初始化RAM 110,以便在将引导加载器代码加载到RAM110的同时,存储引导加载器代码。
微处理器108执行指令(在312)以便从NAND闪存块114查找并加载引导加载器代码。尽管查找引导加载器代码的操作(在312)作为与执行所检索到的NAND加载器代码(在310)分开的操作而被图示,以便于说明和讨论,但是应当理解,典型地,所检索到的NAND加载器指令的功能和操作之一是要查找或检索引导加载器代码。因此,在312示出的操作可与在310的操作重叠或作为其子集。在某些实施方式中,微处理器108使用低级存取技术,诸如使用机器opcode(操作码),而不是使用诸如FAT或HFS这样的文件系统,来从NAND闪存块114查找并检索引导加载器代码。微处理器108在RAM 110中存储检索到的引导加载器代码,并从RAM 110执行该引导加载器代码(在314)。如同在传统系统中一样,引导加载器代码操作以加载并启动操作系统和/或应用软件,从而将主机设备106或计算机系统100置于正常操作模式。
图4示出可由NAND加载器代码执行的过程400的流程图。如上所述,NAND加载器代码被存储在NAND闪存芯片102的预定页中。在某些实施方式中,当内部控制器120检测到复位信号时,内部控制器120自动加载NAND加载器代码到寄存器118中。可由微处理器108从寄存器118直接执行包括在NAND加载器代码中的指令。因而,内部控制器120加载NAND加载器代码到寄存器中(在402),并且微处理器108开始直接执行从NAND闪存芯片102检索到的NAND加载器代码中的所述指令。
利用NAND加载器代码中的指令,微处理器108初始化硬件(在404),诸如微处理器108中的RAM 110和其他用于引导的硬件(例如,程序计数器和状态寄存器)。然后,微处理器108在NAND闪存中查找存储在另一个位置处的NAND加载器代码(在406)。在某些实施方式中,NAND加载器代码中的某些指令可包括引导加载器代码的页地址。在其他实施方式中,NAND加载器代码可包括使微处理器108能够计算引导加载器代码的存储器地址的指令。例如,所述指令可包括偏移值,而引导加载器代码的存储器地址是当前指令的地址和该偏移值之和。
接下来,微处理器108将引导加载器代码读取到RAM 110中(在408)。微处理器108可使用低级存取技术将引导加载器代码读取到RAM 110中。在引导加载器代码被存储到RAM 110之后,微处理器108执行NAND加载器代码中的指令,以将执行控制传送给引导加载器代码(在410)。过程400结束于412。
本发明以及本说明书所述功能性操作的大部分都能够以数字电子电路或者以计算机软件、固件或硬件——包括本说明书中公开的结构装置及其结构等价物——或以它们的组合来实现。本发明可实现为一个或多个计算机程序产品,即有形地(tangibly)嵌入在信息载体中——例如在机器可读存储设备中或在传播信号中——的一个或多个计算机程序,以便由数据处理装置执行或者控制数据处理装置的操作,所述数据处理装置是例如可编程处理器、计算机、或多个计算机。计算机程序(也称为程序、软件、软件应用,或代码)可以包括编译或解释语言的任何程序语言形式写成,并且可以配置为任何形式,包括作为独立程序或作为模块、部件、子例程、或其他适合在计算环境中使用的单元。计算机程序不一定要对应于文件。程序可以被存储在保持其他程序或数据的文件的一部分中、在专用于正被讨论的程序的单个文件中,或者在多个协同(coordinated)文件(例如,存储一个或多个模块、子程序、或代码部分的多个文件)中。计算机程序可被配置成在一个计算机上执行,或者在位于同一地点或位于分布在多个地点并由通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流程,包括本发明的方法步骤,可由一个或多个可编程处理器来执行,所述可编程处理器通过操作输入数据并生成输出,来执行一个或多个实现本发明的功能的计算机程序。所述过程和逻辑流程的多个部分也可由专用逻辑电路来执行,并且本发明的装置可被实现为专用逻辑电路,所述专用逻辑电路是例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适于执行计算机程序的处理器包括,例如,通用和专用微处理器,以及任何种类的数字计算机中的任意一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或这两者中检索指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,或者计算机被可操作地耦接以便从上述大容量存储设备接收数据,或发送数据到上述大容量存储设备。适于包含计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,例如包括例如EPROM、EEPROM和闪存设备的半导体存储设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。在某些实施方式中,所述过程和技术可被限制为与NAND闪存或其他非易失性存储器一起使用,其中各个存储器位置不能被分开寻址。处理器和存储器可由专用逻辑电路补充或与之结合。
为提供与用户的交互,本发明可在计算机上实现,所述计算机具有向用户显示信息的显示设备,如CRT(阴极射线管)或LCD(液晶显示器)监视器,并具有键盘和指点设备,如鼠标或轨迹球,用户可通过其向计算机提供输入。其他种类的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语言、或触觉输入。
大量的实施方式已经得到描述。但是,应当理解,可以作出各种修改。例如,在某些情况下,可以采用与所描述和图示的顺序不同的顺序执行操作。此外,所述技术可以与不同于NAND闪存的非易失性存储器——诸如其中数据通常不能被随机存取和/或逐字节检索的其他存储器——结合使用。而且,可以响应于除接收到复位信号之外的一个或多个预定条件而执行从闪存块将数据的预定页加载到寄存器中。因此,其他实施方式在所附权利要求的范围之内。

Claims (40)

1.一种用于引导设备的方法,所述方法包括:
检测与所述设备相关联的复位信号;
从NAND闪存块检索数据的预定页到与所述NAND闪存块相关联的NAND寄存器中,其中每页数据作为一个单元而被检索,且所述数据页包括NAND加载器代码;
接收读取存储在所述NAND寄存器中的数据的命令,其中所述命令包括标识所述NAND加载器代码在所述NAND寄存器中的至少一条指令的位置的特定列地址;以及
从所述NAND寄存器中检索所述NAND加载器代码的所述至少一条指令以便由处理器执行。
2.如权利要求1所述的方法,其中从所述寄存器检索所述至少一条指令以便在所述处理器上直接执行,而无需在另一存储器中存储所述至少一条指令。
3.如权利要求1所述的方法,其中作为就地执行的一部分执行检索所述至少一条指令。
4.如权利要求1所述的方法,其中响应于检测到所述复位信号,自动执行检索数据的预定页。
5.如权利要求1所述的方法,还包括:接收读取存储在所述寄存器中的数据的多个命令,其中响应于所述多个命令而读取的数据包括用于加载单独的引导加载器代码到与所述处理器相关联的随机存取存储器的代码。
6.如权利要求5所述的方法,其中所述单独的引导加载器代码适于将操作系统或应用代码从所述NAND闪存块加载到所述随机存取存储器。
7.如权利要求1所述的方法,其中所述NAND闪存块适于使得能够响应于读取存储在所述寄存器中的数据的命令,随机存取所述寄存器中的任意字节。
8.如权利要求1所述的方法,还包括:将来自所述处理器的指令提取命令转换成至少一个读取存储在所述寄存器中的数据的命令。
9.一种引导设备的方法,所述方法包括:
接收复位信号;
从NAND闪存块检索数据的预定页到与所述NAND闪存块相关联的NAND寄存器中,其中每页数据作为一个单元而被检索,且所述数据页包括NAND加载器代码;
响应于所述复位信号,加载所述预定页到NAND闪存的寄存器中,其中所述数据页包括用于检索存储在所述NAND闪存中的引导加载器代码的指令;
接收读取存储在所述NAND寄存器中的数据的命令,其中所述命令包括标识所述引导加载器代码在所述NAND寄存器中的位置的特定列地址;以及
对所述寄存器中的指令进行就地执行。
10.如权利要求9所述的方法,其中所述复位信号由主机设备中的处理器接收,并且所述主机设备指令所述NAND闪存加载所述数据的预定页。
11.如权利要求9所述的方法,其中所述复位信号由所述NAND闪存接收,并且所述NAND闪存响应于所述复位信号而加载所述数据的预定页。
12.如权利要求9所述的方法,还包括:
接收来自处理器的一个或多个命令,每个命令提供读取所述寄存器中相应的一个或多个字节的数据的指令;以及
响应于每个命令将所述相应的一个或多个字节的数据发送给所述处理器。
13.如权利要求12所述的方法,其中从所述寄存器发送所述相应的一个或多个字节的数据以便由所述处理器执行,而无需在单独的随机存取存储器中另外存储所述一个或多个字节的数据。
14.如权利要求9所述的方法,还包括:从所述寄存器中的不同地址迭代地读取代码并执行该代码。
15.如权利要求9所述的方法,其中所述寄存器中的所述指令包括用于将附加的引导加载器代码从所述NAND闪存读取到单独的随机存取存储器中以便由处理器执行的加载器代码。
16.如权利要求15所述的方法,其中所述引导加载器代码适于从使用文件系统的所述NAND闪存中检索应用或操作系统代码。
17.如权利要求15所述的方法,其中所述加载器代码和所述引导加载器代码使用低级存取技术来存取存储在所述NAND闪存中的数据。
18.一种非易失性存储器,包括:
被分组为页的第一多个存储器块,其中每页数据包括第二多个存储器位置,所述第二多个存储器位置的数量小于所述第一多个存储器位置的数量,并且通过检索作为一个整体的每一页,可存取所述存储器位置中的数据;
寄存器;以及
控制器,所述控制器适于响应于预定条件将数据的预定页检索到所述寄存器中,并且适于通过检索所述寄存器中一地址处的数据,响应接收到的命令。
19.如权利要求18所述的非易失性存储器,其中所述预定条件包括接收到复位信号。
20.如权利要求18所述的非易失性存储器,其中所述接收到的命令是从处理器接收的,并且包括对于所述寄存器中的所述地址的指示。
21.如权利要求18所述的非易失性存储器,其中所述检索到的数据被发送给处理器以便响应于所述接收到的命令而就地执行。
22.一种引导系统,包括:
用于检测设备的预定条件的装置;
用于从NAND闪存块检索数据的预定页到NAND寄存器中的装置,其中每页数据作为一个单元而被检索,且所述数据页包括NAND加载器代码;
用于接收读取存储在所述NAND寄存器中的数据的命令的装置,其中所述命令包括标识所述NAND加载器代码在所述NAND寄存器中的至少一条指令的位置的特定列地址;以及
用于响应于所述读取数据的命令而从所述寄存器发送所述至少一条指令的装置。
23.如权利要求22所述的系统,还包括用于进行所述至少一条指令的就地执行的装置。
24.如权利要求22所述的系统,其中所述至少一条指令包括用于从所述非易失性存储器检索引导加载器代码的指令,所述系统还包括用于检索并执行所述引导加载器代码的装置。
25.一种用于引导设备的设备,所述设备包括:
用于检测与所述设备相关联的复位信号的装置;
用于从NAND闪存块检索数据的预定页到与所述NAND闪存块相关联的NAND寄存器中的装置,其中每页数据作为一个单元而被检索,且所述数据页包括NAND加载器代码;
用于接收读取存储在所述NAND寄存器中的数据的命令的装置,其中所述命令包括标识所述NAND加载器代码在所述NAND寄存器中的至少一条指令的位置的特定列地址;以及
用于从所述NAND寄存器中检索所述NAND加载器代码的所述至少一条指令以便由处理器执行的装置。
26.如权利要求25所述的设备,其中用于从所述NAND寄存器中检索所述NAND加载器代码的所述至少一条指令的装置从所述寄存器检索所述至少一条指令以便在所述处理器上直接执行,而无需在另一存储器中存储所述至少一条指令。
27.如权利要求25所述的设备,其中用于从所述NAND寄存器中检索所述NAND加载器代码的所述至少一条指令的装置执行检索所述至少一条指令作为就地执行的一部分。
28.如权利要求25所述的设备,其中用于从NAND闪存块检索数据的预定页的装置响应于检测到所述复位信号,自动执行检索数据的预定页。
29.如权利要求25所述的设备,还包括:用于接收读取存储在所述寄存器中的数据的多个命令的装置,其中响应于所述多个命令而读取的数据包括用于加载单独的引导加载器代码到与所述处理器相关联的随机存取存储器的代码。
30.如权利要求29所述的设备,其中所述单独的引导加载器代码适于将操作系统或应用代码从所述NAND闪存块加载到所述随机存取存储器。
31.如权利要求25所述的设备,其中所述NAND闪存块适于使得能够响应于读取存储在所述寄存器中的数据的命令,随机存取所述寄存器中的任意字节。
32.如权利要求25所述的设备,还包括:用于将来自所述处理器的指令提取命令转换成至少一个读取存储在所述寄存器中的数据的命令的装置。
33.一种主机设备,包括:
用于接收复位信号的装置;
用于从NAND闪存块检索数据的预定页到与所述NAND闪存块相关联的NAND寄存器中的装置,其中每页数据作为一个单元而被检索,且所述数据页包括NAND加载器代码;
用于响应于所述复位信号,加载所述预定页到NAND闪存的寄存器中的装置,其中所述数据页包括用于检索存储在所述NAND闪存中的引导加载器代码的指令;
用于接收读取存储在所述NAND寄存器中的数据的命令的装置,其中所述命令包括标识所述引导加载器代码在所述NAND寄存器中的位置的特定列地址;
用于对所述寄存器中的指令进行就地执行的装置;以及
用于从所述寄存器中的不同地址迭代地读取代码并执行该代码的装置。
34.如权利要求33所述的主机设备,其中所述复位信号由所述主机设备中用于接收复位信号的装置接收,并且所述主机设备指令用于加载数据的预定页的装置加载所述数据的预定页。
35.如权利要求33所述的主机设备,其中所述复位信号由所述用于接收复位信号的装置接收,并且所述用于加载数据的预定页的装置响应于所述复位信号而加载所述数据的预定页。
36.如权利要求33所述的主机设备,其中用于进行就地执行的装置包括:
用于接收来自处理器的一个或多个命令的单元,每个命令提供读取所述寄存器中相应的一个或多个字节的数据的指令;以及
用于响应于每个命令将所述相应的一个或多个字节的数据发送给所述处理器的单元。
37.如权利要求36所述的主机设备,其中所述用于发送所述相应的一个或多个字节的数据的单元从所述寄存器发送所述相应的一个或多个字节的数据以便由所述处理器执行,而无需在单独的随机存取存储器中另外存储所述一个或多个字节的数据。
38.如权利要求33所述的主机设备,其中所述用于对所述寄存器中的指令进行就地执行的装置包括:用于将附加的引导加载器代码从所述NAND闪存读取到单独的随机存取存储器中以便由处理器执行的加载器代码的单元。
39.如权利要求38所述的主机设备,其中所述引导加载器代码适于从使用文件系统的所述NAND闪存中检索应用或操作系统代码。
40.如权利要求38所述的主机设备,其中所述加载器代码和所述引导加载器代码使用低级存取技术来存取存储在所述NAND闪存中的数据。
CN2007800129114A 2006-04-10 2007-04-10 用于引导非易失性存储器的方法、设备和系统 Active CN101421701B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/400,854 US7849302B2 (en) 2006-04-10 2006-04-10 Direct boot arrangement using a NAND flash memory
US11/400,854 2006-04-10
PCT/US2007/066333 WO2007121181A1 (en) 2006-04-10 2007-04-10 Direct boot arrangement using a nand flash memory

Publications (2)

Publication Number Publication Date
CN101421701A CN101421701A (zh) 2009-04-29
CN101421701B true CN101421701B (zh) 2013-01-02

Family

ID=38510933

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800129114A Active CN101421701B (zh) 2006-04-10 2007-04-10 用于引导非易失性存储器的方法、设备和系统

Country Status (6)

Country Link
US (4) US7849302B2 (zh)
EP (2) EP3299958B1 (zh)
JP (1) JP5284946B2 (zh)
KR (1) KR101035473B1 (zh)
CN (1) CN101421701B (zh)
WO (1) WO2007121181A1 (zh)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7596709B2 (en) * 2000-12-30 2009-09-29 Intel Corporation CPU power management based on utilization with lowest performance mode at the mid-utilization range
KR100804647B1 (ko) * 2005-11-15 2008-02-20 삼성전자주식회사 병렬형 플래시 인터페이스를 지원하는 직렬형 플래시메모리 장치를 이용한 시스템 부팅 방법 및 장치
KR101030385B1 (ko) 2006-02-13 2011-04-20 삼성전자주식회사 내부 메모리만을 가지는 시스템의 부팅 장치 및 방법
US7822958B1 (en) * 2006-03-10 2010-10-26 Altera Corporation Booting mechanism for FPGA-based embedded system
US7849302B2 (en) 2006-04-10 2010-12-07 Apple Inc. Direct boot arrangement using a NAND flash memory
KR20080011627A (ko) * 2006-07-31 2008-02-05 윤동구 컴퓨터 시스템 및 이 시스템의 부팅 방법
TWI327290B (en) * 2006-10-03 2010-07-11 Magic Pixel Inc Electronic system with nand flash memory storing boot code and a highly reliable boot up method
KR101395778B1 (ko) * 2007-03-14 2014-05-19 삼성전자주식회사 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법
US8028155B1 (en) 2007-06-06 2011-09-27 American Megatrends, Inc. Initiating an operating system boot from firmware
KR101211503B1 (ko) * 2007-10-02 2012-12-12 삼성전자주식회사 부팅 시스템, 그 시스템을 구비한 화상형성장치 및 그제어방법
US7886141B2 (en) * 2007-10-27 2011-02-08 Asix Electronics Corporation Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems
TWI383319B (zh) * 2008-11-26 2013-01-21 Via Tech Inc 電腦系統及其開機方法
JP2010134741A (ja) * 2008-12-05 2010-06-17 Internatl Business Mach Corp <Ibm> プログラムを実行する方法およびシステム
JP2010140266A (ja) * 2008-12-11 2010-06-24 Toshiba Corp 電子デバイスシステムと電子デバイス
KR101542878B1 (ko) * 2009-02-13 2015-08-07 삼성전자주식회사 버퍼램을 포함하는 불휘발성 메모리 장치 및 그것의 부트 코드 관리 방법
CN102460383A (zh) * 2009-06-30 2012-05-16 松下电器产业株式会社 数据处理方法、半导体集成电路
US10360143B2 (en) 2010-07-01 2019-07-23 Qualcomm Incorporated Parallel use of integrated non-volatile memory and main volatile memory within a mobile device
TWI456577B (zh) * 2010-08-10 2014-10-11 Hon Hai Prec Ind Co Ltd 反及閘快閃記憶體啓動裝置及使用方法
US8799555B2 (en) * 2011-04-14 2014-08-05 Apple Inc. Boot data storage schemes for electronic devices
EP2557497A1 (en) * 2011-08-08 2013-02-13 Advanced Digital Broadcast S.A. Method for improving booting of a computing device
CN103946816B (zh) * 2011-09-30 2018-06-26 英特尔公司 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram)
US9348783B2 (en) 2012-04-19 2016-05-24 Lockheed Martin Corporation Apparatus and method emulating a parallel interface to effect parallel data transfer from serial flash memory
US8990549B2 (en) 2012-07-12 2015-03-24 Freescale Semiconductor, Inc. Method and system for booting electronic device from NAND flash memory
JP5971022B2 (ja) * 2012-08-15 2016-08-17 富士ゼロックス株式会社 画像形成装置
US8873747B2 (en) 2012-09-25 2014-10-28 Apple Inc. Key management using security enclave processor
US9047471B2 (en) * 2012-09-25 2015-06-02 Apple Inc. Security enclave processor boot control
JP5619198B2 (ja) * 2013-02-04 2014-11-05 株式会社フィックスターズ 情報処理装置、情報処理方法、およびプログラム
KR20140100008A (ko) 2013-02-05 2014-08-14 삼성전자주식회사 휘발성 메모리 장치의 구동 방법 및 휘발성 메모리 장치의 테스트 방법
US9471357B2 (en) * 2013-09-13 2016-10-18 American Megatrends, Inc. Monitoring virtual machine interface and local graphical user interface on a thin client and alternating therebetween
TWI540508B (zh) * 2013-11-01 2016-07-01 慧榮科技股份有限公司 韌體載入系統以及其韌體載入方法
US9436480B1 (en) * 2013-11-08 2016-09-06 Western Digital Technologies, Inc. Firmware RAM usage without overlays
WO2015112126A1 (en) * 2014-01-22 2015-07-30 Hewlett Packard Development Company, L.P. Byte-addressable non-volatile read-write main memory partitioned into regions including metadata region
US9547778B1 (en) 2014-09-26 2017-01-17 Apple Inc. Secure public key acceleration
US9479265B2 (en) * 2015-02-16 2016-10-25 American Megatrends, Inc. System and method for high speed and efficient virtual desktop insfrastructure using photonics
TWI573033B (zh) * 2016-01-14 2017-03-01 群聯電子股份有限公司 資料搜尋方法、記憶體儲存裝置及記憶體控制電路單元
CN106991055B (zh) * 2016-01-21 2021-01-12 群联电子股份有限公司 数据搜索方法、存储器存储装置及存储器控制电路单元
CN106302261B (zh) * 2016-08-02 2019-09-17 青岛海信电器股份有限公司 一种控制命令转发的方法和装置
KR102387461B1 (ko) 2017-07-24 2022-04-15 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 이의 동작 방법
TWI645296B (zh) * 2017-10-17 2018-12-21 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體操作方法
CN108920194A (zh) * 2018-06-08 2018-11-30 山东超越数控电子股份有限公司 一种国产平台bios启动ext文件系统的方法
TWI677879B (zh) * 2018-09-03 2019-11-21 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
US10852949B2 (en) * 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US11237838B2 (en) * 2020-01-02 2022-02-01 Western Digital Technologies, Inc. Storage system and method for enabling a direct accessible boot block in a memory die
CN115151895A (zh) * 2020-04-01 2022-10-04 松下知识产权经营株式会社 存储系统
US11640308B2 (en) 2021-02-19 2023-05-02 Macronix International Co., Ltd. Serial NAND flash with XiP capability
CN114253615B (zh) * 2021-12-16 2023-08-11 安天科技集团股份有限公司 一种引导程序设置方法、装置、电子设备及存储介质
WO2024044876A1 (en) * 2022-08-29 2024-03-07 Micron Technology, Inc. Receiving executable instructions from volatile memory

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0617363B1 (en) 1989-04-13 2000-01-26 SanDisk Corporation Defective cell substitution in EEprom array
US5663901A (en) 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
JPH05282882A (ja) * 1991-12-19 1993-10-29 Toshiba Corp 不揮発性半導体メモリ
US7137011B1 (en) 1993-09-01 2006-11-14 Sandisk Corporation Removable mother/daughter peripheral card
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5748551A (en) * 1995-12-29 1998-05-05 Micron Technology, Inc. Memory device with multiple internal banks and staggered command execution
US5892777A (en) * 1997-05-05 1999-04-06 Motorola, Inc. Apparatus and method for observing the mode of a memory device
KR100274602B1 (ko) 1997-11-20 2000-12-15 윤종용 동기형 메모리 장치
JP4252139B2 (ja) * 1998-12-16 2009-04-08 株式会社日立製作所 記憶装置システム
US6601167B1 (en) * 2000-01-14 2003-07-29 Advanced Micro Devices, Inc. Computer system initialization with boot program stored in sequential access memory, controlled by a boot loader to control and execute the boot program
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
AU2001249686A1 (en) * 2000-03-30 2001-10-15 Micron Technology, Inc. Interface command architecture for synchronous flash memory
US6314049B1 (en) * 2000-03-30 2001-11-06 Micron Technology, Inc. Elimination of precharge operation in synchronous flash memory
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP4017177B2 (ja) * 2001-02-28 2007-12-05 スパンション エルエルシー メモリ装置
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US7234052B2 (en) * 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
US20030206442A1 (en) * 2002-05-02 2003-11-06 Jerry Tang Flash memory bridiging device, method and application system
US6721820B2 (en) 2002-05-15 2004-04-13 M-Systems Flash Disk Pioneers Ltd. Method for improving performance of a flash-based storage system using specialized flash controllers
KR100463201B1 (ko) * 2002-05-28 2004-12-23 삼성전자주식회사 파워 검출 회로, 이를 이용한 플래시 메모리 장치, 그 플래시 메모리 장치의 파워-온 독출 신호 발생 방법 및 플래시 메모리 장치의 안정적인 파워-온 독출 방법
KR100448905B1 (ko) 2002-07-29 2004-09-16 삼성전자주식회사 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치
US7082525B2 (en) * 2002-10-02 2006-07-25 Sandisk Corporation Booting from non-linear memory
KR100493884B1 (ko) 2003-01-09 2005-06-10 삼성전자주식회사 시리얼 플래시 메모리에서의 현지 실행을 위한 제어 장치및 그 방법, 이를 이용한 플래시 메모리 칩
WO2004086363A2 (en) 2003-03-27 2004-10-07 M-Systems Flash Disk Pioneers Ltd. Data storage device with full access by all users
JP4314057B2 (ja) * 2003-04-18 2009-08-12 サンディスク コーポレイション 不揮発性半導体記憶装置および電子装置
US7240219B2 (en) 2003-05-25 2007-07-03 Sandisk Il Ltd. Method and system for maintaining backup of portable storage devices
US7237074B2 (en) 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US7257703B2 (en) * 2003-11-18 2007-08-14 Toshiba America Electronic Components, Inc. Bootable NAND flash memory architecture
JP4745613B2 (ja) * 2004-01-20 2011-08-10 キヤノン株式会社 情報処理装置及び情報処理方法
US7610433B2 (en) 2004-02-05 2009-10-27 Research In Motion Limited Memory controller interface
US20050204091A1 (en) * 2004-03-11 2005-09-15 Kilbuck Kevin M. Non-volatile memory with synchronous DRAM interface
KR100607992B1 (ko) * 2004-07-09 2006-08-02 삼성전자주식회사 낸드 플래시 메모리의 동작 상태의 감시를 통해 시스템을부팅하기 위한 방법 및 시스템
DK3422583T3 (da) * 2004-08-30 2020-09-28 Google Llc System og fremgangsmåde for at tilvejebringe ikke-flygtig hukommelsesadministration i trådløse telefoner
US7849302B2 (en) * 2006-04-10 2010-12-07 Apple Inc. Direct boot arrangement using a NAND flash memory

Also Published As

Publication number Publication date
US20140344564A1 (en) 2014-11-20
JP2009533770A (ja) 2009-09-17
US8533448B2 (en) 2013-09-10
WO2007121181A1 (en) 2007-10-25
US9122493B2 (en) 2015-09-01
KR20090024117A (ko) 2009-03-06
US20110078432A1 (en) 2011-03-31
EP2005295B1 (en) 2017-11-08
CN101421701A (zh) 2009-04-29
US20140013097A1 (en) 2014-01-09
EP3299958A1 (en) 2018-03-28
JP5284946B2 (ja) 2013-09-11
US20070239977A1 (en) 2007-10-11
EP3299958B1 (en) 2024-03-27
US7849302B2 (en) 2010-12-07
US8832423B2 (en) 2014-09-09
KR101035473B1 (ko) 2011-05-18
EP2005295A1 (en) 2008-12-24

Similar Documents

Publication Publication Date Title
CN101421701B (zh) 用于引导非易失性存储器的方法、设备和系统
KR101595043B1 (ko) 적어도 부분적으로 부팅 동안에 어플리케이션들을 메모리에 프리로딩하는 방법
US8108665B2 (en) Decoupled hardware configuration manager
US7584347B2 (en) System and method for identifying bootable device by generating a signature for each bootable device where the signature is independent of a location of the bootable device
US9239725B2 (en) System and method for installing an OS via a network card supporting PXE
CN102543179A (zh) 串行接口存储器中的同时读取与写入存储器操作
CN101650660A (zh) 从中央存储装置引导计算机系统
US7921230B2 (en) USB devices pre-configuration for KVM switch
US7430661B2 (en) System and method of storing user data in a partition file or using a partition file containing user data
US7849300B2 (en) Method for changing booting sources of a computer system and a related backup/restore method thereof
JP2004021990A (ja) プロセッサを含むコンピュータのファームウェア・セレクタ
CN101788913B (zh) 具有内建双可被隐藏操作装置的计算机系统
KR20170064703A (ko) 모바일 장치를 이용한 호스트 장치의 부팅 방법
KR101120956B1 (ko) 휴대용 멀티-플랫폼 부팅시스템과 아키텍쳐
US9025366B2 (en) Main memory system storing operating system program and computer system including the same
CN111930575A (zh) 一种固件获取方法、装置及电子设备
KR20230101394A (ko) 간접 액세스 모듈을 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법
CN117707431A (zh) 一种基于bios的软件raid数据读取方法、装置
Blansit Readily Available Methods for Testing Linux
CN101676884A (zh) 自我测试阶段的存储器管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant