CN112214157B - 主机输出输入命令的执行装置及方法及存储介质 - Google Patents

主机输出输入命令的执行装置及方法及存储介质 Download PDF

Info

Publication number
CN112214157B
CN112214157B CN201910984087.3A CN201910984087A CN112214157B CN 112214157 B CN112214157 B CN 112214157B CN 201910984087 A CN201910984087 A CN 201910984087A CN 112214157 B CN112214157 B CN 112214157B
Authority
CN
China
Prior art keywords
command
user data
write
read
host
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
CN201910984087.3A
Other languages
English (en)
Other versions
CN112214157A (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.)
Silicon Motion Inc
Original Assignee
Silicon Motion 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 Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to US16/854,652 priority Critical patent/US11086805B2/en
Publication of CN112214157A publication Critical patent/CN112214157A/zh
Priority to US17/360,720 priority patent/US11977500B2/en
Application granted granted Critical
Publication of CN112214157B publication Critical patent/CN112214157B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • 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
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)

Abstract

本发明涉及一种主机输出输入命令的执行方法,由装置端的处理单元执行,包括:为响应多种类型的主机输出输入命令,使用通用架构的多个阶段来驱动前端接口进行与主机端间的交互,用于传送从存储单元读取的用户数据给主机端,以及从主机端接收即将写入存储单元的用户数据。通过通用架构的多个阶段来响应多种类型的主机输出输入命令,可避免使用多套不同的固件来分别对应一种主机输出输入命令所造成的维护不易及耗费较大非易失存储空间等问题。

Description

主机输出输入命令的执行装置及方法及存储介质
技术领域
本发明涉及存储装置,尤指一种主机输出输入命令的执行装置及方法及计算机可读取存储介质。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,中央处理器(Host)可在地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储在该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(Bytes)的值到NAND闪存中,用以定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。
在嵌入式多媒体卡(Embedded Multi-Media Card e.MMC)5.1标准中,主装置可为了不同的应用需求发出不同类型的主机输出输入命令(Host Input-Output IO Commands)给存储装置,例如简单读/写命令(Simple Read/Write Command)、包裹读/写命令(PackedRead/Write Command)、命令队列(Command Queue)等,用于请求存储装置读取/写入数据。然而,主装置及存储装置需要使用不同的协议来交换不同类型的主机命令、即将写入存储装置的数据、从存储装置读取的数据等。传统上,存储装置实作不同的固件模块用于在不同的协议下进行与主装置间的命令、地址及数据传递。然而,要维护处理不同协议的固件模块并不容易。因此,本发明提出一种使用单一固件模块来执行主机输出输入命令的装置及方法及计算机可读取存储介质。
发明内容
有鉴于此,如何减轻或消除所述相关领域的缺失,实为有待解决的问题。
本发明涉及一种主机输出输入命令的执行方法,由装置端中的处理单元执行,包括:为响应多种类型的主机输出输入命令,使用通用架构的多个阶段来驱动前端接口进行与主机端间的交互,用于传送从存储单元读取的用户数据给主机端,以及从主机端接收即将写入存储单元的用户数据。
本发明另涉及一种主机输出输入命令执行的计算机可读取存储介质,用于存储能够被处理单元加载并执行的计算机程序,所述计算机程序被所述处理单元执行时实现以上所述的方法。
本发明另涉及一种主机输出输入命令的执行装置,包括前端接口及处理单元。处理单元用以于加载并执行以上所述程序代码时实行以上所述的方法。
上述实施例的优点之一,通过通用架构的多个阶段来响应多种类型的主机输出输入命令,可避免使用多套不同的固件来分别对应一种主机输出输入命令所造成的维护不易及耗费较大非易失存储空间等问题。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的闪存存储器的闪存存储器的系统架构示意图;
图2为闪存接口与存储单元的连接示意图;
图3中的(A)及(B)部分分别为简单写操作及简单读操作的时序图;
图4中的(A)及(B)部分分别为包裹写操作及包裹读操作的时序图;
图5中的(A)至(C)部分分别为安排命令队列、命令队列中写入工作及命令队列中读取工作的时序图;
图6为依据本发明实施例的通用阶段示意图;
图7为依据本发明实施例的通用阶段中的函数执行示意图;
图8中的(A)至(C)部分分别为依据本发明实施例的一段逻辑区块地址(LogicalBlock Addresses LBAs)的分割示意图;
图9为依据本发明实施例的主机输出输入命令的执行方法流程图。
附图标记说明:
100电子装置
110主机端
111、131处理单元
113、135随机存取存储器
115、137、139、151接口
130控制器
132通信协议传输层
133固件转译层
134控制器层
136硬件引擎
150存储装置
153、153#0~153#15存储单元
CH#0~CH#3输出输入通道
CE#0~CE#3使能信号
610、630、651、653、671、673、690阶段
711~749程序指令
791、793、795数据表
S910~S985方法步骤
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用在本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。使用于描述组件之间关系的其他语词也可类似方式解读,例如“介于”相对于“直接介于”,或者是“邻接”相对于“直接邻接”等等。
参考图1。电子装置100包括主机端(Host Side)110、控制器130及存储装置150,并且控制器130及存储装置150可合称为装置端(Device Side)。电子装置100可为个人计算机、笔记本计算机(Laptop PC)、平板计算机、移动电话、数字相机、数字摄影机等电子产品。主机端110的主机接口(Host Interface)115及控制器130的前端接口(FrontendInterface)137可以嵌入式多媒体卡(Embedded Multi-Media Card eMMC)通信协议彼此通信。控制器130的后端接口(Backend Interface)139及存储装置150的闪存接口151可以双倍数据率(Double Data Rate DDR)通信协议彼此通信,例如,开放NAND闪存(Open NANDFlash Interface ONFI)、双倍数据率开关(DDR Toggle)或其他接口通信协议。主机端110包括处理单元111,用以依据应用程序的要求通过主机接口115发出不同类型的主机命令给控制器130,例如简单读/写命令(Simple Read/Write Command)、包裹读/写命令(PackageRead/Write Command)、命令队列(Command Queue)等。主机端110另包括动态随机存取存储器(Dynamic Random Access Memory DRAM)113,用于配置空间作为数据缓冲区,存储即将写入存储装置150的用户数据,以及从存储装置150读取的用户数据。控制器130包括处理单元131,用于通过前端接口137从主机端110接收不同类型的主机命令,并据此通过后端接口139指示存储装置150执行数据读取、写入、抹除等操作。处理单元111及131中的任一个可使用多种方式实施,如使用通用硬件(例如,单处理器、具并行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行软件以及/或固件指令时,提供之后描述的功能。控制器130另包括静态随机存取存储器(Static Random Access Memory SRAM)135,用于配置空间作为数据缓冲区,存储主机写命令欲写入存储装置150的用户数据,主机读命令指示从存储装置150读取的用户数据,以及执行过程中需要的数据,例如,变量、数据表、主机-闪存对照表(Host-to-Flash H2F Table)、闪存-主机对照表(Flash-to-Host F2HTable)等。后端接口139另包括NAND闪存控制器(NAND Flash Controller NFC),提供存取存储装置150过程中需要的功能,例如命令串行器(Command Sequencer)、低密度奇偶校验(Low Density Parity Check LDPC)等。控制器130另包括硬件引擎136,设置多种加速运算电路,让处理单元131执行算法时及后端接口139运行时使用,例如高级加密标准(AdvancedEncryption Standard AES)加密引擎、AES解密引擎、循环冗余校验(Cyclic RedundancyCheck CRC)编码器、CRC译码器等。
存储装置150包括存储单元153,提供大量的存储空间,通常是数百Gigabytes,甚至是Terabytes,用于存储大量的用户数据,例如高分辨率图片、影片等。存储单元153中包括控制电路以及存储器数组,存储器数组中的存储单元可包括单层式单元(Single LevelCells, SLCs)、多层式单元(Multiple Level Cells, MLCs)三层式单元(Triple LevelCells, TLCs)、四层式单元(Quad-Level Cells QLCs)或所述的任意组合。处理单元131通过后端接口139写入用户数据到存储装置150(详细来说,存储单元153)中的指定地址(目的地址),以及从存储装置150中的指定地址(来源地址)读取用户数据。后端接口139使用数个电子信号来协调控制器130与存储装置150间的数据与命令传递,包括数据线(Data Line)、时钟信号(clock signal)与控制信号(control signal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(Chip Enable CE)、地址提取启动(Address Latch Enable ALE)、命令提取启动(Command Latch Enable CLE)、写入启动(Write Enable WE)等控制信号。
参考图2,闪存接口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闪存模块139#0至139#3、139#4至139#7、139#8至139#11、或139#12至139#15,接着以并行的方式从启动的NAND闪存模块读取用户数据,或者写入用户数据至启动的NAND闪存模块。
前端接口137通过输出输入引脚(Input-Output IO pins)耦接主机接口115,包括寄存器、数据缓冲器、接收器、传送器、直接存储器存取(Direct Memory Access DMA)控制器等。处理器131可于加载并执行通信协议传输层(Protocol Transport Layer PTL)132的程序指令时,通过设定前端接口137中关联的寄存器指示其中的接收器、传送器或DMA控制器接收器完成特定操作。例如,PTL 132于执行时指示前端接口137的接收器接收主机端110发送的信号,解译(Interpret)信号中携带的不同类型的主机命令、逻辑地址等。PTL 132可于执行时指示前端接口137的DMA控制器将前端接口137的数据缓冲器中的数据迁移到SRAM135中的特定地址,用于将主机命令推入命令队列、缓存待写入的用户数据等。PTL 132可于执行时指示前端接口137的DMA控制器将SRAM 135中特定地址的数据迁移到料前端接口137的数据缓冲器,并指示前端接口137的传送器传送数据缓冲器中的数据给主机端110,用于回复从存储装置150读取的用户数据给主机端110。
后端接口139通过输出输入引脚耦接闪存接口151,包括寄存器、数据缓冲器、接收器、传送器、DMA控制器等。处理器131可于加载并执行控制器层(Controller Layer CTL)134的程序指令时,通过设定后端接口139中关联的寄存器指示其中的接收器、传送器或DMA控制器接收器完成特定操作。
此外,处理器131可于加载并执行固件转译层(Firmware Translation LayerFTL)134的程序指令时,执行相应于读取、写入或背景操作的多种算法(Algorithms)。FTL134主要负责将主机端的逻辑区块地址(Logical Block Addresses LBAs)映像到存储装置150中的实体位置(又称为逻辑-实体转换)。详细来说,所有LBAs代表可让主机端110的文件系统看见并管理的逻辑单元,并且被映像到存储装置150中的实体位置(区块ID、页面ID及区段ID)。为了提升存储装置150中存储单元的耐磨性,LBA的实体位置可能在损耗平均(Wear Leveling)及其他背景管理算法中动态改变,如坏块管理(Bad Block Management)、垃圾回收(Garbage Collection)等。此外,FTL 134于执行时可通过后端接口139将SRAM135中特定LBA的用户数据写入存储装置150中的指定实体位置,以及从存储装置150中的指定实体位置读取特定LBA的用户数据并存储至SRAM 135中的特定地址。
以eMMC 5.1标准为例,主机接口115及前端接口137间包括一条命令线(CommandLine CMD)及八条数据线(Data Lines D[7:0]),其中D[0]可让装置端利用于通知主机端110其正处于忙碌状态(Busy State)。
在一些实施例,为写入一个或多个LBA的用户数据到装置端,主机端110可发送简单写命令(Simple Write Command)给控制器130。简单写命令也可称为一般写命令(NormalWrite Command)。参考图3中的(A)部分,详细来说,处理单元111于执行驱动程序时可通过主机接口115的命令线发送命令CMD25(或CMD24)及相关参数(Arguments ARG)给PTL 132,包括欲写入的起始LBA及长度等信息,用于启动装置端的简单写入操作。接着,处理单元131执行的PTL 132可通过前端接口137的命令线传送回复信息(Response RESP),用于指出命令及参数的接收状况。之后,PTL 132通过前端接口137将D[0]信号拉低(Pull-low)一段时间(时间t30至t31),用于通知主机端110此装置端处于准备接收用户数据的忙碌状态。一旦准备就绪,PTL 132通过前端接口137放开(Release)D[0]信号,使得处理单元111可开始通过主机接口115的D[7:0]传送相应的用户数据(User Data DAT)给装置端。PTL 132通过前端接口137接收用户数据完毕后,通过前端接口137将D[0]信号拉低一段时间(时间t32至t33),用于通知主机端110此装置端处于处理接收到的用户数据的忙碌状态。一旦处理完毕,PTL 132通过前端接口137放开D[0]信号,也称为回复忙碌清除(Response Busy ClearR1b),代表简单写命令执行完成。
在一些实施例,为从装置端读取一个或多个LBA的用户数据到装置端,主机端110可发送简单读命令(Simple Read Command)给控制器130。简单读命令也可称为一般读命令(Normal Read Command)。参考图3中的(B)部分,详细来说,处理单元111于执行驱动程序时可通过主机接口115的命令线发送命令CMD18(或CMD17)及相关参数给PTL 132,包括欲读取的起始LBA及长度,用于启动装置端的简单读取操作。接着,处理单元131执行的PTL 132可通过前端接口137的命令线传送回复信息。一段默认的时间(时间t34至t35)后,PTL 132可通过前端接口137的数据线D[7:0]传送LBA的用户数据给主机端。当所有用户数据都传送完毕,简单写命令执行完成。
在另一些实施例,为写入多包(Packs,最多64包)的用户数据到装置端,主机端110可发送包裹写命令(Package-write Command)给控制器130,其中每包包括一个或多个LBA的用户数据。参考图4中的(A)部分,详细来说,处理单元111于执行驱动程序时可通过主机接口115的命令线发送命令CMD25及其参数给PTL 132,例如,包裹命令的指示(Indicatorof Packed Commands)、即将传送的包裹头(Package Header)中的包裹命令(PackedCommands)数量等信息,用于启动装置端的包裹写操作。接着,处理单元131执行的PTL 132可通过前端接口137的命令线传送回复信息。之后,PTL 132通过前端接口137将D[0]信号拉低一段时间,用于通知主机端110此装置端处于准备传送包裹头的忙碌状态。一旦准备就绪,PTL 132通过前端接口137放开D[0]信号,使得处理单元111可开始通过主机接口115的D[7:0]传送包裹头给装置端,其中,包括每包的操作类型(如写入)、起始LBA地址及长度等信息。包裹头传送后,PTL 132通过前端接口137将D[0]信号拉低一段时间(时间t40至t41),用于通知主机端110此装置端处于准备接收用户数据的忙碌状态。一旦准备就绪,PTL 132通过前端接口137放开D[0]信号,使得处理单元111可开始通过主机接口115的D[7:0]传送所述多包的用户数据给装置端。所属技术领域人员理解包裹命令中的用户数据的写入顺序不能改变。PTL 132通过前端接口137接收用户数据完毕后,通过前端接口137将D[0]信号拉低一段时间(时间t42至t43),用于通知主机端110此装置端处于处理接收到的用户数据的忙碌状态。一旦处理完毕,PTL 132通过前端接口137放开D[0]信号,也称为回复忙碌清除,代表包裹写命令执行完成。
在另一些实施例,为从装置端读取多包(例如32包)的用户数据到装置端,主机端110可发送包裹读命令(Package-read Command)给控制器130,其中每包包括一个或多个LBA的用户数据。参考图4中的(B)部分,详细来说,处理单元111于执行驱动程序时可通过主机接口115的命令线发送命令CMD25及其参数给PTL 132,例如,包裹命令的指示、即将传送的包裹头中的包裹命令数量等信息,用于启动装置端的包裹读操作。接着,处理单元131执行的PTL 132可通过前端接口137的命令线传送回复信息。之后,PTL 132通过前端接口137将D[0]信号拉低一段时间,用于通知主机端110此装置端处于准备传送包裹头的忙碌状态。一旦准备就绪,PTL 132通过前端接口137放开D[0]信号,使得处理单元111可开始通过主机接口115的D[7:0]传送包裹头给装置端,其中,包括每包的操作类型(如读取)、起始LBA地址及长度等信息。包裹头传送后,处理单元111可通过主机接口115的命令线依序发送多个命令CMD18(或CMD17)给PTL 132,用于启动装置端执行如包裹头所述的多包读取操作。于收到每个命令CMD18后,处理单元131执行的PTL 132可通过前端接口137的命令线传送回复信息。于此需注意的是,由于每包的起始LBA地址及长度等信息已经通过包裹头传送给装置端,处理单元111不需要花时间及带宽传送每个命令CMD18(或CMD17)的相关参数给装置端110。一段默认的时间(时间t44至t45)后,PTL 132可通过前端接口137的数据线D[7:0]传送一包的用户数据给主机端。所属技术领域人员理解包裹命令中的用户数据的阅读顺序不能改变。当最后一包的用户数据传送完毕,包裹读命令执行完成。
如上所述的简单或包裹读写操作中,本领域技术人员理解用户数据或包裹头在数据在线传递的期间,命令线是闲置的。于另一些实施例,为了让命令线的使用更有效率,主机端110可安排一个命令队列(Command Queue)并传送给控制器130,其中包括多个(最多32个)工作(Tasks),每个工作指示读取或写入一个或多个LBA的用户数据。参考图5中的(A)部分,处理单元111于执行驱动程序时可通过主机接口115的命令线发送成对的命令CMD44及CMD45给PTL 132,用于告诉装置端一个工作的内容。详细来说,处理单元111发送命令CMD44及相关参数给PTL 132,包括工作编号等信息,接着,发送命令CMD45及相关参数给PTL 132,包括这个工作的编号、工作类型(如读取或写入)、起始LBA地址及长度等信息。
参考图5中的(B)及(C)部分,当一个命令队列中一个或多个工作的信息传送给装置端后,处理单元111可周期性地或在特定时机点通过主机接口115的命令线发送命令CMD13给装置端,请求读取队列状态寄存器(Queue Status Register QSR)的值。前端接口137可包括32比特的队列状态寄存器,每个比特存储命令队列中相应工作的准备就绪状态。例如,当QSR的第0个比特为“1”时,代表命令队列中的第0个工作已经就绪,处理单元111能够驱动装置端启动第0个工作。当QSR的第10个比特为“0”时,代表命令队列中的第10个工作已经就绪,处理单元111还不能够启动第10个工作。
针对命令队列中已经就绪的写入工作,参考图5中的(B)部分,详细来说,处理单元111于执行驱动程序时可通过主机接口115的命令线发送命令CMD47给PTL 132,包括工作编码等信息,用于启动装置端执行特定读取工作。之后,PTL 132通过前端接口137将D[0]信号拉低一段时间(时间t50至t51),用于通知主机端110此装置端处于准备接收用户数据的忙碌状态。一旦准备就绪,PTL 132通过前端接口137放开D[0]信号,使得处理单元111可开始通过主机接口115的D[7:0]传送所述工作的用户数据给装置端。PTL 132通过前端接口137接收用户数据完毕后,通过前端接口137将D[0]信号拉低一段时间(时间t52至t53),用于通知主机端110此装置端处于处理接收到的用户数据的忙碌状态。一旦处理完毕,PTL 132通过前端接口137放开D[0]信号,也称为回复忙碌清除,代表此写入工作执行完成。于此需注意的是,当主机端经由数据线D[7:0]传送用户数据给装置端的期间,处理单元111可通过主机接口115的命令线发送另一对描述工作内容的命令CMD44与CMD45及其参数,或其他的命令给装置端。
针对命令队列中已经就绪的读取工作,参考图5中的(C)部分,详细来说,处理单元111于执行驱动程序时可通过主机接口115的命令线发送命令CMD46及相关参数给PTL 132,包括工作编码等信息,用于启动装置端执行特定写入工作。一段默认的时间(时间t54至t55)后,PTL 132可通过前端接口137的数据线D[7:0]传送此工作的用户数据给主机端。于此需注意的是,当装置端经由数据线D[7:0]传送用户数据给主机端的期间,处理单元111可通过主机接口115的命令线发送另一对描述工作内容的命令CMD44与CMD45及其参数,或其他的命令给装置端。
所属技术领域人员理解,装置端可自由安排命令队列中的执行顺序,不同于如上所述的包裹读/写命令。
在一些实施方式中,因应如上所述的简单读/写命令、包裹读/写命令及命令队列,会设计三套不同的PTL及固件转译层(Firmware Translation Layer FTL),每一套对应所述命令执行中的一者。然而,要维护处理不同协议的多个固件模块并不容易。例如,支持一种类型的主机输出输入命令的固件模块的算法改变时,其他固件模块也需要跟着改变,才不会因算法不同而于执行过程中发生不预期的错误。此外,需要更大的非易失存储空间存储三套不同的PTL及FTL,例如,控制器130中的只读存储器(未显示于图1)或SRAM 135,或者存储装置150中的存储单元153。
为解决如上所述的问题,本发明实施例提出使用一套固件模块(例如包括PTL及FTL)来处理不同类型的主机输出输入命令。参考图6,为响应多种类型的主机输出输入命令,例如CMD24、CMD25、CMD17、CMD18、CMD46、CMD47等,处理单元131于执行PTL 132及FTL133时使用通用架构的多个阶段(简称通用阶段Generic Stages)来驱动前端接口137与主机端110间的交互(Interactions),用于传送从存储单元153读取的用户数据给主机端110,以及从主机端110接收即将写入存储单元153的用户数据。通用阶段包括:设定就绪(SetReady)610;准备管理(Prepare Handle)630;传送数据触发(Send Data Triggering)651;传送数据等待(Send Data Waiting)653;接收数据触发(Get Data Triggering)671;接收数据等待(Get Data Waiting)673;及回复管理(Response Handle)690。通用阶段包括写入路径及读取路径,写入路径用于响应主机写命令而从主机端110接收即将写入存储单元153的用户数据,而读取路径用于响应主机读命令而传送从存储单元153读取的用户数据给主机端110。主机写命令(如CMD25、CMD24、CMD23、CMD13+CMD47等)的执行会经历五个阶段:设定就绪610;准备管理630;接收数据触发671;接收数据等待673;及回复管理690。主机读命令(如CMD18、CMD17、CMD13+CMD46等)的执行会经历五个阶段:设定就绪610;准备管理630;传送数据触发651;传送数据等待653;及回复管理690。处理单元131于每个阶段会执行与前端接口137有关的操作,用于执行主机输出输入命令,并且于任何阶段间的空闲时间区间,执行其他的操作,例如FTL 133中的特定算法。
设定就绪阶段610只为了处理命令队列中的工作,于此阶段中不为简单读/写命令及包裹/读写命令实施任何前端接口137的活动。也就是说,为了使用通用阶段来统整不同类型的主机输出输入命令,简单写命令、简单读命令、包裹写命令及包裹读命令的执行必须经历设定就绪阶段610,但不做任何处理。处理单元131可为命令队列依据FTL 133的指示设定前端接口137的QSR中的特定比特为“1”,使得PTL 132能够因应主机端110将来发出的命令CMD13回复最新的就绪状态给主机端110。
准备管理阶段630用于处理简单读/写命令、包裹/读写命令及命令队列中的工作。为响应主机端110发出的主机写命令CMD24、CMD25、CMD23或CMD47,处理单元131通过前端接口137将数据线D[0]拉低(如图3中(A)部分的时间点t30、图4中(A)部分的时间点t40或图5中(B)部分的时间点t50),用于取得数据线D[7:0]的控制权。接着,执行一连串的准备操作(Preparation Operations),例如,在SRAM 135中配置空间来存储待写入的用户数据,设定前端接口137中的寄存器,用于通知前端接口137中的DMA控制器的后要从主机端110接收多少个LBA的用户数据与SRAM 135中配置空间的地址。于准备工作完成后,处理单元131通过前端接口137释放数据线D[0] (如图3中(A)部分的时间点t31、图4中(A)部分的时间点t41或图5中(B)部分的时间点t51),用于交出数据线D[7:0]的控制权。为响应主机端110发出的主机读命令CMD17、CMD18或CMD46,处理单元131可于一段默认的时间区间(如图3中(B)部分的时间t34至t35、如图4中(B)部分的时间t44至t45或如图5中(C)部分的时间t54至t55),执行一连串的准备操作,例如,设定前端接口137中的寄存器,用于通知前端接口137中的DMA控制器的后要传送多少个LBA的用户数据给主机端110,与SRAM 135中存储待回复的用户数据的地址。
处理单元131于传送数据触发阶段651启动前端接口137中的DMA控制器开始于数据线D[7:0]上传送用户数据给主机端110,并且于接收数据触发阶段671启动前端接口137中的DMA控制器开始于数据线D[7:0]上从主机端110接收用户数据。
处理单元131于传送数据等待阶段653周期性检查前端接口137中的传送计数器(Transmission Counter),用于判断DMA控制器是否传送完所有的用户数据,并且于接收数据等待阶段753周期性检查前端接口137中的接收计数器(Reception Counter),用于判断DMA控制器是否接收完所有的用户数据。
当DMA控制器传送完或接收完所有的用户数据后,处理单元131于回复管理690阶段检查前端接口137中的相关寄存器,判断于用户数据的传送或接收过程中是否发生错误。如果是,处理单元131通过前端接口137回复适当的错误信息给主机端110。当DMA控制器传送完所有的用户数据给装置端,并且没有发现任何错误,处理单元131通过前端接口将数据线D[0]拉低(如图3中(A)部分的时间点t32、图4中(A)部分的时间点t42或图5中(B)部分的时间点t52),用于通知主机端110此装置端处于写入用户数据的忙碌状态。于用户数据的写入操作结束后,处理单元131通过前端接口释放数据线D[0](如图3中(A)部分的时间点t33、图4中(A)部分的时间点t43或图5中(B)部分的时间点t53),用于交出数据线D[7:0]的控制权。
由于FTL 133包括用于执行主机输出输入命令的多种算法,例如,通过硬件引擎136的协助来查找LBA对应的实体地址,解密读取的数据、检查读取数据的正确性、于读取数据含有错误比特时执行错误修正、加密用户数据、产生相应于用户数据的LDPC码、CRC码、错误校验及修正(Error Check and Correction ECC)码等,工作负载繁重。于一些实施例中,参考图7,为了平衡工作负载,PTL 132可提供回调函数(Callback Functions)715、717、721、723、725、727及729给FTL 133,包括如上所述阶段对前端接口137的操作,避免FTL 133花费过多的时间及运算资源来运行所述的通用阶段。详细来说,PTL 132包括函数PushQueue()711,用于被处理单元131执行时解读通过前端接口137接收的主机输出输入命令,判断这些主机输出输入命令是否形成简单读/写命令、包裹读/写命令或命令队列。接着,函数PushQueue()711依据解读出的主机输出输入命令产生命令比特表(Command BitTable CBT)791、槽比特表(Slot Bit Table SBT)793及用户数据表(User-data StorageTable)795,并存储至SRAM 135。
因为简单读/写命令、包裹读/写命令及命令队列的形成需要不同种类的信息往返,且可包括一个或多个读取、写入操作或其任意组合,因此,通过CBT 791可让PTL 133将不同种类的读取及写入操作统合成一个共通格式,方便管理。为了兼容简单读/写命令、包裹读/写命令及命令队列,CBT 791可包括32个纪录(Entries),每个纪录关联于一个输出输入操作,至少包括两个字段:第1个字段表示有效标志(Valid Flag),第2个字段表示命令类型(Command Type,其中“0”代表读取,“1”代表写入,“2”代表抹除),默认为虚假值(NULL)。当接收到简单写命令(如收到CMD24/25,且其中没有指示形成包裹命令),函数PushQueue()711分别存储“1”、“1”至CBT 791中第0个纪录的两个字段。当侦测到简单读命令(如收到CMD17/18,且之前没有收到指示形成包裹命令的CMD25),函数PushQueue()711分别存储“1”、“0”至CBT 791中第0个纪录的两个字段。当接收到包裹写命令(如收到包裹头中指示的多包待写入的信息),函数PushQueue()711依序分别存储“1”、“1”至CBT 791中第0至第m-1个纪录中的两个字段,m代表包的数量。当接收到包裹读命令(如收到包裹头中指示的多包待读取的信息),函数PushQueue()711依序分别存储“1”、“0”至CBT 791中第0至第n-1个纪录中的两个字段,n代表包的数量。当接收到命令队列(如收到一或多对CMD44及CMD45指示的工作信息),函数PushQueue()711依据每一对的参数中指示的工作编号p、工作类型分别存储“1”与“0”或“1”与“1”至CBT 791的第p个纪录中的两个字段。表1显示相应于一个示例命令队列的CBT:
表1
表1中只列出第0至第10个纪录,代表命令队列中包括11个工作(从0开始编号),其中第1、第2至第4个工作为读取工作,其余为写入工作。
此外,CBT 791也可以支持主机抹除命令(Host Erase Command)。当侦测到简单抹除命令(如收到CMD35/36/38),函数PushQueue()711分别存储“1”、“2”至CBT 791中第0个纪录的两个字段。当接收到命令队列中特定工作的删除命令(如收到CMD48),函数PushQueue()711分别存储“1”、“2”至CBT 791中相应纪录的两个字段。
主装置110可分割一段LBA的用户数据成多个区段(Partitions),并指定将每个区段存储于一种存储单元,例如SLCs、MLCs、TLCs或QLCs。例如,参考图8中(A)部分所示的分割,LBA#0至LBA#1023的用户数据被指定存储于TLCs。参考图8中(B)部分所示的分割,LBA#0至LBA#511的用户数据被指定存储于SLCs,而LBA#512至LBA#1023的用户数据被指定存储于TLCs。参考图8C所示的分割,LBA#0至LBA#255、LBA#256至LBA#511、LBA#512至LBA#1023的用户数据被指定分别存储于TLCs、SLCs、TLCs。
为了提升存取的效能,PTL 132可分割一段横跨两种以上存储单元的用户数据的操作,让每个分割后的操作只存取相同种类的存储单元。以图8中(c)部分为例,LBA#0至LBA#1023的写入操作可分割为三个操作,分别写入LBA#0至LBA#255、LBA#256至LBA#511、LBA#512至LBA#1023的用户数据。函数PushQueue()711可根据主装置110的LBA的存储单元配置检查CBT 791中每个有效操作是否横跨两种以上存储单元。如果是,则将此有效操作分割将多个操作。接着,函数PushQueue()711根据分割结果产生SBT 793,让FTL 133能够根据SBT 793的内容安排并执行存取用户数据的操作。SBT 793可包括96个纪录,每个纪录关联于一个分割后输出输入操作,至少包括四个字段:第1个字段存储读取标志(Read Flag,其中“0”代表非读取,“1”代表读取);第2个字段存储写入标志(Write Flag,其中“0”代表非写入,“1”代表写入);第3个字段存储抹除标志(Erase Flag,其中“0”代表非抹除,“1”代表抹除);第4个字段存储CBT 791的纪录编号,用于将此分割后输出输入操作关联到CBT 791中的特定操作,默认为虚假值(NULL)。延续表1的示例,假设第4个工作要求写入一段横跨TLC、SLC及TLC的LBA区间的用户数据,而第5个工作要求读取一段横跨TLC、SLC及TLC的LBA区间的用户数据。表2显示依据表1的示例CBT所产生的示例SBT:
表2
表2中只列出第0至第14个纪录,代表切割后的15个操作(从0开始编号),其中第4至第6个纪录存储从CBT 791的第4个操作切割出来的子操作的信息,第7至第9个纪录存储从CBT 791的第5个操作切割出来的子操作的信息。
此外,函数PushQueue()711产生用户数据存储表795,用于记录SBT 793中每一个操作的参数。用户数据存储表795可包括96个纪录,每个纪录关联于SBT 793中的一个记录,至少包括四个字段:第1个字段存储SBT 793的纪录编号,用于关联到SBT 793中的特定操作;第2个字段存储起始的LBA编号;第3个字段存储存取数据的长度;以及第4个字段存储SRAM 135中分配给此操作的存储器地址,作为待写入或读取数据的数据缓冲区。
参考回图7,当函数PushQueue()711执行完毕,处理单元131加载并执行指令713来产生一个新的FTL 133的线程(Thread)。PTL 132可传送回调函数715、717、721、723、725、727及729的地址给FTL 133的线程,让FTL 133的线程能够调用这些函数。此外,PTL 132可传送命令类型(例如,简单输出输入命令、包裹输出输入命令、命令队列等)、CBT 791、SBT793及用户数据表795给FTL 133的线程,让FTL 133的线程能据以完成指定的输出输入操作。PTL 132中实作函数SetCmdReady() 715、PrepareHandle() 717、GetDataFromHost_Trig() 721、SendDataToHost_Trig() 723、GetDataFromHost_Wait() 725、SendDataToHost_Wait() 727、ResponseHandle() 729分别用于完成如图6所述设定就绪阶段610、准备管理阶段630、接收数据触发阶段671、传送数据触发阶段651、接收数据等待阶段673、传送数据等待阶段653、回复管理阶段690的技术内容。于执行SBT 793中每个写入操作的期间,FTL 133可依序调用函数SetCmdReady() 715、PrepareHandle() 717、GetDataFromHost_Trig() 721、GetDataFromHost_Wait() 725、ResponseHandle() 729,用于通过前端接口137完成一系列与主机端110间的交互。于执行SBT 793中每个读取操作的期间,FTL 133可依序调用函数SetCmdReady() 715、PrepareHandle() 717、SendDataToHost_Trig() 723、SendDataToHost_Wait() 727、ResponseHandle() 729,用于通过前端接口137完成一系列与主机端110间的交互。PTL 132可于SRAM 135中记录产生的FTL 133的线程关联于何种输出输入命令的信息,使得如上所述任何函数接收到从FTL133的线程发出的调用时,可知道FTL 133的线程目前正执行何种输出输入命令。
详细来说,当函数SetCmdReady() 715收到从FTL 133的线程发出的调用后,为命令队列设定前端接口137中的队列状态寄存器的一个比特,代表命令队列中的相应工作已经就绪;以及不为简单写命令、简单读命令、包裹写命令及包裹读命令进行任何所述前端接口的活动。
当函数PrepareHandle() 717收到从FTL 133的线程发出的调用后,实施如上所述的准备管理阶段630。当函数GetDataFromHost_Trig() 721收到从FTL 133的线程发出的调用后,实施如上所述的接收数据触发阶段671。当函数SendDataToHost_Trig() 723收到从FTL 133的线程发出的调用后,实施如上所述的传送数据触发阶段651。
当函数GetDataFromHost_Wait() 725收到从FTL 133的线程发出的调用后,为响应简单读命令、包裹读命令中此包的用户数据、或命令队列中的读取工作,检查前端接口137中的传送计数器,用于判断DMA控制器是否传送完用户数据,并回复判断结果给FTL 133的线程。当函数SendDataToHost_Wait() 727收到从FTL 133的线程发出的调用后,为响应简单写命令、包裹写命令中此包的用户数据、或命令队列中的写入工作,检查前端接口中的接收计数器来判断DMA控制器是否接收完用户数据,并回复判断结果给FTL 133的线程。
当函数ResponseHandle() 729收到从FTL 133的线程发出的调用后,为响应简单写命令、包裹写命令中此包的用户数据、或命令队列中的写入工作,驱动前端接口137将数据线D[0]拉低一段时间,用于执行写入操作,并且于此段时间到达后释放数据线。
FTL 133的线程的执行细节可参考图9所示的方法流程图。此方法为响应多种类型的主机输出输入命令,使用通用架构的多个阶段来驱动前端接口137与主机端110间的交互,用于传送从存储单元153读取的用户数据给主机端110,以及从主机端110接收即将写入存储单元153的用户数据。处理单元131执行FTL 133的线程时反复实施一个循环(步骤S910至步骤S985),直到SBT 793中的全部有效操作都完成为止(步骤S980中“是”的路径)。于每一回合中,FTL 133的线程处理SBT 793中的一个有效操作。描述如下:
步骤S910:从SBT 793挑选第一或下一个操作。因应不同主机输出输入命令的特性,操作的挑选可服从以下的规则。当上一个执行的操作为子操作且其他的子操作尚未完成时,FTL 133的线程只能挑选下一个子操作。例如,当上一个执行的操作为表2中的第4个纪录指出的读取操作时,FTL 133的线程只能挑选表2中的第5个纪录指出的读取操作。当命令类型为包裹输出输入命令时,FTL 133的线程只能按照SBT 793中纪录的操作顺序挑选操作。当命令类型为命令队列时,FTL 133的线程可依据执行效能的需求挑选SBT 793中任一个纪录的操作。
步骤S920:判断挑选的操作是否为读取操作。如果是,流程前进到步骤S925。否则,流程跳过步骤S925,直接前进到步骤S930。FTL 133的线程可通过检查SBT 793中相应于挑选操作的读取标志来完成这个判断。
步骤S925:依据用户数据表795中相应纪录的内容指示CTL 134通过后端接口139从存储单元153读取指定LBA的用户数据,并且存储于SRAM 135中的指定地址。FTL 133可更为用户数据的读取执行必要的算法,例如,通过硬件引擎136的协助来查找LBA对应的实体地址,解密读取的数据、检查读取数据的正确性、于读取数据含有错误比特时执行错误修正等。
步骤S930:调用SetCmdReady(),指示PTL 132完成设定就绪阶段610的活动。FTL133的线程可以参数的方式,携带挑选操作的SBT编号给PTL 132。例如,参考表1及表2,当相应于SBT 793的第0个纪录的用户数据读取完成时,FTL 133的线程指示PTL 132关于SBT793的第0个工作已经就绪的信息。接着,PTL 132中实作的函数SetCmdReady()可经由查询SBT 793来发现SBT 793中第0个工作关联到CBT 791中的第0个工作,接着将QSR中第0个比特设为“1”,使得PTL 132能够通知主机端110命令队列中的第0个工作已经就绪。于此需注意的是,当命令类型为简单输出输入命令或包裹输出输入命令时,为了减少因增加判断条件而增加程序的复杂度,FTL 133的线程依然会调用SetCmdReady(),但是PTL 132不会执行任何活动。
步骤S935:判断是否收到期望的命令。如果是,流程前进到步骤S940。否则,流程于一段默认时间后继续步骤S935的判断。例如,如果之前已经指示PTL 132将QSR中第0个比特设为“1”,则FTL 133的线程期待PTL 132收到相应于SBT 793中第0个纪录的主机输出输入命令,例如,图3中(A)部分的命令CMD25、图3中(B)部分的命令CMD18、图4中(A)部分的命令CMD25、图4中(B)部分的命令CMD18、图5中(B)部分的命令CMD47、图5中(C)部分的命令CMD46,或其他类似命令,用于继续后续的处理。FTL 133的线程可询问PTL 132是否已经接收到相应于之前指示就绪的操作的命令。当PTL 132回复“是”时,流程判断已经收到期望的命令。
步骤S940:调用PrepareHandle(),指示PTL 132完成准备管理阶段630的活动。
步骤S945:判断操作类型为读取操作或写入操作。当操作类型为读取操作时,流程前进到步骤S952;当操作类型为写入操作时,流程前进到步骤S962。FTL 133的线程可通过检查SBT 793中相应于挑选操作的读取标志及写入标志来完成这个判断。
步骤S952:调用SendDataToHost_Trig(),指示PTL 132完成传送数据触发阶段651的活动。
步骤S954:周期性调用SendDataToHost_Wait(),指示PTL 132完成传送数据等待阶段653的活动,直到用户数据传送完成。
步骤S962:调用GetDataFromHost_Trig(),指示PTL 132完成接收数据触发阶段671的活动。
步骤S964:周期性调用GetDataFromHost_Wait(),指示PTL 132完成接收数据等待阶段673的活动,直到用户数据接收完成。
步骤S966:依据用户数据表795中相应纪录的内容指示CTL 134通过后端接口139将SRAM 135中指定地址的特定LBA的用户数据写入存储单元153。于此须注意的是,当装置端运行于缓存模式(Cache Mode)时,流程可不执行此步骤。所属技术领域人员可使用其他的算法,于其他的适当时间点合并SRAM 135中所有或部分的待写入用户数据,接着一次写入存储单元153,本发明并不因此局限。FTL 133可更为用户数据的写入执行必要的算法,例如,通过硬件引擎136的协助来加密用户数据、产生相应于用户数据的LDPC码、CRC码、ECC码等。
步骤S970:调用ResponseHandle(),指示PTL 132完成回复管理阶段690的活动。
步骤S980:判断是否完成SBT 793中全部有效操作。如果是,流程结束,FTL 133的线程被删除。否则,流程前进到步骤S985。
步骤S985:请求PTL 132更新SBT 793。由于在用户数据的传送与接收期间,主机端110可发送更多成对的描述工作内容的命令CMD44与CMD45及其参数,使得SBT 793可能包括更多尚未处理的操作,因此,FTL 133的线程于每次执行完一个操作后就请求PTL 132提供最新的SBT 793。于此需注意的是,步骤S985并不一定只能安排在每次执行完一个操作后,可以安排更多的SBT 793的更新步骤于流程的任意位置。如果FTL 133的线程只依据一开始接收到的SBT 793中的纪录来执行而不更新SBT 793,FTL 133的线程在执行完原始SBT 793中指示的操作后就会被删除。于用户数据的传送与接收期间接收到的命令CMD44与CMD45及其参数所指示的工作,只能在PTL 132产生FTL 133的另一个新线程中被执行。如上所示的线程删除及重新产生会耗费不必要的运算资源,降低整体效能。
本发明所述的方法中的全部或部分步骤可以计算器程序实现,例如计算机的操作系统、计算机中特定硬件的驱动程序、或软件程序。此外,也可实现在如上所示的其他类型程序。所属技术领域具有通常知识者可将本发明实施例的方法撰写成计算机程序,为求简明不再加以描述。依据本发明实施例方法实施的计算器程序可存储在适当的计算机可读取数据介质,例如DVD、CD-ROM、USB、硬盘,亦可置于可通过网络(例如,互联网,或其他适当载体)存取的网络服务器。
虽然图1中包括了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,已达成更佳的技术效果。此外,虽然图9的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不因此而局限。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用于限缩本发明。相反地,此发明涵盖了所属技术领域中的技术人员显而易见的修改与相似设置。所以,权利要求范围须以最宽广的方式解释来包括所有显而易见的修改与相似设置。

Claims (9)

1.一种主机输出输入命令的执行方法,由装置端中的处理单元执行,其特征在于,包括:
为响应多种类型的主机输出输入命令,使用通用架构的多个阶段来驱动前端接口进行与主机端间的交互,用于传送从存储单元读取的用户数据给所述主机端,以及从所述主机端接收即将写入所述存储单元的用户数据;
所述主机输出输入命令包括简单写命令、简单读命令、包裹写命令、包裹读命令及命令队列,
所述阶段包括设定就绪阶段,所述方法包括:
在所述设定就绪阶段中,为所述命令队列设定所述前端接口中的队列状态寄存器的比特,代表所述命令队列中的相应工作已经就绪;
在所述设定就绪阶段中,不为所述简单写命令、所述简单读命令、所述包裹写命令及所述包裹读命令进行任何所述前端接口的活动;
所述前端接口包括与所述主机端连接的命令线及多条数据线,所述阶段包括准备管理阶段、传送数据触发阶段、传送数据等待阶段、接收数据触发阶段及接收数据等待阶段,所述方法包括:
在所述准备管理阶段,为响应所述简单写命令、所述简单读命令、所述包裹写或读命令中一包的用户数据、或所述命令队列中的工作,驱动所述前端接口将所述数据线中的一条拉低一段时间,用于执行一连串的准备操作,并且于所述准备操作完成后,释放所述数据线;
在所述传送数据触发阶段,为响应所述简单读命令、所述包裹读命令中所述包的用户数据、或所述命令队列中的读取工作,启动所述前端接口中的直接存储器访问控制器开始于在线传送用户数据给所述主机端;
在所述传送数据等待阶段,为响应所述简单读命令、所述包裹读命令中所述包的用户数据、或所述命令队列中的所述读取工作,周期性检查所述前端接口中的传送计数器,用于判断所述直接存储器访问控制器是否传送完用户数据;
在所述接收数据触发阶段,为响应所述简单写命令、所述包裹写命令中所述包的用户数据、或所述命令队列中的写入工作,启动所述前端接口中的所述直接存储器访问控制器开始于在线从所述主机端接收用户数据;
在所述接收数据等待阶段,为响应所述简单写命令、所述包裹写命令中所述包的用户数据、或所述命令队列中的所述写入工作,周期性检查所述前端接口中的接收计数器,用于判断所述直接存储器访问控制器是否接收完用户数据;
所述阶段包括回复管理阶段,所述方法包括:
在所述直接存储器访问控制器传送完用户数据后的所述回复管理阶段,为响应所述简单写命令、所述包裹写命令中所述包的用户数据、或所述命令队列中的所述写入工作,驱动所述前端接口将所述数据线中的一条拉低一段时间,用于执行写入操作,并且于所述写入操作完成后,释放所述数据线。
2.如权利要求1所述的主机输出输入命令的执行方法,其特征在于,所述处理单元通过所述前端接口使用嵌入式多媒体卡通信协议与所述主机端通信。
3.如权利要求1至2中任一项所述的主机输出输入命令的执行方法,其特征在于,所述简单写命令指示所述装置端写入一个或多个逻辑区块地址的用户数据,所述简单读命令指示所述装置端读取一个或多个逻辑区块地址的用户数据,所述包裹写命令指示所述装置端写入多包的用户数据,每包的用户数据关联于一个或多个逻辑区块地址,所述包裹写命令或所述包裹读命令中的所述多包的执行顺序不能改变,所述命令队列包括多个工作,以及每个所述工作指示所述装置端写入或读取一个或多个逻辑区块地址的用户数据。
4.如权利要求1所述的主机输出输入命令的执行方法,其特征在于,所述阶段包括写入路径及读取路径,所述写入路径用于响应主机写命令而从所述主机端接收即将写入存储单元的用户数据,以及所述读取路径用于响应一主机读命令而传送从所述存储单元读取的用户数据给所述主机端。
5.一种主机输出输入命令执行的计算机可读取存储介质,用于存储能够被装置端中处理单元执行的计算机程序,其特征在于,所述计算机程序被所述处理单元执行时实现以下步骤:
为响应多种类型的主机输出输入命令,使用通用架构的多个阶段来驱动前端接口进行与主机端间的交互,用于传送从存储单元读取的用户数据给所述主机端,以及从所述主机端接收即将写入所述存储单元的第二用户数据;
所述主机输出输入命令包括简单写命令、简单读命令、包裹写命令、包裹读命令及命令队列;
所述阶段包括设定就绪阶段,该计算机程序被该处理单元执行时实现以下步骤:
在所述设定就绪阶段中,为所述命令队列设定所述前端接口中的队列状态寄存器的比特,代表所述命令队列中的相应工作已经就绪;
在所述设定就绪阶段中,不为所述简单写命令、所述简单读命令、所述包裹写命令及所述包裹读命令进行任何所述前端接口的活动;
所述前端接口包括与所述主机端连接的命令线及多条数据线,所述阶段包括准备管理阶段、传送数据触发阶段、传送数据等待阶段、接收数据触发阶段及接收数据等待阶段,所述计算机程序被所述处理单元执行时实现以下步骤:
在所述准备管理阶段,为响应所述简单写命令、所述简单读命令、所述包裹写或读命令中一包的用户数据、或所述命令队列中的工作,驱动所述前端接口将所述数据线中的一条拉低一段时间,用于执行一连串的准备操作,并且于所述准备操作完成后,释放所述数据线;
在所述传送数据触发阶段,为响应所述简单读命令、所述包裹读命令中所述包的用户数据、或所述命令队列中的读取工作,启动所述前端接口中的直接存储器访问控制器开始于在线传送用户数据给所述主机端;
在所述传送数据等待阶段,为响应所述简单读命令、所述包裹读命令中所述包的用户数据、或所述命令队列中的所述读取工作,周期性检查所述前端接口中的传送计数器,用于判断所述直接存储器访问控制器是否传送完用户数据;
在所述接收数据触发阶段,为响应所述简单写命令、所述包裹写命令中所述包的用户数据、或所述命令队列中的写入工作,启动所述前端接口中的所述直接存储器访问控制器开始于在线从所述主机端接收用户数据;
在所述接收数据等待阶段,为响应所述简单写命令、所述包裹写命令中所述包的用户数据、或所述命令队列中的所述写入工作,周期性检查所述前端接口中的接收计数器,用于判断所述直接存储器访问控制器是否接收完用户数据;
所述阶段包括回复管理阶段,所述计算机程序被所述处理单元执行时实现以下步骤:
在所述直接存储器访问控制器传送完用户数据后的所述回复管理阶段,为响应所述简单写命令、所述包裹写命令中所述包的用户数据、或所述命令队列中的所述写入工作,驱动所述前端接口将所述数据线中的一条拉低一段时间,用于执行写入操作,并且于所述写入操作完成后,释放所述数据线。
6.如权利要求5所述的主机输出输入命令执行的计算机可读取存储介质,其特征在于,所述简单写命令指示所述装置端写入一个或多个逻辑区块地址的用户数据,所述简单读命令指示所述装置端读取一个或多个逻辑区块地址的用户数据,所述包裹写命令指示所述装置端写入多包的用户数据,所述包裹读命令指示所述装置端读取多包的用户数据,每包包括一个或多个逻辑区块地址的用户数据,所述多包的执行顺序不能改变,所述命令队列包括多个工作,以及每个所述工作指示所述装置端写入或读取一个或多个逻辑区块地址的用户数据。
7.如权利要求5所述的主机输出输入命令执行的计算机可读取存储介质,其特征在于,所述阶段包括写入路径及读取路径,所述写入路径用于响应主机写命令而从所述主机端接收即将写入所述存储单元的用户数据,以及所述读取路径用于响应主机读命令而传送从所述存储单元读取的用户数据给所述主机端。
8.一种主机输出输入命令的执行装置,其特征在于,包括:
前端接口,耦接于主机端;以及
处理单元,耦接于所述前端接口,为响应多种类型的主机输出输入命令,使用通用架构的多个阶段来驱动所述前端接口进行与所述主机端间的交互,用于传送从存储单元读取的用户数据给所述主机端,以及从所述主机端接收即将写入所述存储单元的用户数据;
所述主机输出输入命令包括简单写命令、简单读命令、包裹写命令、包裹读命令及命令队列,
所述阶段包括设定就绪阶段,所述处理单元于所述设定就绪阶段中,为所述命令队列设定所述前端接口中的队列状态寄存器的比特,代表所述命令队列中的相应工作已经就绪;以及于所述设定就绪阶段中,不为所述简单写命令、所述简单读命令、所述包裹写命令及所述包裹读命令进行任何所述前端接口的活动;
所述前端接口包括与所述主机端连接的命令线及多条数据线,所述阶段包括准备管理阶段、传送数据触发阶段、传送数据等待阶段、接收数据触发阶段及接收数据等待阶段,所述处理单元于所述准备管理阶段,为响应所述简单写命令、所述简单读命令、所述包裹写或读命令中一包的用户数据、或所述命令队列中的工作,驱动所述前端接口将所述数据线中的一条拉低一段时间,用于执行一连串的准备操作,并且于所述准备操作完成后,释放所述数据线;于所述传送数据触发阶段,为响应所述简单读命令、所述包裹读命令中所述包的用户数据、或所述命令队列中的读取工作,启动所述前端接口中的直接存储器访问控制器开始于在线传送用户数据给所述主机端;于所述传送数据等待阶段,为响应所述简单读命令、所述包裹读命令中所述包的用户数据、或所述命令队列中的所述读取工作,周期性检查所述前端接口中的传送计数器,用于判断所述直接存储器访问控制器是否传送完用户数据;于所述接收数据触发阶段,为响应所述简单写命令、所述包裹写命令中所述包的用户数据、或所述命令队列中的写入工作,启动所述前端接口中的所述直接存储器访问控制器开始于在线从所述主机端接收用户数据;以及于所述接收数据等待阶段,为响应所述简单写命令、所述包裹写命令中所述包的用户数据、或所述命令队列中的所述写入工作,周期性检查所述前端接口中的接收计数器,用于判断所述直接存储器访问控制器是否接收完用户数据;
所述阶段包括回复管理阶段,所述处理单元于所述直接存储器访问控制器传送完用户数据后的所述回复管理阶段,为响应所述简单写命令、所述包裹写命令中所述包的用户数据、或所述命令队列中的所述写入工作,驱动所述前端接口将所述数据线中的一条拉低一段时间,用于执行写入操作,并且于所述写入操作完成后,释放所述数据线。
9.如权利要求8所述的主机输出输入命令的执行装置,其特征在于,所述简单写命令指示所述装置端写入一个或多个逻辑区块地址的用户数据,所述简单读命令指示所述装置端读取一个或多个逻辑区块地址的用户数据,所述包裹写命令指示所述装置端写入多包的用户数据,每包的用户数据关联于一个或多个逻辑区块地址,所述包裹写命令或所述包裹读命令中的所述多包的执行顺序不能改变,所述命令队列包括多个工作,以及每个所述工作指示所述装置端写入或读取一个或多个逻辑区块地址的用户数据。
CN201910984087.3A 2019-07-10 2019-10-16 主机输出输入命令的执行装置及方法及存储介质 Active CN112214157B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/854,652 US11086805B2 (en) 2019-07-10 2020-04-21 Apparatus and method and computer program product for executing host input-output commands
US17/360,720 US11977500B2 (en) 2019-07-10 2021-06-28 Apparatus and method and computer program product for executing host input-output commands

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962872372P 2019-07-10 2019-07-10
US62/872,372 2019-07-10

Publications (2)

Publication Number Publication Date
CN112214157A CN112214157A (zh) 2021-01-12
CN112214157B true CN112214157B (zh) 2023-11-03

Family

ID=74047273

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201910984087.3A Active CN112214157B (zh) 2019-07-10 2019-10-16 主机输出输入命令的执行装置及方法及存储介质
CN201910984351.3A Active CN112214158B (zh) 2019-07-10 2019-10-16 主机输出输入命令的执行装置及方法及计算机可读取存储介质
CN201910984259.7A Active CN112214240B (zh) 2019-07-10 2019-10-16 主机输出输入命令的执行装置及方法及计算机可读取存储介质

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201910984351.3A Active CN112214158B (zh) 2019-07-10 2019-10-16 主机输出输入命令的执行装置及方法及计算机可读取存储介质
CN201910984259.7A Active CN112214240B (zh) 2019-07-10 2019-10-16 主机输出输入命令的执行装置及方法及计算机可读取存储介质

Country Status (3)

Country Link
US (4) US10936513B2 (zh)
CN (3) CN112214157B (zh)
TW (3) TWI715248B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI715248B (zh) * 2019-07-10 2021-01-01 慧榮科技股份有限公司 主機輸出入命令的執行裝置及方法及電腦程式產品
US11429545B2 (en) 2020-07-16 2022-08-30 Silicon Motion, Inc. Method and apparatus for data reads in host performance acceleration mode
US20230102680A1 (en) * 2021-09-30 2023-03-30 Advanced Micro Devices, Inc. Stacked command queue
KR20230058230A (ko) * 2021-10-22 2023-05-03 삼성전자주식회사 스토리지 장치 및 그 동작 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102568556A (zh) * 2010-12-28 2012-07-11 海力士半导体有限公司 包括模式寄存器组的半导体存储器件及其操作方法
CN108572791A (zh) * 2017-03-07 2018-09-25 慧荣科技股份有限公司 数据储存装置及其数据维护方法
CN109101185A (zh) * 2017-06-20 2018-12-28 北京忆恒创源科技有限公司 固态存储设备及其写命令和读命令处理方法
CN109582491A (zh) * 2017-09-28 2019-04-05 北京忆芯科技有限公司 基于机器学习的读出数据错误处理
CN109783474A (zh) * 2019-01-08 2019-05-21 北京工业大学 虚拟可信根实例及其自身状态数据的安全迁移方法
CN109918023A (zh) * 2019-02-22 2019-06-21 深圳忆联信息系统有限公司 基于内存受限ssd的预读取方法、装置和计算机设备

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4694391A (en) * 1980-11-24 1987-09-15 Texas Instruments Incorporated Compressed control decoder for microprocessor system
US4430707A (en) * 1981-03-05 1984-02-07 Burroughs Corporation Microprogrammed digital data processing system employing multi-phase subroutine control for concurrently executing tasks
US5247654A (en) * 1989-05-19 1993-09-21 Compaq Computer Corporation Minimum reset time hold circuit for delaying the completion of a second and complementary operation
US5148535A (en) * 1989-08-31 1992-09-15 Tandy Corporation Non-bus request refresh system for shortening refresh timing
EP0685803B1 (en) * 1994-06-03 2001-04-18 Hyundai Electronics America Method of producing an electrical device adapter
DE69924475T2 (de) * 1999-06-09 2006-02-16 Texas Instruments Inc., Dallas Multikanal-DMA mit Datenverkehrplanung auf die Ausgänge
US7676640B2 (en) 2000-01-06 2010-03-09 Super Talent Electronics, Inc. Flash memory controller controlling various flash memory cells
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US6871341B1 (en) * 2000-03-24 2005-03-22 Intel Corporation Adaptive scheduling of function cells in dynamic reconfigurable logic
US6584513B1 (en) * 2000-03-31 2003-06-24 Emc Corporation Direct memory access (DMA) transmitter
US7032228B1 (en) * 2001-03-01 2006-04-18 Emc Corporation Common device interface
EP1303097A3 (en) * 2001-10-16 2005-11-30 Microsoft Corporation Virtual distributed security system
US8176238B2 (en) * 2003-12-02 2012-05-08 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US7380067B2 (en) * 2004-07-19 2008-05-27 Infortrend Technology, Inc. IO-stream adaptive write caching policy adjustment
TW200622634A (en) * 2004-12-31 2006-07-01 Inventec Appliances Corp System for processing data in NAND flash memory and method thereof
CN100396065C (zh) * 2005-01-14 2008-06-18 清华大学 一种iSCSI存储系统的实现方法
JP2007115293A (ja) * 2005-10-17 2007-05-10 Toshiba Corp 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法
JP2007207328A (ja) * 2006-01-31 2007-08-16 Toshiba Corp 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法
US7500023B2 (en) * 2006-10-10 2009-03-03 International Business Machines Corporation Facilitating input/output processing by using transport control words to reduce input/output communications
EP1936907A1 (en) * 2006-12-12 2008-06-25 The Sporting Exchange Ltd. Transaction processing system
US20080154950A1 (en) * 2006-12-21 2008-06-26 Sap Ag Object constructors for generic frameworks
US8095847B2 (en) * 2008-02-14 2012-01-10 International Business Machines Corporation Exception condition handling at a channel subsystem in an I/O processing system
US20100281224A1 (en) 2009-05-01 2010-11-04 International Buisness Machines Corporation Prefetching content from incoming messages
US8510494B2 (en) * 2009-12-24 2013-08-13 St-Ericsson Sa USB 3.0 support in mobile platform with USB 2.0 interface
US8782336B2 (en) * 2010-05-11 2014-07-15 Marvell World Trade Ltd. Hybrid storage system with control module embedded solid-state memory
KR101694804B1 (ko) * 2010-08-16 2017-01-11 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US8660989B2 (en) * 2010-08-27 2014-02-25 Sap Ag Generic framework for application specific data exchange
US9465728B2 (en) * 2010-11-03 2016-10-11 Nvidia Corporation Memory controller adaptable to multiple memory devices
WO2012109677A2 (en) * 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
US8984182B2 (en) * 2011-10-06 2015-03-17 Marvell International Ltd. SCSI I/O command aggregation
US9071364B1 (en) * 2011-10-18 2015-06-30 Clariphy Communications, Inc. Coherent optical transceiver with programmable application modes
TWI526838B (zh) * 2013-02-27 2016-03-21 東芝股份有限公司 記憶體裝置
US10372551B2 (en) * 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
CN104102600B (zh) * 2013-04-03 2018-01-12 慧荣科技股份有限公司 存储器控制器
US9329931B2 (en) * 2013-07-24 2016-05-03 Seagate Technology Llc Solid state drive emergency pre-boot application providing expanded data recovery function
US9418168B2 (en) * 2013-10-29 2016-08-16 Sap Se Providing cloud-based, generic OData mashup services using an on-demand service
KR102111741B1 (ko) * 2014-01-10 2020-05-15 삼성전자주식회사 임베디드 멀티미디어 카드 및 이의 동작 방법
US9678787B2 (en) * 2014-05-23 2017-06-13 Microsoft Technology Licensing, Llc Framework for authoring data loaders and data savers
TWI512609B (zh) * 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置
US9251891B1 (en) * 2014-11-11 2016-02-02 Sandisk Technologies Inc. Devices and methods to conditionally send parameter values to non-volatile memory
US10114789B2 (en) * 2015-01-08 2018-10-30 Samsung Electronics Co., Ltd. System on chip for packetizing multiple bytes and data processing system including the same
KR102398213B1 (ko) * 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
KR20160118602A (ko) * 2015-04-02 2016-10-12 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 장치들
JP6398102B2 (ja) 2015-05-29 2018-10-03 東芝メモリ株式会社 メモリシステム
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US10318193B2 (en) * 2015-09-14 2019-06-11 Sandisk Technologies Llc Systems and methods of command authorization
TWI584127B (zh) * 2015-12-28 2017-05-21 慧榮科技股份有限公司 電子裝置
US9934173B1 (en) * 2016-02-24 2018-04-03 Xilinx, Inc. Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric
KR102229013B1 (ko) * 2016-09-02 2021-03-17 삼성전자주식회사 자동 스트림 검출 및 할당 알고리즘
CN108932106B (zh) * 2017-05-26 2021-07-02 上海宝存信息科技有限公司 固态硬盘访问方法以及使用该方法的装置
US11860812B2 (en) * 2017-08-22 2024-01-02 Intel Corporation Serdes link training
CN109542335B (zh) * 2017-09-22 2022-04-01 慧荣科技股份有限公司 快闪存储器的数据内部搬移方法以及使用该方法的装置
TWI670595B (zh) * 2017-09-26 2019-09-01 慧榮科技股份有限公司 主動錯誤更正失敗處理方法
US10318179B1 (en) * 2017-12-27 2019-06-11 Nxp B.V. Host device to embedded multi-media card device communication
US11184170B2 (en) * 2019-06-28 2021-11-23 Micron Technology, Inc. Public key protection techniques
TWI715248B (zh) * 2019-07-10 2021-01-01 慧榮科技股份有限公司 主機輸出入命令的執行裝置及方法及電腦程式產品
US11689648B2 (en) * 2021-03-11 2023-06-27 Xilinx, Inc. Network interface device
US20230063417A1 (en) * 2021-08-24 2023-03-02 Idmelon Technologies Inc. System and method for forwarding authentication requests to a nearby authenticator

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102568556A (zh) * 2010-12-28 2012-07-11 海力士半导体有限公司 包括模式寄存器组的半导体存储器件及其操作方法
CN108572791A (zh) * 2017-03-07 2018-09-25 慧荣科技股份有限公司 数据储存装置及其数据维护方法
CN109101185A (zh) * 2017-06-20 2018-12-28 北京忆恒创源科技有限公司 固态存储设备及其写命令和读命令处理方法
CN109582491A (zh) * 2017-09-28 2019-04-05 北京忆芯科技有限公司 基于机器学习的读出数据错误处理
CN109783474A (zh) * 2019-01-08 2019-05-21 北京工业大学 虚拟可信根实例及其自身状态数据的安全迁移方法
CN109918023A (zh) * 2019-02-22 2019-06-21 深圳忆联信息系统有限公司 基于内存受限ssd的预读取方法、装置和计算机设备

Also Published As

Publication number Publication date
US11086805B2 (en) 2021-08-10
US20210011861A1 (en) 2021-01-14
US20210011723A1 (en) 2021-01-14
TW202102975A (zh) 2021-01-16
US20210326278A1 (en) 2021-10-21
CN112214240B (zh) 2024-05-31
US20210011862A1 (en) 2021-01-14
CN112214240A (zh) 2021-01-12
CN112214158B (zh) 2024-03-22
TWI730454B (zh) 2021-06-11
US10936513B2 (en) 2021-03-02
TW202102976A (zh) 2021-01-16
CN112214157A (zh) 2021-01-12
TW202102974A (zh) 2021-01-16
US11308007B2 (en) 2022-04-19
TWI734220B (zh) 2021-07-21
TWI715248B (zh) 2021-01-01
US11977500B2 (en) 2024-05-07
CN112214158A (zh) 2021-01-12

Similar Documents

Publication Publication Date Title
CN112214157B (zh) 主机输出输入命令的执行装置及方法及存储介质
CN107430493B (zh) 顺序写入流管理
US9395921B2 (en) Writing data using DMA by specifying a buffer address and a flash memory address
EP2849076B1 (en) Dma transmission method and system
CN108153482B (zh) Io命令处理方法与介质接口控制器
US20220350758A1 (en) Method and apparatus for data reads in host performance acceleration mode
WO2015176664A1 (zh) 一种数据操作的方法、设备和系统
TW202101227A (zh) 閃存實體資源集合管理裝置及方法以及電腦程式產品
CN113760185A (zh) 内存块回收方法和装置
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
CN108877862B (zh) 页条带的数据组织以及向页条带写入数据的方法与装置
US9971549B2 (en) Method of operating a memory device
CN113641597A (zh) 管理数据存储的方法及装置以及计算机可读取存储介质
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers
TWI835027B (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
US20230315622A1 (en) Method and non-transitory computer-readable storage medium and apparatus for data access in response to host discard commands
CN116149540A (zh) 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置
KR20230063857A (ko) 스토리지 장치 및 전자 장치
CN118193053A (zh) NVMe命令处理的方法及其相关产品
TW202340939A (zh) 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置
CN115599718A (zh) 一种dma传输的方法及控制部件

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