CN109828794A - 固态储存装置及其相关程序的载入方法 - Google Patents

固态储存装置及其相关程序的载入方法 Download PDF

Info

Publication number
CN109828794A
CN109828794A CN201711181808.4A CN201711181808A CN109828794A CN 109828794 A CN109828794 A CN 109828794A CN 201711181808 A CN201711181808 A CN 201711181808A CN 109828794 A CN109828794 A CN 109828794A
Authority
CN
China
Prior art keywords
storage area
byte
page
binary code
control circuit
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.)
Granted
Application number
CN201711181808.4A
Other languages
English (en)
Other versions
CN109828794B (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.)
Jianxing storage technology (Guangzhou) Co., Ltd
Original Assignee
Lite On Electronics Guangzhou Co Ltd
Lite On Technology Corp
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 Lite On Electronics Guangzhou Co Ltd, Lite On Technology Corp filed Critical Lite On Electronics Guangzhou Co Ltd
Priority to CN201711181808.4A priority Critical patent/CN109828794B/zh
Priority to US15/872,004 priority patent/US10379875B2/en
Publication of CN109828794A publication Critical patent/CN109828794A/zh
Application granted granted Critical
Publication of CN109828794B publication Critical patent/CN109828794B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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

Abstract

一种固态储存装置,包括:控制电路,具有储存单元,该储存单元包括第一储存区以及第二储存区,且该第一储存区储存启动程序;以及非挥发性存储器,具中有存储单元阵列,该存储单元阵列包括第三储存区以及第四储存区,且该第三储存区储存特定程序;其中,该第三储存区包括第一区块,该第一区块的第一页被区分为第一部份与第二部分,该第一部分包括多个字节,被重复地储存该特定程序的第一二进制码,且该第二部分包括多个字节,被重复地储存该第一二进制码的补码。

Description

固态储存装置及其相关程序的载入方法
技术领域
本发明是有关于一种固态储存装置及其相关控制方法,特别是有关于一种固态储存装置及其相关程序的载入方法。
背景技术
众所周知,固态储存装置(solid state device)已经非常广泛的应用于各种电子产品,例如SD卡、固态硬盘等等。一般来说,固态储存装置是由控制电路以及非挥发性存储器(non-volatile memory)组合而成。
请参照图1,其所示为通常的固态储存装置示意图。固态储存装置100包括:控制电路10、只读存储器(read only memory,简称ROM)30以及非挥发性存储器20。其中,控制电路10连接至非挥发性存储器20与只读存储器30。非挥发性存储器20用来储存写入数据。只读存储器30中储存有固件程序(firmware program),用以执行固态储存装置100的运行。
再者,固态储存装置100经由外部总线110连接至主机(host)150,其中外部总线110可为USB总线、SATA总线、PCIe总线、M.2总线或者U.2总线等等。
如图1所示,控制电路10中包括记忆单元12,且记忆单元12中包括第一储存区12a与第二储存区12b。当控制电路10制造完成后,第一储存区12a内已经储存有启动程序(bootcode loader),用以启动固态储存装置100。由于第一储存区12a通常被设定为只读储存区,因此启动程序已经无法再修改,且第一储存区12a内所储存的该启动程序不会因为断电而消失。
当固态储存装置100接收电源时,会先运行启动程序(start up procedure)。此时,控制电路10会执行第一储存区12a中的启动程序,用以将只读存储器30中储存的固件程序载入(load)记忆单元12中的第二储存区12b。
当只读存储器30中储存的固件程序由只读存储器30载入记忆单元12中的第二储存区12b后,即完成启动程序。此时,控制电路10执行第二储存区12b中的固件程序,并使得固态储存装置100正常运作。
在固态储存装置100正常运作时,控制电路10可根据主机150所发出的命令来运行。举例来说,根据主机150发出的写入指令,将主机150的写入数据存入非挥发性存储器20。或者,根据主机14所发出的读取命令,由非挥发性存储器20中取得读取数据,并传递至主机150。
另外,当固态储存装置100断电时,记忆单元12中的第二储存区12b所储存的固件程序会消失。因此,当固态储存装置100再次接收电源并进行启动程序时,控制电路10会执行第一储存区12a中的启动程序,以将只读存储器30中的固件程序再次载入记忆单元12中的第二储存区12b。
基本上,固态储存装置100中的只读存储器30为记忆容量很小的一次编程只读存储器(One Time Programmable Read OnlyMemory,简称OTPROM)或者是可电擦可编程式只读存储器(Electrically Erasable Programmable Read Only Memory,简称EEPROM)。
通常的固态储存装置100中,只读存储器30仅作为储存固件程序的用途,且只读存储器30会增加固态储存装置100的成本。
发明内容
本发明的目的在于提出一种固态储存装置及其相关程序的载入方法。本发明的固态储存装置中并未使用只读存储器,并将相关程序直接储存于非挥发性存储器中。并且,以特别的储存方式将程序的二进制码(binary code)储存于非挥发性存储器中。如此,可以降低固态储存装置的成本,并确保程序可以成功的被载入控制电路中,并使得固态储存装置正常运作。
本发明有关于一种固态储存装置,包括:控制电路,其中该控制电路中有储存单元,该储存单元包括第一储存区以及第二储存区,且该第一储存区储存启动程序;以及非挥发性存储器,连接至该控制电路,其中该非挥发性存储器中有存储单元阵列(memory cellarray),该存储单元阵列包括第三储存区以及第四储存区,且该第三储存区储存特定程序,该控制电路根据该特定程序控制该非挥发性存储器的运行;其中,该第三储存区包括第一区块,该第一区块包括多个页,且该第一区块的第一页被区分为第一部份与第二部分,该第一页的该第一部分包括多个字节,被重复地储存该特定程序的第一二进制码,且该第一页的该第二部分包括多个字节,被重复地储存该第一二进制码的补码。
如上述固态储存装置,其程序载入方法包括下列步骤:(a)读取该第三储存区中该第一页的数据;(b)由该第一页的该第一部分中选择一个字节并由该第一页的该第二部分中选择一个对应字节,并将选择的该字节的内容以及该对应字节的内容相加后产生一个结果;以及(c)当该结果为“11111111”时,将选择的该字节的内容作为该第一二进制码,并储存于该控制电路的该第二储存区。
为了对本发明之上述及其他方面有更佳的了解,下文特举实施例,并配合附图详细说明如下。
附图说明
第1图为通常固态储存装置示意图。
第2图为本发明固态储存装置的第一实施例。
第3A图为存储器阵列中第三储存区内固件程序的储存示意图。
第3B图为本发明固件程序的载入方法流程图。
第4图为本发明固态储存装置的第二实施例。
第5A图为存储器阵列中第三储存区内配置程序的另一储存示意图。
第5B图为目的字段的二进制码与1补码的二进制码示意图。
其中,附图标记:
10:控制电路 20:非挥发性存储器
30:只读存储器 12:记忆单元
12a:第一储存区 12b:第二储存区
100:固态储存装置 110:外部总线
150:主机 200:固态储存装置
210:控制电路 212:记忆单元
212a:第一储存区 212b:第二储存区
220:非挥发性存储器 222:存储单元阵列
222a:第三储存区 222b:第四储存区
400:固态储存装置 420:非挥发性存储器
422:存储单元阵列 422a:第三储存区
422b:第四储存区 422c:第五储存区
具体实施方式
请参照图2,其所绘示为本发明固态储存装置的第一实施例。固态储存装置200包括:控制电路210与非挥发性存储器220。非挥发性存储器220连接至控制电路210,且非挥发性存储器220中还包含存储单元阵列(memory cell array)222。再者,固态储存装置200经由外部总线110连接至主机(host)150,其中外部总线110可为USB总线、SATA总线、PCIe总线、M.2总线或者U.2总线等等。
控制电路210中包括记忆单元212,且记忆单元212包括第一储存区212a与第二储存区212b。当控制电路210制造完成后,第一储存区212a内已经储存有启动程序(boot codeloader),用以启动固态储存装置100。第一储存区212a为只读储存区,且第一储存区212a内所储存的该启动程序不会因为断电而消失。
另外,非挥发性存储器220中的存储单元阵列222包括许多区块(block),而每个区块中又包括多个页(page)。举例来说,存储单元阵列222中有1024个区块,每一个区块中有256页,而每个页的容量为16Kbytes。
根据本发明的实施例,存储单元阵列222被规划出第三储存区222a与第四储存区222b。其中,第三储存区222a用以储存固件程序,第四储存区222b则用来储存主机150的写入数据。举例来说,存储单元阵列222中的16个区块被划分为第三储存区222a用以储存固件程序,而其他的1008个区块被划分为第四储存区222b用来储存主机150的写入数据。其中,固件程序用以执行固态储存装置100的运行。
当固态储存装置200加载电源时,控制电路210会先进行启动程序(start upprocedure)。于进行启动程序时,控制电路210会执行记忆单元212内第一储存区212a中的启动程序,并根据启动程序将存储单元阵列222中第三储存区222a的固件程序载入(load)记忆单元212中的第二储存区212b。
当固件程序由第三储存区222a载入记忆单元212中的第二储存区212b后,即完成启动程序。此时,控制电路210即可执行第二储存区212b中的固件程序,并使固态储存装置200正常运作。
于固态储存装置200正常运作时,控制电路210可根据主机150所发出的命令来运作。举例来说,根据主机150发出的写入指令,控制电路210将主机150的写入数据存入存储单元阵列222中的第四储存区222b。或者,根据主机14所发出的读取命令,控制电路210由存储单元阵列222中的第四储存区222b中取得读取数据,并传递至主机150。
另外,当固态储存装置200断电时,记忆单元212中的第二储存区212b所储存的固件程序会消失。因此,当固态储存装置200再次接收电源并进行启动程序时,控制电路210会执行第一储存区212a中的启动程序,并根据启动程序将第三储存区222a中的固件程序再次载入记忆单元212中的第二储存区212b。
在本发明实施例中,用以执行固态储存装置200运作的固件程序是储存在非挥发性存储器220,而非只读存储器,因此可有效地降低固态储存装置的成本。然而,由于非挥发性存储器220的存储单元阵列222的质量(quality)会随着使用的时间越久而逐渐下降,即劣化,其可能使固件程序的数据损毁(collapse),造成无法读取固件程序,进而使固态储存装置200无法运作。因此,在本发明实施例中,固件程序是被大量地重复储存在非挥发性存储器220中。具体而言,在存储单元阵列222的第三储存区222a中,大量地重复储存固件程序的二进制码(binary code)。如此,当第三储存区222a中部分固件程序的二进制码损毁(collapse)时,控制电路210仍可根据第三储存区222a的内容来成功地读取固件程序并将其载入控制电路210的第二储存区212b。
请参照图3A,其所示为存储器阵列222中第三储存区222a内固件程序的储存示意图。图3A是以存储单元阵列222中有1024个区块,每一个区块中有256页,且每个页的容量为16K bytes为例来进行说明。当然本发明并不限定于此。
根据本发明的实施例,在第三储存区222a中,固件程序中1个字节(byte)的二进制码(binary code)是被重复地储存在一个页的空间。换句话说,在第三储存区222a中,以一个页的空间来储存固件程序中1个字节(byte)的二进制码(binary code)。举例来说,假设固件程序大小为4Kbyte,亦即固件程序是由4K个二进制码所组成。因此,第三储存区222a共需要利用4K个页(page)的空间来储存固件程序,其容量等于64Mbyte(4K×16Kbyte)。也就是说,本发明将4Kbyte大小的固件程序储存于64Mbyte大小的第三储存区222a。
根据本发明的实施例,为了要确保第三储存区222a中的数据的正确性,用以储存固件程序中1个字节的二进制码的一个页的空间被区分为二个部分。其中,每一页第一部分的多个字节用以重复地储存固件程序的一个二进制码,而每一页第二部分的多个字节则用以重复地储存该二进制码的补码(one’s complement of the binary code)。其中,第一部分的多个字节分别对应于第二部分的多个字节。
如图3A所示,每一页被区分为二个部分,第一部分有8192个字节(Byte[0]~Byte[8191]),第二部分有8192个字节(Byte[8192]~Byte[16383])。其中,页0(page0)储存固件程序的第0个二进制码信息,固件程序的第0个二进制码(FWb0)被重复地储存于第一部分的8192个字节。另外,固件程序的第0个二进制码的补码被重复地储存于第二部分的8192个字节。举例来说,假设二进制码为“11001010”,该二进制码的补码为“00110101”。
再者,页1(page1)储存固件程序的第1个二进制码信息。其中,固件程序的第1个二进制码(FW b1)被重复地储存于页1(page1)第一部分的8192个字节。另外,固件程序的第1个二进制码的补码被重复地储存于页1(page1)第二部分的8192个字节。
同理,页n(page n)储存固件程序的第n个二进制码信息。其中,固件程序的第n个二进制码(FW bn)被重复地储存于页n(page n)第一部分的8192个字节。另外,固件程序的第n个二进制码的补码被重复地储存于页n(page n)第二部分的8192个字节。并依此类推。换句话说,根据图3A的储存方式,其利用4K个页(page0~page4095)的容量来储存固件程序的4K个二进制码。
请参照图3B,其所示为本发明固件程序的载入方法流程图。此固件程序的载入方法包含于启动程序(boot code loader)中。当控制电路210在启动过程中执行启动程序时,控制电路210会将存储单元阵列222中第三储存区222a的固件程序载入(load)记忆单元212中的第二储存区212b。
根据本发明实施例,由于第三储存区222a中,每一个页储存固件程序的其中一个二进制码信息。因此,控制电路210每读取一个页的数据后,即根据二进制码信息来产生一个固件程序的二进制码并载入第二储存区212b。
如图3B所示,首先读取一个页的数据(步骤S302)。即控制电路210读取第三储存区222a中一个页的数据。
接着,选择该页中的一个字节(步骤S304)。接着,将选择的该字节之内容及其对应的字节之内容相加后产生一个结果,并判断该结果是否为“11111111”(步骤S306)。在步骤S304中,控制电路210可从第一部分的多个字节中选择其中一个字节,并可找出其在第二部分的多个字节中所对应的字节。
以图3A为例,第一部分有8192个字节(Byte[0]~Byte[8191]),第二部分有8192个字节(Byte[8192]~Byte[16383])。其中,第一部分的第一个字节(Byte[0])可对应于第二部分的第一个字节(Byte[8192]),而第一部分的第二个字节(Byte[1])可对应于第二部分的第二个字节(Byte[8193]),以此类推。举例来说,在步骤S304中,控制电路210可选择第一部分的第一个字节(Byte[0]),并可得出其对应于第二部分的第一个字节(Byte[8192])。接着,在步骤S306中,控制电路210将选择的字节(Byte[0])以及与其对应的字节(Byte[8192])之内容相加产生一个结果,并判断相加后的结果是否为“11111111”。
请继续参阅图3B,当该结果为“11111111”时,可确认选择的该字节的内容是固件程序中的二进制码(binary code)。接着,将选择的该字节的内容载入第二储存区212b(步骤S310)。
反之,当相加后的结果不为“11111111”时,代表选择的该字节的内容有误,无法作为固件程序的二进制码(binary code)。因此,选择该页中的另一个字节(步骤S308),并再次进行步骤306。
举例来说,控制电路210读取页0的数据后,选择属于第一部分的第0个字节(Byte[0]),并获得第0个字节(Byte[0])的内容为“11001010”,并获得其在第二部分所对应的第8192个字节(Byte[8192])的内容为“00110101”,并且相加后的结果为“11111111”。因此,控制电路210将选择的第0个字节(Byte[0])的内容“11001010”作为固件程序的第0个二进制码,并载入第二储存区212b。
反之,如果第0个字节(Byte[0])与第8192个字节(Byte[8192])相加结果中的任何一个位元(bit)有错误时,相加的结果将不为“11111111”。此时,控制电路210选择属于第一部分的另一个字节,例如第1个字节(Byte[1]),并且继续判断第1个字节(Byte[1])与其在第二部分所对应的第8193个字节(Byte[8193])的内容相加的结果是否为“11111111”。
本发明并不限定将一个页区分为第一部分及第二部分的方式。在另一实施例中,亦可利用奇偶数来区分第一部分及第二部分。例如,可设定一个页中的第0个字节(Byte[0])、第2个字节(Byte[2])、第4个字节(Byte[4])……为第一部分,用以重复地储存固件程序的一个二进制码,而第1个字节(Byte[1])、第3个字节(Byte[3])、第5个字节(Byte[5])……为第二部分,用以重复地储存该二进制码的1补码。再者,第0个字节(Byte[0])可对应于第1个字节(Byte[1]),第2个字节(Byte[2])可对应于第3个字节(Byte[3]),以此类推。
为了防止存储单元阵列222劣化,导致储存的固件程序损毁(collapse)。本发明利用一个页的空间来重复地储存固件程序中1个二进制码及其补码的信息。因此,控制电路210读取一个页的数据后,可将选择的字节以及与其对应的字节之内容相加产生一个结果,并判断相加后的结果是否为“11111111”来做为验证数据是否正确的依据。再者,由于固件程序中1个二进制码及其补码是被重复地储存,因此可选择不同的字节进行相加运算,其中只要有一次的运算结果为“11111111”,即可确认固件程序中1字节(byte)的二进制码(binary code)。因此,利用本发明提出的固件程序的储存方式,在存储单元阵列222劣化时,控制电路210仍可以正确地将固件程序的二进制码载入第二储存区212b。
再者,图3B仅绘示由一个页中的二进制码信息来获得固件程序中1字节(byte)的二进制码(binary code),并载入第二储存区212b。换句话说,当固件程序共有4K byte个二进制码(binary code)时,4K个页(page0~page4095)皆需进行一次图3B的动作流程,以获得固件程序的所有4K个二进制码(binary code)并载入第二储存区212b。
上述实施例是以固件程序为例,然而本发明并不以此限,其可为储存在非挥发性存储器,并欲载入控制电路中的记忆单元的程序或数据。下述实施例以配置程序(configuration program)为例。
随着半导体技术的发展,非挥发性存储器制造商会持续地推出新规格的非挥发性存储器。这些新规格的非挥发性存储器于正常运作之前,必需要接受由控制电路发出的配置操作(configuration action)。否则,读写这些新规格的非挥发性存储器时,会产生很多的错误。
在固态储存装置中,为了要让控制电路能够对新的非挥发性存储器发出配置操作并让新的非挥发性存储器正确地运作。本发明提供配置程序(configuration program)并储存于新的非挥发性存储器中。当固态储存装置进行启动程序时,控制电路可以将配置程序与固件程序载入控制电路。接着,控制电路先根据配置程序而发出配置操作至新的非挥发性存储器。之后,控制电路再执行固件程序让固态储存装置正常运作。
请参照图4,其所表示为本发明固态储存装置的第二实施例。固态储存装置400包括:控制电路210与非挥发性存储器420。非挥发性存储器420连接至控制电路210,且非挥发性存储器420中还包含存储单元阵列422。再者,控制电路210与第一实施例相同,此处不再赘述。
根据本发明的实施例,存储单元阵列422中被规划出第三储存区422a用来储存配置程序,第四储存区422b用来储存固件程序,第五储存区422c则用来储存主机150的写入数据。举例来说,存储单元阵列422中的1个区块被规划为第三储存区422a,16个区块被划分为第四储存区422b,而其他的1007个区块被划分为第五储存区422c。
当固态储存装置400接收电源时,控制电路210会先运行启动程序(start upprocedure)。于运行启动程序时,控制电路210会执行记忆单元212内第一储存区212a中的启动程序,并根据启动程序将存储单元阵列222中第三储存区422a的配置程序与第四储存区422b的固件程序载入(load)记忆单元212中的第二储存区212b。
当配置程序与固件程序由第三储存区222a与第四储存区222b载入记忆单元212中的第二储存区212b后,控制电路210先执行第二储存区212b中的配置程序,并对非挥发性存储器420发出配置操作。之后,控制电路210执行固件程序让固态储存装置400正常运作。
再者,于固态储存装置400正常运作时,控制电路210可根据主机150所发出的命令来运作。举例来说,根据主机150发出的写入指令,控制电路210将主机150的写入数据存入存储单元阵列422中的第五储存区422c。或者,根据主机14所发出的读取命令,控制电路210由存储单元阵列224中的第五储存区422c中取得读取数据,并传递至主机150。
另外,当固态储存装置400断电时,记忆单元212中的第二储存区212b所储存的固件程序会消失。因此,当固态储存装置400再次接收电源并进行启动程序时,控制电路210会执行第一储存区212a中的启动程序,并根据启动程序将第三储存区422a与第四储存区422b中的配置程序与固件程序再次载入记忆单元212中的第二储存区212b。
请参照图5A,其所绘示为存储器阵列422中第三储存区422a内配置程序的储存示意图。图5A以存储单元阵列422中有1024个区块,每一个区块中有256页,且每个页的容量为16K bytes为例来进行说明。当然本发明并不限定于此。
根据本发明的实施例,在第三储存区422a中,配置程序中1个字节(byte)的二进制码(binary code)是被重复地储存在一个页的空间。换句话说,在第三储存区422a中,以一个页的空间来储存配置程序中1个字节(byte)的二进制码(binary code)。举例来说,假设配置程序大小为265byte,亦即配置程序是由256个字节(byte)的二进制码所组成。因此,第三储存区422a共需要利用256个页(page)的空间来储存固件程序,其容量等于4Mbyte(256×16Kbyte)。也就是说,本发明将256byte大小的配置程序储存于4Mbyte大小的第三储存区422a。
相同地,为了要确保第三储存区422a中数据的正确性,用以储存配置程序中1个字节的二进制码的一个页的空间被区分为二个部分。其中,每一页第一部分的多个字节用以重复地储存配置程序的一个二进制码,而每一页第二部分的多个字节则用以重复地储存该二进制码的补码(one’s complement of the binary code)。其中,第一部分的多个字节分别对应于第二部分的多个字节。
如图5A所示,每一页被区分为二个部分,第一部分有8192个字节(Byte[0]~Byte[8191]),第二部分有8192个字节(Byte[8192]~Byte[16383])。其中,页0(page0)储存配置程序的第0个二进制码信息,配置程序的第0个二进制码(purposeb0)被重复地储存于第一部分的8192个字节。另外,配置程序的第0个二进制码的补码被重复地储存于第二部分的8192个字节。
再者,页1(page1)储存配置程序的第1个二进制码信息。其中,配置程序的第1个二进制码(payload b1)被重复地储存于页1(page1)第一部分的8192个字节。另外,配置程序的第1个二进制码的补码被重复地储存于页1(page1)第二部分的8192个字节。
再者,页m-1(page m-1)储存配置程序的第m-1个二进制码信息。其中,配置程序的第m-1个二进制码(purpose b1)被重复地储存于页m-1(page m-1)第一部分的8192个字节。另外,配置程序的第m-1个二进制码的补码 )被重复地储存于页m-1(page m-1)第二部分的8192个字节。
页m(page m)储存固件程序的第m个二进制码信息。其中,配置程序的第m个二进制码(payload bm)被重复地储存于页m(page m)第一部分的8192个字节。另外,配置程序的第m个二进制码的补码被重复地储存于页m(page m)第二部分的8192个字节。并依此类推。
再者,根据本发明的第二实施例,配置程序中的字段(field)包括目的(purpose)字段与酬载(payload)字段。也就是说,根据目地字段与酬载字段的二进制码,控制电路210即可发出配置操作至非挥发性存储器420。
请参照图5B,其所示为目的字段的二进制码与补码的二进制码示意图。由图5B可知,当目的字段的二进制码为0x43(01000011)时,控制电路210的配置操作即为发出指令(command)。当目的字段的二进制码为0x41(01000001)时,控制电路210的配置操作即为发出地址(address)。当目的字段的二进制码为0x4F(01001111)时,控制电路210的配置操作即为位址偏移(offset)。当目的字段的二进制码为0x57(即“01010111”)时,控制电路210的配置操作即为睡眠一段时间(sleep in(ms))。当目的字段的二进制码为0x70(即“01110000”)时,控制电路210的配置操作即为进行比较(compare)。
举例来说,假设控制电路210执行配置程序时,收到的目的与酬载字段分别为“01000011”与“11000101”。此时,控制电路210的配置操作即为:发出“11000101”的指令至非挥发性存储器420。同理,假设控制电路210执行配置程序时,收到的目的与酬载字段分别为“01011111”与“00001111”。此时,控制电路210的配置操作即为指示非挥发性存储器420进入睡眠状态“00001111”毫秒(ms)。
相同地,图5A的配置程序也可以利用图3B的载入方法来载入控制电路210的第二储存区212b。
控制电路210读取第三储存区422a中页0(page0)的数据。即,控制电路210读取第三储存区422a中一个页的数据。
接着,选择该页中的一个字节。接着,选择的该字节之内容及其对应的字节之内容相加后产生一个结果,并判断该结果是否为“11111111”。即控制电路210可从第一部分的多个字节中选择其中一个字节,并可找出其在第二部分的多个字节中所对应的字节,并将二个字节的内容进行相加。
当该结果为“11111111”时,可确认选择的该字节的内容是配置程序中的二进制码(binary code)。接着,将选择的该字节的内容载入第二储存区212b(步骤S310)。
反之,当相加后的结果不为“11111111”时,代表选择的该字节的内容有误,无法作为配置程序的二进制码(binary code)。因此,选择该页中的另一个字节来继续进行上述的判断流程。
为了防止存储单元阵列422劣化,导致储存的配置程序损毁(collapse)。本发明利用一个页的空间来重复地储存配置程序中1个二进制码及其1补码的信息。因此,控制电路210读取一个页的数据后,可将选择的字节以及与其对应的字节之内容相加产生一个结果,并判断相加后的结果是否为“11111111”来做为验证数据是否正确的依据。再者,由于配置程序中1个二进制码及其1补码是被重复地储存,因此可选择不同的字节进行相加运算,其中只要有一次的运算结果为“11111111”,即可确认配置程序中1字节(byte)的二进制码(binary code)。因此,利用本发明提出的配置程序的储存方式,在存储单元阵列422劣化时,控制电路210仍可以正确地将固件程序的二进制码载入第二储存区212b。
另外,本发明第二实施例的固态储存装置400,其固件程序的储存与载入方式皆相同于第一实施例,此处不再赘述。
由以上的说明可知,本发明提出一种固态储存装置及其相关程序的载入方法。为了防止存储单元阵列的质量(quality)下降导至储存于存储单元阵列中的配置程序或者固件程序损毁。本发明在存储单元阵列中,大量地重复储存特定程序的二进制码,且特定程序可以为配置程序或者固件程序。当存储单元阵列中部分配置程序或者部分固件程序的二进制码损毁(collapse)时,控制电路仍可根据存储单元阵列的内容来成功地将配置程序与固件程序载入控制电路。
再者,在本发明所公开的技术中,固件程序的一个二进制码信息会储存于一个页中,且该页被划分为二个部分,分别储存固件程序的二进制码与该二进制码的补码。当然本发明并不限定于此,在此领域的技术人员也可以适度的修改,并达成本发明的目的。
举例来说,固件程序的二个二进制码信息可储存于一个页中,且该页被划分为四个部分,前二个部分分别储存固件程序的第一二进制码与该第一二进制码的补码;另二个部分分别储存固件程序的第二二进制码与该第二二进制码的补码。相同地,配置程序也可以利用相同的储存方式储存于存储单元阵列。
再者,在固件程序的载入方法中,控制电路由一页的第一部分与第二部分个各取出一字节的内容进行相加运算并获得结果,当此结果为“11111111”时,即确认第一部分取出的该位元的内容为固件程序的一个二进制码。当然,在此领域的技术人员也可以进行修改,并达成本发明的目的。
举例来说,为了要进一步确认二进制码的正确性,控制电路可多次地由一页的第一部分与第二部分个各取出一字节的内容进行相加运算并获得多个结果,当多个结果皆为“11111111”时,即确认第一部分取出的该位元的内容为固件程序的一个二进制码。
虽然本发明已以实施例公开如上,但具体实施例并不用于限定本发明,任何本技术领域中技术人员,在不脱离本发明的构思和范围内,可作一些改进和完善,故本发明的保护范围以权利要求书为准。

Claims (8)

1.一种固态储存装置,包括:
控制电路,其中该控制电路中有储存单元,该储存单元包括第一储存区以及第二储存区,且该第一储存区储存启动程序;
非挥发性存储器,连接至该控制电路,其中该非挥发性存储器中有一存储单元阵列,该存储单元阵列包括第三储存区以及第四储存区,且该第三储存区储存特定程序,该控制电路根据该特定程序控制该非挥发性存储器的运行;
其特征在于,该第三储存区包括第一区块,该第一区块包括多个页,且该第一区块的第一页被区分为第一部份与第二部分,该第一页的该第一部分包括多个字节,被重复地储存该特定程序的第一二进制码,且该第一页的该第二部分包括多个字节,被重复地储存该第一二进制码的补码。
2.如权利要求1所述的固态储存装置,其特征在于,该第三储存区的该第一区块中,该第一区块的第二页被区分为第一部份与第二部分,该第二页的该第一部分包括多个字节,被重复地储存该特定程序的一第二二进制码,且该第二页的该第二部分包括多个字节,被重复地储存该第二二进制码的补码。
3.如权利要求1所述的固态储存装置,其特征在于,当该控制电路执行该启动程序时,该控制电路读取该第一区块中的该第一页,并根据该第一页的内容来获得该特定程序的该第一二进制码,并将该第一二进制码载入该控制电路的该第二储存区。
4.如权利要求3所述的固态储存装置,其特征在于,该控制电路由该第一页的该第一部分中选择一个字节,并由该第一页的该第二部分中选择一个对应字节;该控制电路将选择的该字节的内容以及该对应字节的内容相加后产生一个结果;当该结果为“11111111”时,该控制电路将选择的该字节的内容作为该特定程序的该第一二进制码。
5.如权利要求1所述的固态储存装置,其特征在于,该特定程序为固件程序或配置程序。
6.如权利要求1所述的固态储存装置,其特征在于,该存储单元阵列还包括第五储存区,其中该第三储存区储存的该特定程序为固件程序,且该第四储存区储存配置程序,其中,该第四储存区包括第二区块,该第二区块包括多个页,且该第二区块的第三页被区分为第一部份与第二部分,该第三页的该第一部分包括多个字节,被重复地储存该配置程序的第一二进制码,且该第三页的该第二部分包括多个字节,被重复地储存该配置程序的该第一二进制码的补码。
7.一种如权利要求6所述的固态储存装置的程序载入方法,其特征在于,包括下列步骤:
步骤1,读取该第三储存区的该第一区块中,该第一页内的数据;
步骤2,由该第一页的该第一部分中选择一个字节并由该第一页的该第二部分中选择一个对应字节,并将选择的该字节的内容以及该对应字节的内容相加后产生一个结果;以及
步骤3,当该结果为“11111111”时,将选择的该字节的内容作为该第一二进制码,并储存于该控制电路的该第二储存区。
8.如权利要求7所述的固态储存装置的程序载入方法,其特征在于,还包括:
步骤4,当该结果不为“11111111”时,由该第一页的该第一部分中选择另一个字节并由该第一页的该第二部分中选择另一个对应字节,并将选择的该另一个字节的内容以及该另一个对应字节的内容相加后产生该结果,并进行该步骤3。
CN201711181808.4A 2017-11-23 2017-11-23 固态储存装置及其相关程序的载入方法 Active CN109828794B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201711181808.4A CN109828794B (zh) 2017-11-23 2017-11-23 固态储存装置及其相关程序的载入方法
US15/872,004 US10379875B2 (en) 2017-11-23 2018-01-16 Solid state storage device and program loading method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711181808.4A CN109828794B (zh) 2017-11-23 2017-11-23 固态储存装置及其相关程序的载入方法

Publications (2)

Publication Number Publication Date
CN109828794A true CN109828794A (zh) 2019-05-31
CN109828794B CN109828794B (zh) 2021-09-17

Family

ID=66532984

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711181808.4A Active CN109828794B (zh) 2017-11-23 2017-11-23 固态储存装置及其相关程序的载入方法

Country Status (2)

Country Link
US (1) US10379875B2 (zh)
CN (1) CN109828794B (zh)

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5497475A (en) * 1993-02-05 1996-03-05 National Semiconductor Corporation Configurable integrated circuit having true and shadow EPROM registers
CN1485745A (zh) * 2003-08-08 2004-03-31 倚天资讯股份有限公司 非挥发性存储器存取系统及其存取方法
TW201005522A (en) * 2008-07-24 2010-02-01 Acer Inc Computer system and storage-controlling method of the same
CN102157202A (zh) * 2008-01-22 2011-08-17 群联电子股份有限公司 防止非易失性存储器发生读取干扰的方法及其控制器
US20120151123A1 (en) * 2010-12-08 2012-06-14 Kabushiki Kaisha Toshiba Memory system and memory controller
US20120203951A1 (en) * 2010-01-27 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for determining a configuration parameter for solid-state storage media
CN102915207A (zh) * 2011-08-01 2013-02-06 建兴电子科技股份有限公司 固态储存装置及其数据储存方法
TW201316341A (zh) * 2011-07-28 2013-04-16 Sandisk Technologies Inc 在非揮發性記憶體陣列之程式化期間用於缺陷字元線的資料回復
CN103092771A (zh) * 2011-10-31 2013-05-08 建兴电子科技股份有限公司 固态储存装置及其高速缓存的控制方法
CN103123610A (zh) * 2011-11-18 2013-05-29 建兴电子科技股份有限公司 固态储存装置
CN103870215A (zh) * 2014-04-12 2014-06-18 天津瑞发科半导体技术有限公司 Usb固态盘固件存储装置
US20140244912A1 (en) * 2013-02-28 2014-08-28 Technion Research And Development Foundation Ltd. Retired Page Utilization (RPU) for Improved Write Capacity of Solid State Drives
CN104461397A (zh) * 2014-12-19 2015-03-25 上海新储集成电路有限公司 一种固态硬盘及其读写方法
US20150248325A1 (en) * 2012-09-28 2015-09-03 Duke University Systems for and methods of extending lifetime of non-volatile memory
CN106569730A (zh) * 2015-10-08 2017-04-19 光宝电子(广州)有限公司 固态储存装置及其相关资料写入方法
CN107092560A (zh) * 2016-02-17 2017-08-25 光宝电子(广州)有限公司 固态储存装置及运用于其中的快闪转换层对应表重建方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6073854B2 (ja) 2014-12-26 2017-02-01 京セラドキュメントソリューションズ株式会社 電子機器及びファームウェア復旧プログラム

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5497475A (en) * 1993-02-05 1996-03-05 National Semiconductor Corporation Configurable integrated circuit having true and shadow EPROM registers
CN1485745A (zh) * 2003-08-08 2004-03-31 倚天资讯股份有限公司 非挥发性存储器存取系统及其存取方法
CN102157202A (zh) * 2008-01-22 2011-08-17 群联电子股份有限公司 防止非易失性存储器发生读取干扰的方法及其控制器
TW201005522A (en) * 2008-07-24 2010-02-01 Acer Inc Computer system and storage-controlling method of the same
US20120203951A1 (en) * 2010-01-27 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for determining a configuration parameter for solid-state storage media
US20120151123A1 (en) * 2010-12-08 2012-06-14 Kabushiki Kaisha Toshiba Memory system and memory controller
TW201316341A (zh) * 2011-07-28 2013-04-16 Sandisk Technologies Inc 在非揮發性記憶體陣列之程式化期間用於缺陷字元線的資料回復
CN102915207A (zh) * 2011-08-01 2013-02-06 建兴电子科技股份有限公司 固态储存装置及其数据储存方法
CN103092771A (zh) * 2011-10-31 2013-05-08 建兴电子科技股份有限公司 固态储存装置及其高速缓存的控制方法
CN103123610A (zh) * 2011-11-18 2013-05-29 建兴电子科技股份有限公司 固态储存装置
US20150248325A1 (en) * 2012-09-28 2015-09-03 Duke University Systems for and methods of extending lifetime of non-volatile memory
US20140244912A1 (en) * 2013-02-28 2014-08-28 Technion Research And Development Foundation Ltd. Retired Page Utilization (RPU) for Improved Write Capacity of Solid State Drives
CN103870215A (zh) * 2014-04-12 2014-06-18 天津瑞发科半导体技术有限公司 Usb固态盘固件存储装置
CN104461397A (zh) * 2014-12-19 2015-03-25 上海新储集成电路有限公司 一种固态硬盘及其读写方法
CN106569730A (zh) * 2015-10-08 2017-04-19 光宝电子(广州)有限公司 固态储存装置及其相关资料写入方法
CN107092560A (zh) * 2016-02-17 2017-08-25 光宝电子(广州)有限公司 固态储存装置及运用于其中的快闪转换层对应表重建方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ZIQI FAN等: "H-ARC: A non-volatile memory based cache policy for solid state drives", 《2014 30TH SYMPOSIUM ON MASS STORAGE SYSTEMS AND TECHNOLOGIES (MSST)》 *
董智刚: "基于NAND非易失性闪存芯片的固态存储技术的应用及性能提升研究", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 *

Also Published As

Publication number Publication date
US10379875B2 (en) 2019-08-13
CN109828794B (zh) 2021-09-17
US20190155612A1 (en) 2019-05-23

Similar Documents

Publication Publication Date Title
CN101246738B (zh) 具有备份电路的存储系统及编程方法
CN106158038B (zh) 从非易失性存储器读取数据的方法
CN1905070B (zh) 能够存储多比特数据和单比特数据的闪存设备
US11347444B2 (en) Memory device for controlling operations according to different access units of memory
CN106297865B (zh) 控制半导体存储器件的控制器及其操作方法
US7450436B2 (en) Device recoverable purge for flash storage device
CN106598479A (zh) 闪速存储器的故障安全擦除的方法和装置
US20090037646A1 (en) Method of using a flash memory for a circular buffer
US9870316B2 (en) Bidirectional counter in a flash memory
JPWO2007000862A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
JP6789788B2 (ja) メモリ装置、コントローラ、ホスト装置、データ処理システム、制御プログラム、メモリ装置の動作方法及びホスト装置の動作方法
KR100746036B1 (ko) 플래시 메모리를 제어하는 장치 및 방법
CN109697995A (zh) 半导体存储器装置及其操作方法
CN103150184A (zh) 一种对闪存进行操作的方法和系统芯片
JP5660521B2 (ja) 不揮発性半導体記憶装置およびメモリ管理方法
EP3057100B1 (en) Memory device and operating method of same
CN109828794A (zh) 固态储存装置及其相关程序的载入方法
US10181356B2 (en) Flash memory counter
US20100235393A1 (en) Portable electronic device and access control method in portable electronic device
JP4868979B2 (ja) 携帯可能電子装置およびicカード
CN116185309B (zh) 一种数据处理方法及数据存储设备
CN117573155B (zh) 产品信息处理方法及芯片
CN102880561A (zh) 闪存装置
CN106205729B (zh) 促进数据存储系统中的错误校正的方法及其数据存储系统
CN106910520A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200106

Address after: Room 302, factory a, No.8 Guangbao Road, Science City, Huangpu District, Guangzhou City, Guangdong Province

Applicant after: Jianxing storage technology (Guangzhou) Co., Ltd

Address before: 510663 No. 25 West spectral Road, Guangzhou hi tech Industrial Development Zone, Guangdong

Applicant before: Guangbao Electronics (Guangzhou) Co., Ltd.

Applicant before: Lite-On Technology Corporation

GR01 Patent grant
GR01 Patent grant