CN113918082A - 计算机可读取存储介质、配置可靠命令的方法及装置 - Google Patents
计算机可读取存储介质、配置可靠命令的方法及装置 Download PDFInfo
- Publication number
- CN113918082A CN113918082A CN202010653300.5A CN202010653300A CN113918082A CN 113918082 A CN113918082 A CN 113918082A CN 202010653300 A CN202010653300 A CN 202010653300A CN 113918082 A CN113918082 A CN 113918082A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- circuit board
- printed circuit
- reliable
- memory controller
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000015654 memory Effects 0.000 claims abstract description 126
- 238000012545 processing Methods 0.000 claims description 27
- 230000004913 activation Effects 0.000 claims description 5
- 239000010410 layer Substances 0.000 claims description 5
- 239000002356 single layer Substances 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 5
- 230000007246 mechanism Effects 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- 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
-
- 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/0614—Improving the reliability of storage systems
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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
- G06F3/064—Management of blocks
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
- 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/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/20—Initialising; Data preset; Chip identification
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
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)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种计算机可读取存储介质、配置可靠命令的方法及装置,其中该配置可靠命令的方法由闪存控制器执行,包含:发送启动信号给输出装置;从输出装置读取相应于闪存模块的可靠命令的操作码;以及获取可靠命令的操作码后,停止发送启动信号给输出装置。本发明通过以上所述动态地获取连接闪存模块所定义的可靠命令的操作码的机制,可让闪存控制器更有弹性的适配新生产厂商或新技术时代的闪存模块。
Description
技术领域
本发明涉及存储装置,尤指一种计算机可读取存储介质、配置可靠命令的方法及装置。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,中央处理器(Host)可于地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储于该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(Bytes)的值到NAND闪存中,用于定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。
NAND闪存包含闪存模块和闪存控制器,闪存控制器用于接收中央处理器发出的主机命令,并且依据主机命令中携带的地址等参数从闪存模块读取指定的数据,写入指定的数据到闪存模块,或者抹除指定的数据。闪存控制器可操作不同厂商制造的闪存模块,并且不同厂商定义的可靠命令(Reliable Command)的操作码都不相同。甚至,相同厂商为不同时代的闪存模块定义的可靠命令的操作码也都不同。NAND闪存上电后,闪存控制器首先需要知道连接闪存模块所定义的可靠命令的操作码才能继续后续操作。因此,本发明提出一种计算机可读取存储介质、配置可靠命令的方法及装置,用于解决如上所述的问题。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺陷,实为有待解决的问题。
本发明涉及一种配置可靠命令的方法,由闪存控制器执行,包含:发送启动信号给输出装置;从输出装置读取相应于闪存模块的可靠命令的操作码;以及获取可靠命令的操作码后,停止发送启动信号给输出装置。
本发明还涉及一种配置可靠命令的计算机可读取存储介质,用于存储能够被闪存控制器的处理单元加载并执行的程序代码,并且所述程序代码被所述处理单元执行时实现如上所述的配置可靠命令的方法。
本发明还涉及一种配置可靠命令的装置,包含闪存控制器和输出装置。闪存控制器及输出装置设置在印刷电路板上,以及输出装置通过印刷电路板的电路耦接闪存控制器。输出装置包含多个闸,每个闸的输入端通过第一导线连接到印刷电路板中的电源层或接地层,每个闸的输出端通过第二导线连接到闪存控制器的一个相应数据引脚,以及每个闸被闪存控制器发出的启动信号所启动。
可靠命令指示闪存模块使用单层式单元模式来存取数据。
上述实施例的优点之一,通过以上所述动态地获取连接闪存模块所定义的可靠命令的操作码的机制,可让闪存控制器更有弹性的适配新生产厂商或新技术时代的闪存模块。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的电子装置的系统架构图。
图2为依据本发明实施例的闪存模块的示意图。
图3为依据本发明实施例的闪存装置运行的方法流程图。
图4为示例的单层式单元模式的数据写入时序图。
图5为示例的单层式单元模式的数据读取时序图。
图6为依据本发明实施例的闪存控制器、闪存模块和输出装置的示意图。
图7为依据本发明实施例的搭配硬件解决方案的可靠命令操作码的获取方法流程图。
图8为依据本发明实施例的搭配通信协议解决方案的可靠命令操作码的获取方法流程图。
其中,附图中符号的简单说明如下:
10:电子装置;110:主机端;130:闪存控制器;131:主机接口;132:总线;134:处理单元;135:只读存储器;136:随机存取存储器;137:通用输入输出接口;138:直接存储器存取控制器;139:闪存接口;150:闪存模块;151:接口;170:输出装置;EN:启动信号;OPC:可靠命令的操作码;153#0~153#15:NAND闪存单元;CH#0~CH#3:通道;CE#0~CE#3:启动信号;S312~S344:方法步骤;410、420、510、520:波形;422、522:可靠命令;424:读取操作的主要命令;426:读取操作的确认命令;524:写入操作的主要命令;526:写入操作的确认命令;D0~D7:数据引脚;G0~G7:闸;Vcc:电源层;GND:接地层;S710~S740:方法步骤;S810~S820:方法步骤。
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
参考图1。电子装置10包含主机端(Host Side)110、闪存控制器130及闪存模块150,并且闪存控制器130及闪存模块150可合称为装置端(Device Side)。电子装置10可实施于个人计算机、笔记本计算机(Laptop PC)、平板计算机、移动电话、数字相机、数字摄影机等电子产品之中。主机端110与闪存控制器130的主机接口(Host Interface)131可以通用串行总线(Universal Serial Bus,USB)、先进技术附件(advanced technologyattachment,ATA)、串行先进技术附件(serial advanced technology attachment,SATA)、快速外设组件互联(peripheral component interconnect express,PCI-E)、通用闪存存储(Universal Flash Storage,UFS)、嵌入式多媒体卡(Embedded Multi-Media Card,eMMC)等通信协议彼此通信。闪存控制器130的闪存接口(Flash Interface)139与闪存模块150可以双倍数据率(Double Data Rate,DDR)通信协议彼此通信,例如,开放NAND闪存接口(Open NAND Flash Interface,ONFI)、双倍数据率开关(DDR Toggle)或其他通信协议。闪存控制器130包含处理单元134,可使用多种方式实施,如使用通用硬件(例如,单处理器、具有并行处理能力的多处理器、图形处理器或其他具有运算能力的处理器),并且在执行软件以及/或固件指令时,提供之后描述的功能。处理单元134通过主机接口131接收主机命令,例如读取命令(Read Command)、写入命令(Write Command)、抹除命令(Erase Command)等,调度并执行这些命令。闪存控制器130还包含只读存储器(Random Access Memory,RAM)135,用于存储开机程序代码(Boot code),是装置端开机时第一个执行的程序代码。闪存控制器130还包含随机存取存储器(Random Access Memory,RAM)136,可实施为动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static RandomAccess Memory,SRAM)或上述两者的结合,用于配置空间作为数据缓冲区,存储从主机端110读取并即将写入闪存模块150的主机数据,以及从闪存模块150读取并即将输出给主机端110的主机数据。随机存取存储器136还可存储执行过程中需要的数据,例如,变量、数据表、主机-闪存对照表(Host-to-Flash,H2F Table)、闪存-主机对照表(Flash-to-Host,F2HTable)等。闪存接口139包含NAND闪存控制器(NAND Flash Controller,NFC),提供存取闪存模块150时需要的功能,例如命令串行器(Command Sequencer)、低密度奇偶校验(LowDensity Parity Check,LDPC)等。
闪存控制器130中可配置总线架构(Bus Architecture)132,用于让组件之间彼此耦接以传递数据、地址、控制信号等,这些组件包含主机接口131、处理单元134、ROM 135、RAM 136、通用输入输出(General-Purpose Input/Output,GPIO)接口137、直接存储器存取(Direct Memory Access,DMA)控制器138、闪存接口139等。DMA控制器138可依据处理单元134的指令,通过总线架构132在组件间迁移数据,例如,将主机接口131或闪存接口139中特定数据缓存器(Data Buffer)的数据搬到RAM 136中的特定地址,将RAM136中特定地址的数据搬到主机接口131或闪存接口139中的特定数据缓存器等。
闪存模块150提供大量的存储空间,通常是数百个千兆字节(Gigabytes,GB),甚至是数个兆兆字节(Terabytes,TB),用于存储大量的主机数据,例如高分辨率图片、影片等。闪存模块150中包含控制电路以及存储器数组,存储器数组中的存储单元可在抹除后配置为单层式单元(Single Level Cells,SLCs)、多层式单元(Multiple Level Cells,MLCs)、三层式单元(Triple Level Cells,TLCs)、四层式单元(Quad-Level Cells,QLCs)或上述的任意组合。处理单元134通过闪存接口139写入主机数据到闪存模块150中的指定地址(目的地址),以及从闪存模块150中的指定地址(来源地址)读取主机数据。闪存接口139使用多个电子信号来协调闪存控制器130与闪存模块150间的数据与命令传递,包含数据线(DataLine)、时钟信号(Clock Signal)与控制信号(Control Signal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(Chip Enable,CE)、地址提取启动(Address Latch Enable,ALE)、命令提取启动(Command Latch Enable,CLE)、写入启动(Write Enable,WE)等控制信号。
参考图2,闪存模块150中的接口151可包含四个输入输出通道(I/O channels,以下简称通道)CH#0至CH#3,每个通道连接四个NAND闪存单元,例如,信道CH#0连接NAND闪存单元153#0、153#4、153#8及153#12。每个NAND闪存单元可封装为独立的芯片(die)。闪存接口139可通过接口151发出启动信号CE#0至CE#3中的一个来启动NAND闪存单元153#0至153#3、153#4至153#7、153#8至153#11、或153#12至153#15,接着以并行的方式从启动的NAND闪存单元读取主机数据,或者写入主机数据至启动的NAND闪存单元。
当闪存控制器130及闪存模块150设置在母板(Motherboard)后,还需要完成开卡流程(Card-initialization Process)才能够将装置端出厂并提供给客户。在生产装置端时,主机端110是一部开卡主机。当客户将装置端设置于电子装置之中并开始使用,主机端110可以是个人计算机、笔记本计算机、平板计算机、移动电话、数字相机、数字摄影机等电子产品。参考图3所示的闪存装置运行方法的流程图,由闪存控制器130的处理单元134实施,详细说明如下:
步骤S312:装置端上电后,从ROM 135加载开机程序代码到RAM 136。当处理单元134执行开机程序代码时,可完成如下所述步骤S314、S320、S332至S338、S342的操作。
步骤S314:获取闪存模块150的闪存供货商标识码(Flash Vendor ID)。闪存模块150由一个闪存供货商制造,例如英特尔(Intel)、美光(Micron)、东芝(Toshiba)、海力士(Hynix)等,符合一个技术时代的规范。处理单元134可驱动闪存接口139以发出读取标识码命令(Read ID Command)“90h”和地址“00h”给闪存模块150,用于从闪存模块150获取闪存供货商标识码。
步骤S316:获取闪存模块150的可靠命令的操作码。在这里需要注意的是,用于驱动不同闪存供货商所制作的不同时代的闪存模块的可靠命令的操作码,大多不相同。可靠命令用于指示闪存模块使用单层式单元模式来存取数据。
步骤S320:判断装置端是否需要开卡。如果是,代表此装置端还没有完成开卡操作(也就是还在生产在线),流程继续进行步骤S332的处理。否则,代表此装置端已经完成开卡操作(也就是已经离办厂进入正常使用状态),流程继续进行步骤S342的处理。
步骤S332:回复首个信息(Very First Message)给主机端110,用于通知此装置端已经物理性连接上主机端110。
步骤S334:根据主机端110发出的一系列供货商命令(Vendor Command),初始化闪存模块150。
处理单元134可通过闪存接口139对闪存模块150进行一连串的测试,用于找出坏块(Bad Blocks)、坏行(Bad Columns)等,并据以产生坏块表、坏行表等。处理单元134可依据侦测到的坏行数量等参数来计算每个物理页面能够用于存储错误检查校验码(ErrorCheck and Correction,ECC Code)的长度,依据坏行表及错误检查校验码的长度等信息计算每一个物理页面中每一个区段(Sector)的起始位置,并据以产生区段起始表。处理单元134可依据坏块数目、坏行数目、ECC长度等信息计算闪存模块150能够存储的逻辑区块地址数目(Logical Address Block,LBA Quantity)。处理单元134可将以上所述的数据表、变量等信息存储在RAM 136。所属技术领域人员理解以上所述的数据表、变量等信息是系统内程序代码(In-System Programming,ISP Code,又可称为固件)将来执行时需要参考的系统信息。
步骤S336:将初始化结果(含ISP程序代码)写入闪存模块150。处理单元134可驱动闪存接口139,将如步骤S334所述暂存在RAM 136中的信息写入到闪存模块150中预先设置的系统块(System Block)。处理单元134还可从指定位置下载适当的ISP程序代码,并驱动闪存接口139写入ISP程序代码到闪存模块150中的指定地址。ISP程序代码包含各种操作,用于执行从主机端110发出的主机命令。主机命令为由标准制定组织所规范的命令,例如主机读取、写入、抹除命令等。
步骤S338:回复开卡完成信息给主机端110。
步骤S332至步骤S338中的操作可统称为开卡操作。
步骤S342:从闪存模块150的指定地址加载ISP程序代码到RAM 136。当处理单元134执行ISP程序代码时,可完成如下所述步骤S344的操作。
步骤S344:不断执行主机端110发送的主机命令和背景操作,直到装置端断电为止。背景操作包含垃圾回收(Garbage Collection,GC)、损耗平均(Wear Leveling)、读取刷新(Read Refresh)、读取再生(Read Reclaim)等处理。
步骤S342至步骤S344中的操作可统称为正常模式操作。
在步骤S336中,处理单元134必须使用SLC模式来写入初始化结果到闪存模块150中的指定地址。关于SLC模式的写入操作,参考图4。波形410显示耦接于闪存模块150及闪存接口139间的数据线DQ[7:0]的时钟类型,依序说明如下:1个“CMD”时钟指出从闪存接口139传送的可靠命令,1个“CMD”时钟指出从闪存接口139传送的主要命令,5个“Addr”时钟指出从闪存接口139传送想要写入闪存模块150的物理地址,再以1个“CMD”时钟指出从闪存接口139传送的确认(Confirm)命令,最后,“DIN”表示从闪存接口139输出的数据。波形420为波形410的示范SLC模式的数据写入操作,可靠命令为“E6h”,主要命令为“80h”,确认命令为“10h”。
在步骤S342中,处理单元134必须使用SLC模式从闪存模块150读取ISP程序代码和其需要参考的系统信息。关于SLC模式的读取操作,参考图5。波形510显示耦接于闪存模块150及闪存接口139间的数据线DQ[7:0]的时钟类型,依序说明如下:1个“CMD”时钟指出从闪存接口139传送的可靠命令,1个“CMD”时钟指出从闪存接口139传送的主要命令,5个“Addr”时钟指出从闪存接口139传送的想要从闪存模块150读取的物理地址,再以1个“CMD”时钟指出从闪存接口139传送的确认命令,最后,“DOUT”表示从闪存模块150输出的数据。波形520为波形510的示范SLC模式的数据读取操作,可靠命令为“E6h”,主要命令为“00h”,确认命令为“30h”。
为了获取对应于闪存模块150的可靠命令的操作码,在步骤S316的一些实施方式中,闪存控制器130的制造商可将不同闪存供货商制造的不同时代的闪存模块所对应的可靠命令的操作码嵌入开机程序代码的逻辑中,使得开机程序代码能够依据步骤S314获取的闪存供货商标识码和其他信息来获取对应于闪存模块150的可靠命令的操作码。可靠命令的操作码可以一个字节表示,例如,“0xDA”、“0x3B”、“0xA2”、“0xE6”等。然而,当新的闪存供货商或新的时代的闪存模块所对应可靠命令的操作码没有记载在开机程序代码的逻辑时,这些闪存控制器130就不能和新的闪存模块搭载在一起,造成生产没有弹性。
为了解决如上所述实施方式的问题,一些实施例提出一种硬件解决方案。装置端包含印刷电路板(Printed Circuit Board,PCB),印刷电路板上设置闪存控制器130、闪存模块150和输出装置170,闪存控制器130、闪存模块150和输出装置170通过印刷电路板中的电路互相连接。参考图6,输出装置170包含多个闸(Gates)G7~G0,每个闸的输入端通过导线连接到印刷电路板中的电源层(Power Plane,以Vcc表示)或接地层(Ground Plane,以GND表示),并且每个闸的输出端通过导线连接到闪存控制器130的一个相应数据引脚(DataPin)。例如,闸G0的输出端通过导线连接到引脚D0,闸G1的输出端通过导线连接到引脚D1,依此类推。闸G7~G0可以用切换器(Switches)、D型触发器(D Flip-Flop)等电路实施。闪存控制器130可通过GPIO引脚发出启动信号(Enabling Signal,以EN表示)给输出装置170中所有的闸G7~G0,使得每个闸启动时可输出相应信号给闪存控制器130。当闸不被启动时,闸处于高阻抗状态(High Impedance State)且不能输出任何信号。当一个闸的输入端连接到电源层并且被启动时,输出逻辑“1”至闪存控制器130的相应数据输入端。当一个闸的输入端连接到接地层并且被启动时,输出逻辑“0”至闪存控制器130的相应数据输入端。在这里需要注意的是,印刷电路板的生产厂商会将输出装置170中的每一个闸的输入端通过导线连接到电源层或接地层,并且在印刷电路板制作完成后,所有闸的输入端和印刷电路板层(PCB planes)之间的连接关系就不能改变。这些闸的输入端和印刷电路板的电源层与接地层的连接关系相应于闪存模块150需要的可靠命令的操作码,例如“0xE6”。换句话说,当输出装置170被启动时,闸G7~G0会分别输出“b11100110”到闪存控制器130的数据引脚D7~D0。闪存控制器130的数据引脚D7~D0也会通过印刷电路板的导线分别连接到闪存模块150的数据引脚D7~D0。
虽然图6的输出装置170的实施例描述了8比特的数据输入和输出,但是所属技术领域人员可依据系统的需要将输出装置170扩充为16比特、32比特或其他比特数目的数据输入和输出,本发明并不因此受限。虽然图6的闸G7~G0为拉低动作(Low Active)的闸,但是所属技术领域人员可依据系统的需要将闸G7~G0设计为拉高动作(High Active)的闸,本发明并不因此受限。
为了搭配如上所述的硬件解决方案,开机程序代码可做一些改变。参考图7所示的可靠命令操作码的获取方法的流程图,此方法由处理单元134加载及执行开机程序代码时实施。图7所示的方法相应于图6中的步骤S316,包含为了搭配硬件解决方案的操作细节,详细说明如下:
步骤S710:驱动GPIO接口137发送启动信号EN给输出装置170。
步骤S720:通过闪存接口139的数据线从输出装置170读取可靠命令的操作码OPC。
步骤S730:存储可靠命令的操作码至RAM 136,使得在步骤S336和步骤S342中读取和写数据时能够根据RAM 136中存储的操作码发出可靠命令给闪存模块150。
步骤S740:获取可靠命令的操作码OPC后,驱动GPIO接口137停止发送启动信号EN给输出装置170,用于释放数据线的控制权,使得这些数据线可用于在闪存控制器130和闪存模块150之间传递命令、地址、数据等。
为了解决如上所述实施方式的问题,另一些实施例提出一种通信协议的解决方案。在步骤S314中,读取标识码命令原用于请求闪存模块150提供闪存供货商标识码以获取闪存模块150的制造厂商、技术时代等信息。在新的解决方案中,闪存模块150收到读取标识码命令后会回复8个字节的数据,其中的6个字节记录闪存供货商标识码,但有2个字节是保留的。闪存模块150可在保留字节中写入可靠命令的操作码,也就是说,闪存模块150将可靠命令的操作码附加在闪存供货商标识码之后,一起回复给闪存控制器130。
为了搭配如上所述的通信协议解决方案,开机程序代码可做一些改变。参考图8所示的可靠命令操作码的获取方法的流程图,此方法由处理单元134加载及执行开机程序代码时实施。图8所示的方法相应于图6中的步骤S316,包含为了搭配通信协议解决方案的操作细节,详细说明如下:
步骤S810:从读取标识码命令的回复数据中的保留字节解析出可靠命令的操作码OPC。
步骤S820:存储可靠命令的操作码至RAM 136,使得在步骤S336和步骤S342中读取和写数据时能够根据RAM 136中存储的操作码发出可靠命令给闪存模块150。
本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如存储装置中的固件转换层(Firmware Translation Layer,FTL)、特定硬件的驱动程序等。此外,也可实现于如上所示的其他类型程序。所属技术领域中的技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如DVD、CD-ROM、U盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。
虽然图1、图2、图6中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图3、图7、图8的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
Claims (10)
1.一种配置可靠命令的方法,由闪存控制器执行,其特征在于,所述配置可靠命令的方法包含:
发送启动信号给输出装置,其中,所述闪存控制器和所述输出装置设置在印刷电路板上,并且以所述印刷电路板中的导线彼此耦接;
从所述输出装置读取相应于闪存模块的可靠命令的操作码,其中,所述闪存模块设置在所述印刷电路板上,并且以所述印刷电路板的电路耦接至所述闪存控制器,所述可靠命令指示所述闪存模块使用单层式单元模式来存取数据;以及
获取所述可靠命令的所述操作码后,停止发送所述启动信号给所述输出装置。
2.如权利要求1所述的配置可靠命令的方法,其特征在于,所述启动信号是通过通用输入输出接口发送给所述输出装置。
3.如权利要求1所述的配置可靠命令的方法,其特征在于,包含:
发出所述操作码给所述闪存模块,用于指示所述闪存模块使用所述单层式单元模式写入系统内程序代码和所述系统内程序代码执行时需要参考的系统信息。
4.如权利要求1所述的配置可靠命令的方法,其特征在于,包含:
发出所述操作码给所述闪存模块,用于指示所述闪存模块使用所述单层式单元模式读取系统内程序代码和所述系统内程序代码执行时需要参考的系统信息。
5.如权利要求1所述的配置可靠命令的方法,其特征在于,所述输出装置包含:多个闸,
其中,每个所述闸的输入端通过第一导线连接到所述印刷电路板中的电源层或接地层,每个所述闸的输出端通过第二导线连接到所述闪存控制器的一个相应数据引脚,以及每个所述闸被所述启动信号所启动。
6.如权利要求5所述的配置可靠命令的方法,其特征在于,每个所述闸的所述输入端通过所述第一导线连接到所述印刷电路板中的所述电源层且被启动时,输出逻辑“1”至所述闪存控制器的相应数据输入端;每个所述闸的所述输入端通过所述第一导线连接到所述印刷电路板中的所述接地层且被启动时,输出逻辑“0”至所述闪存控制器的相应数据输入端;以及每个所述闸不被启动时,处于高阻抗状态且不能输出数据。
7.一种计算机可读取存储介质,用于存储能够被闪存控制器的处理单元执行的程序代码,其特征在于,所述程序代码被所述处理单元执行时实现如权利要求1至6中任一项所述的配置可靠命令的方法。
8.一种配置可靠命令的装置,其特征在于,包含:
闪存控制器,设置在印刷电路板上;以及
输出装置,设置在所述印刷电路板上并通过所述印刷电路板的电路耦接所述闪存控制器,包含多个闸,
其中,每个所述闸的输入端通过第一导线连接到所述印刷电路板中的电源层或接地层,每个所述闸的输出端通过第二导线连接到所述闪存控制器的一个相应数据引脚,以及每个所述闸被所述闪存控制器发出的启动信号所启动。
9.如权利要求8所述的配置可靠命令的装置,其特征在于,每个所述闸的所述输入端通过所述第一导线连接到所述印刷电路板中的所述电源层且被启动时,输出逻辑“1”至所述闪存控制器的相应数据输入端;每个所述闸的所述输入端通过所述第一导线连接到所述印刷电路板中的所述接地层且被启动时,输出逻辑“0”至所述闪存控制器的相应数据输入端;以及每个所述闸不被启动时,处于高阻抗状态且不能输出数据。
10.如权利要求9所述的配置可靠命令的装置,其特征在于,包含:
闪存模块,设置在所述印刷电路板上并通过所述印刷电路板的电路耦接所述闪存控制器,
其中,所述闸的所述输入端和所述印刷电路板的所述电源层与所述接地层的连接关系相应于所述闪存模块需要的所述可靠命令的操作码。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010653300.5A CN113918082B (zh) | 2020-07-08 | 2020-07-08 | 计算机可读取存储介质、配置可靠命令的方法及装置 |
US17/169,032 US11561732B2 (en) | 2020-07-08 | 2021-02-05 | Method and apparatus and computer program product for configuring reliable command |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010653300.5A CN113918082B (zh) | 2020-07-08 | 2020-07-08 | 计算机可读取存储介质、配置可靠命令的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113918082A true CN113918082A (zh) | 2022-01-11 |
CN113918082B CN113918082B (zh) | 2024-03-08 |
Family
ID=79172635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010653300.5A Active CN113918082B (zh) | 2020-07-08 | 2020-07-08 | 计算机可读取存储介质、配置可靠命令的方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11561732B2 (zh) |
CN (1) | CN113918082B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101399076A (zh) * | 2007-09-28 | 2009-04-01 | 智多星电子科技有限公司 | 电子数据快闪记忆卡、控制方法和决定闪存装置类型方法 |
WO2016187801A1 (zh) * | 2015-05-26 | 2016-12-01 | 崔开平 | 一种用于储存介质的数据管理方法及固态硬盘与控制芯片 |
CN106528106A (zh) * | 2016-10-31 | 2017-03-22 | 武汉光迅科技股份有限公司 | 一种自适应各种不同Flash芯片类型的嵌入式系统启动方法 |
CN109284117A (zh) * | 2018-09-26 | 2019-01-29 | 深圳市慧嘉智科技有限公司 | 基于闪存微控制器的固件升级方法和系统及闪存微控制器 |
US20190042130A1 (en) * | 2017-12-18 | 2019-02-07 | Intel Corporation | Prefix opcode method for slc entry with auto-exit option |
US20190095123A1 (en) * | 2017-09-22 | 2019-03-28 | Silicon Motion, Inc. | Methods for internal data movements of a flash memory device and apparatuses using the same |
CN110955387A (zh) * | 2019-10-25 | 2020-04-03 | 合肥沛睿微电子股份有限公司 | 自适应识别闪存类型方法及计算机可读取存储介质及装置 |
CN111026325A (zh) * | 2018-10-09 | 2020-04-17 | 慧荣科技股份有限公司 | 闪存控制器、闪存控制器的控制方法及相关的电子装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6076161A (en) * | 1997-08-25 | 2000-06-13 | National Semiconductor Corporation | Microcontroller mode selection system and method upon reset |
US7047462B2 (en) * | 2002-01-04 | 2006-05-16 | Hewlett-Packard Development Company, Lp. | Method and apparatus for providing JTAG functionality in a remote server management controller |
KR100878479B1 (ko) * | 2007-01-16 | 2009-01-14 | 삼성전자주식회사 | 데이터 정보에 따라 프로그램 방식을 결정하는 메모리시스템 |
TWI468946B (zh) * | 2011-04-27 | 2015-01-11 | Silicon Motion Inc | 用來進行主裝置指揮運作之方法以及記憶裝置及控制器 |
CN102707969A (zh) | 2012-04-25 | 2012-10-03 | 中颖电子股份有限公司 | 通讯中可随时固件更新的存储卡及其固件更新方法 |
TWI533305B (zh) * | 2014-02-10 | 2016-05-11 | 慧榮科技股份有限公司 | 將資料寫入至快閃記憶體的方法及相關的記憶裝置與快閃記憶體 |
TWI639917B (zh) * | 2017-04-25 | 2018-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置及映射表重建方法 |
US10437514B2 (en) * | 2017-10-02 | 2019-10-08 | Micron Technology, Inc. | Apparatuses and methods including memory commands for semiconductor memories |
KR102514772B1 (ko) | 2017-12-28 | 2023-03-28 | 삼성전자주식회사 | 비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법 |
TWI659359B (zh) | 2018-04-27 | 2019-05-11 | 慧榮科技股份有限公司 | 控制儲存裝置之方法 |
-
2020
- 2020-07-08 CN CN202010653300.5A patent/CN113918082B/zh active Active
-
2021
- 2021-02-05 US US17/169,032 patent/US11561732B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101399076A (zh) * | 2007-09-28 | 2009-04-01 | 智多星电子科技有限公司 | 电子数据快闪记忆卡、控制方法和决定闪存装置类型方法 |
WO2016187801A1 (zh) * | 2015-05-26 | 2016-12-01 | 崔开平 | 一种用于储存介质的数据管理方法及固态硬盘与控制芯片 |
CN106528106A (zh) * | 2016-10-31 | 2017-03-22 | 武汉光迅科技股份有限公司 | 一种自适应各种不同Flash芯片类型的嵌入式系统启动方法 |
US20190095123A1 (en) * | 2017-09-22 | 2019-03-28 | Silicon Motion, Inc. | Methods for internal data movements of a flash memory device and apparatuses using the same |
CN109542335A (zh) * | 2017-09-22 | 2019-03-29 | 慧荣科技股份有限公司 | 快闪存储器的数据内部搬移方法以及使用该方法的装置 |
US20190042130A1 (en) * | 2017-12-18 | 2019-02-07 | Intel Corporation | Prefix opcode method for slc entry with auto-exit option |
CN109284117A (zh) * | 2018-09-26 | 2019-01-29 | 深圳市慧嘉智科技有限公司 | 基于闪存微控制器的固件升级方法和系统及闪存微控制器 |
CN111026325A (zh) * | 2018-10-09 | 2020-04-17 | 慧荣科技股份有限公司 | 闪存控制器、闪存控制器的控制方法及相关的电子装置 |
CN110955387A (zh) * | 2019-10-25 | 2020-04-03 | 合肥沛睿微电子股份有限公司 | 自适应识别闪存类型方法及计算机可读取存储介质及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20220011975A1 (en) | 2022-01-13 |
US11561732B2 (en) | 2023-01-24 |
CN113918082B (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10769066B2 (en) | Nonvolatile memory device, data storage device including the same and operating method thereof | |
KR20200095103A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
US20200057725A1 (en) | Data storage device and operating method thereof | |
US10360984B2 (en) | Data storage device and method of operating the same | |
US11157201B2 (en) | Memory system and operating method thereof | |
US11422708B2 (en) | Memory interface, data storage device including the same and operating method thereof | |
CN113741798A (zh) | 数据存储装置及其操作方法 | |
US11748025B2 (en) | Nonvolatile memory device, data storage device including the same and operating method thereof | |
US20220107906A1 (en) | Multiple Pin Configurations of Memory Devices | |
CN113918081B (zh) | 计算机可读取存储介质、配置可靠命令的方法及装置 | |
US10861576B2 (en) | Nonvolatile memory device, operating method thereof and data storage device including the same | |
US9710193B2 (en) | Method of detecting memory modules, memory control circuit unit and storage apparatus | |
CN113918082B (zh) | 计算机可读取存储介质、配置可靠命令的方法及装置 | |
CN114385070B (zh) | 主机、数据存储装置、数据处理系统以及数据处理方法 | |
TWI771707B (zh) | 組態可靠命令的方法及裝置以及電腦程式產品 | |
TWI748550B (zh) | 組態可靠命令的方法及裝置以及電腦程式產品 | |
US11281590B2 (en) | Controller, operating method thereof and storage device including the same | |
US11157401B2 (en) | Data storage device and operating method thereof performing a block scan operation for checking for valid page counts | |
US10514866B2 (en) | Data storage device, operating method thereof and method for operating nonvolatile memory device | |
CN107863120B (zh) | 数据存储装置及其操作方法 | |
US10719270B2 (en) | Raising usage rates of memory blocks with a free MSB page list | |
KR20170051124A (ko) | 전자 장치에 내장된 휘발성 메모리 장치의 테스트 방법 | |
Cooke | Introduction to Flash Memory (T1A) |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |