CN116841838A - 非易失性存储器存储装置仿真平台 - Google Patents

非易失性存储器存储装置仿真平台 Download PDF

Info

Publication number
CN116841838A
CN116841838A CN202211001184.4A CN202211001184A CN116841838A CN 116841838 A CN116841838 A CN 116841838A CN 202211001184 A CN202211001184 A CN 202211001184A CN 116841838 A CN116841838 A CN 116841838A
Authority
CN
China
Prior art keywords
simulation
message
memory
emulation
kernel engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211001184.4A
Other languages
English (en)
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.)
SK Hynix Inc
Original Assignee
SK Hynix 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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN116841838A publication Critical patent/CN116841838A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems

Abstract

一种用于仿真存储装置的系统和相关方法。在该系统和方法中,提供一组仿真实体(SE),该组SE包括主机SE和与待仿真的存储装置的硬件和软件组件相对应的存储组件SE的一组仿真实体(SE),从该组SE中选择SE,确定所选择的SE之间的逻辑关系,在所选择的SE之间传播顺序消息并且将顺序消息传播到仿真内核引擎,并且使用所选择的SE执行仿真,其中该顺序消息确定仿真条件是否完整。

Description

非易失性存储器存储装置仿真平台
技术领域
本公开的实施例涉及一种用于存储装置仿真的平台。
背景技术
计算机环境范例已经转变为可以随时随地使用的普适计算系统。因此,诸如移动电话、数码相机和笔记本计算机的便携式电子装置的使用已迅速增加。这些便携式电子装置通常使用具有存储器装置即数据存储装置的存储器系统。数据存储装置用作便携式电子装置的主存储器装置或辅助存储器装置。
由于存储器装置没有移动部件,因此使用存储器装置的存储器系统具有优异的稳定性和耐久性、高信息访问速度和低功耗。具有这些优点的存储器系统的示例包括通用串行总线(USB)存储器装置、具有各种接口的诸如通用闪存(UFS)的存储卡以及固态驱动器(SSD)。可以使用包括仿真的各种测试工具来测试存储器系统。
发明内容
本发明的一方面,提供一种仿真系统,该仿真系统包括:一组仿真实体(SE),包括主机SE以及与待仿真的存储装置的硬件和软件组件相对应的存储组件SE;关系管理器处理器,被配置为确定从该组SE中选择的SE之间的逻辑关系;以及仿真内核引擎,被配置为使用所选择的SE执行仿真。顺序消息在所选择的SE之间传播,并且传播到仿真内核引擎,顺序消息确定仿真条件是否完整。
在本发明的另一方面,提供一种仿真存储装置的方法。该方法提供包括主机SE和与待仿真的存储装置的硬件和软件组件相对应的存储组件SE的一组仿真实体(SE),从该组SE中选择SE,确定所选择的SE之间的逻辑关系,在所选择的SE之间传播顺序消息并且将顺序消息传播到仿真内核引擎,并且使用所选择的SE执行仿真,其中顺序消息确定仿真条件是否完整。
根据下列描述,本发明的其他方面将变得显而易见。
附图说明
图1是示出根据本发明的一个实施例的可选地与存储器系统通信的仿真系统的框图。
图2是示出根据本发明的另一实施例的存储器装置的存储块的电路图。
图3是示出根据本发明的一个实施例的存储器装置的不同类型的单元的状态分布的示图。
图4是示出根据本发明的另一实施例的独立仿真平台的示图。
图5是根据本发明的又一实施例的序列图。
图6是描述仿真内核主循环(loop)的示图。
图7A是示出根据本发明的又一实施例的显示不同仿真实体的逻辑关系的图表的构建的示图。
图7B是示出针对特定仿真修改的另一图表的示图。
图8是时序图图解。
图9是示出根据本发明的另一实施例的仿真操作的示图。
具体实施方式
下面参照相应附图更详细地描述本发明的多种实施例。然而,本发明可以以不同的形式实施,因此不应解释为限于本文阐述的实施例。相反,提供这些实施例使得本公开将本发明的范围传达给本领域技术人员。此外,本文中对“实施例”、“另一实施例”等的引用不一定仅针对一个实施例,并且对任何这种短语的不同引用不一定针对相同的实施例。术语“实施例”在本文中使用时不一定指所有实施例。在整个本公开中,在本发明的附图和实施例中相同的附图标记指代相同的部分。
本发明可以以多种方式实施,包括作为过程;设备;系统;实现在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如适于运行存储在联接到该处理器的存储器上的和/或由联接到该处理器的存储器提供的指令的处理器。在本说明书中,这些实施方案或本发明可以采用的任何其他形式可以称为技术。通常,可以在本发明的范围内改变所公开的过程的操作顺序。除非另有说明,否则描述为适于执行任务的诸如处理器或存储器的组件可以被实施为被配置为或另外被编程为在给定时间执行任务的通用装置或电路组件或被制造以执行该任务的特定装置或电路组件。在本文中使用时,术语“处理器”等是指适于处理诸如计算机程序指令的数据的一个或多个装置、电路和/或处理内核。
本文中描述的方法、过程和/或操作可以由代码或指令执行,该代码或指令待由计算机、处理器、控制器或其他信号处理装置运行。该计算机、处理器、控制器或其他信号处理装置可以是本文中描述的计算机、处理器、控制器或其他信号处理装置或者是除本文中描述的元件之外的元件。因为在本文中描述了构成方法(或计算机、处理器、控制器或其他信号处理装置的操作)的基础的算法,所以用于实施方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其他信号处理装置转换为用于执行本文中的方法的专用处理器。
当以软件实施时,图中所示(除非另有表示)的存储器(或其他存储装置)、控制器、处理器、装置、模块、单元、复用器、生成器、逻辑电路、接口、解码器、驱动器、发生器和其他信号生成器和信号处理器包括仿真那些组件的活动和行为的仿真实体SE(即,软件代码)。由于本发明涉及软件仿真,因此尽管(在一个实施例中)用于仿真的输入参数可以由实际的硬件装置提供,也不需要实际的硬件。因此,附图中描绘的系统组件是指用于仿真的程序代码部分。例如,为了估计固态驱动器SSD的性能,可以创建SSD的特定组件产品部件(存储器、CPU、固件、主机控制器甚至操作系统)的基于软件的模型。此类模型仿真指定部件的活动。也就是说,在本发明的一个实施例中,模型研究参数变化对仿真组件的特性/度量(例如性能或功耗)的影响。对于更详细的仿真,组件可以由更多的SE表示,以更准确地仿真这些过程。软件模型不需要实际(物理)装置来操作。
下面提供本发明的实施例的详细描述以及示出本发明的方面的附图。结合这些实施例描述本发明,但是本发明不限于任何具体实施例。本发明包含许多替代、修改和等效方案。在下列描述中阐述许多具体细节,以提供对本发明的透彻理解。出于举例的目的提供这些细节;可以在没有这些具体细节中的一些或全部的情况下根据权利要求书来实践本发明。为了清楚起见,未详细描述与本发明相关的技术领域中已知的技术材料,以免不必要地模糊本发明。
例如基于NAND闪存(例如,SSD)的非易失性存储器存储装置是硬件(HW)和固件(FW)相互作用的复杂系统。最终的存储装置特性(例如,性能(延迟和吞吐量)、可靠性等)取决于设计的HW组件、实施的FW算法及它们的参数。考虑到客户需求和目标工作负载的变化,存储装置调试正在成为产品开发过程中的重要部分。
对实际存储装置的调试给开发过程增加了相当大的时间开销并且分配了许多资源,尤其是在驱动器寿命终止的情况下。减少这种开销的可能解决方案之一是使用存储装置的仿真模型,例如进行假设分析、调试、瓶颈搜索和算法验证。理论上,仿真应该减少“调试”存储装置原型所需的时间,并且可以为预测存储装置特性以及验证FW算法和原型更改提供划算的解决方案。
由于HW和FW层都是存储装置特性的促成因素,因此在本发明的一个实施例中,HW和FW组件不仅可以在产品开发设计的早期阶段进行仿真,而且可以在产品设计的后期阶段进行仿真,以找到FW算法的弱点和改进,甚至HW和FW组件可以与实际产品的测量值一起使用,以调试仿真设置和/或发现可能的性能问题,尤其是在产品开发期间。
硬件和固件组件
图1是示出根据本发明的一个实施例的仿真平台15的框图。参照图1,仿真平台15(可选但非必须)与存储器系统10的组件通信,如从仿真平台15向各个装置组件延伸的虚线所示。另外,仿真平台15可以是如图4所示的单独的独立软件平台,它可以对图1所示的装置的性能进行建模。
通常,仿真平台15利用计算机程序提供计算机仿真,该计算机程序对物理系统(例如,存储装置)随时间的行为进行建模。例如,本发明的一个实施例中的仿真可以随时间推移对读取阈值电压进行建模,或者可以对存储器系统10需要多长时间进行垃圾收集进行建模。程序变量(状态变量)表示仿真开始时物理系统的当前或初始状态。例如,本发明的一个实施例中的仿真可以具有表示可用于读取和写入数据的存储块或缓冲器的数量的程序变量。仿真程序通常修改状态变量以预测物理系统随时间的演变。在本发明的一个实施例中,仿真SE是表示感兴趣的对象的功能的数学算法的程序代码,该代码由内核仿真器执行。下面详述本发明中使用的各种仿真实体。仿真实体的属性(例如,存储器的大小或存储器的类型)可以包括在SE的模型定义中。可以仿真一个或多个SE的活动。
仿真平台15有若干属性。在仿真的执行中,仿真优选地比对真实半导体存储器系统执行的实际操作更快且更简单。关于可扩展性,在不影响其余仿真组件的情况下,优选地可以添加/移除或用其他版本替换任何仿真硬件/固件组件。在这方面,SE相互独立,允许SE相互交互。这种可扩展性允许仿真平台15支持不同的产品并且准确地测试不同版本的FW算法。关于可配置性,任何仿真HW/FW组件参数的值在运行仿真之前都是可更改的。这种可配置性允许存储驱动器针对特定要求进行调试。
本发明的实现是基于认识到现有的如MQSim和Amber的仿真器基于对整体的仿真(或基于用于特定目的的非常详细的仿真)并且过于详细或过于简单而无法满足上述偏好,并且因此适用性有限,特别是针对基于产品开发需求的度量估计。
在以下描述中,将详细描述用作基于软件的引擎的仿真平台15的属性和活动,用于对半导体存储器系统中的组件的动作进行仿真。这些属性和活动反映了真实装置(诸如仿真中涉及的存储器系统10)的仿真实体SE的属性和活动。由于仿真实体对与特定组件的行为相关的性能进行仿真,因此下文提供了对存储器系统10(及其构成组件)的功能的描述,并理解到SE(在本发明的一个实施例中)评估影响(或可能影响)那些组件的性能特性的过程。
作为存储器系统SE的存储器系统10可以利用诸如固态驱动器(SSD)和存储卡的各种类型的存储装置中的任意一种来实施。在多种实施例中,在存储器系统10的仿真中,存储器系统10可以是诸如以下的电子装置中的各种组件中的一种:计算机、超移动个人计算机(PC)(UMPC)、工作站、上网本计算机、个人数字助理(PDA)、便携式计算机、网络平板PC、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(PMP)、便携式游戏装置、导航装置、黑盒、数码相机、数字多媒体广播(DMB)播放器、3维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心的存储装置、能够在无线环境中接收和发送信息的装置、射频识别(RFID)装置以及家庭网络的各种电子装置之一、计算机网络的各种电子装置之一、远程信息处理网络的电子装置之一和/或计算系统的各种组件之一。
在存储器系统10的仿真中,存储器系统10可以包括被仿真的存储器控制器100和被仿真的半导体存储器装置200。存储器控制器100可以控制半导体存储器装置200的全部操作。
在仿真中,半导体存储器装置200可以在存储器控制器100的控制下执行一个或多个擦除操作、编程操作和读取操作。半导体存储器装置200可以通过输入/输出线来接收命令CMD、地址ADDR和数据DATA。半导体存储器装置200可以通过电力线接收电力PWR,并且通过控制线接收控制信号CTRL。根据存储器系统10的设计和配置,控制信号CTRL可以包括例如命令锁存使能信号、地址锁存使能信号、芯片使能信号、写入使能信号、读取使能信号以及其他操作信号。在仿真中,存储器控制器100和半导体存储器装置200可以是诸如固态驱动器(SSD)的单个半导体装置。SSD可以包括用于在其中存储数据的存储装置。当半导体存储器系统10用于SSD中或被建模为SSD时,可以提高联接到存储器系统10的主机装置(例如,图1的主机)的操作速度。
仿真中的存储器控制器100和半导体存储器装置200可以是诸如存储卡的单个半导体器装置。例如,存储器控制器100和半导体存储器装置200可以是个人计算机存储卡国际协会(PCMCIA)的个人计算机(PC)卡、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒、多媒体卡(MMC)、尺寸减小的多媒体卡(RS-MMC)、微型尺寸版本的MMC(微型MMC)、安全数字(SD)卡、迷你安全数字(迷你SD)卡、微型安全数字(微型SD)卡、安全数字大容量(SDHC)和/或通用闪存(UFS)。
返回参照图1,在仿真中,存储器装置200可以存储待由主机装置访问的数据。存储器装置200可以是诸如动态随机存取存储器(DRAM)和/或静态随机存取存储器(SRAM)的易失性存储器装置,或者诸如只读存储器(ROM)、掩膜ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电随机存取存储器(FRAM)、相变RAM(PRAM)、磁阻RAM(MRAM)和/或电阻式RAM(RRAM)的非易失性存储器装置。
仿真中的控制器100可以控制数据在存储器装置200中的存储。例如,控制器100可以响应于来自主机装置的请求,控制存储器装置200。控制器100可以向主机装置提供从存储器装置200读取的数据,并且可以将主机装置提供的数据存储到存储器装置200中。
仿真中的控制器100可以包括通过总线160联接的存储器件110、可以被实施为诸如中央处理单元(CPU)的处理器的控制组件120、错误校正码(ECC)组件130、主机接口(I/F)140和存储器接口(I/F)150。
仿真中的存储器件110可以用作存储器系统10和控制器100的工作存储器,并且存储器件110可以存储用于驱动存储器系统10和控制器100的数据。当控制器100控制存储器装置200的操作时,存储器件110可以存储控制器100和存储器装置200使用的、用于诸如读取操作、写入操作、编程操作和擦除操作的这些操作的数据。
仿真中的存储器件110可以是诸如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)的易失性存储器。如上所述,存储器件110可以将主机装置使用的数据存储在存储器装置200中,用于读取操作和写入操作。为了存储数据,存储器件110可以包括程序存储器、数据存储器、写入缓冲器、读取缓冲器、映射缓冲器等。
仿真中的控制组件120可以控制存储器系统10的一般操作,并且响应于来自主机装置的写入请求或读取请求,控制针对存储器装置200的写入操作或读取操作。控制组件120可以驱动可以称为闪存转换层(FTL)的固件或其他程序指令,以控制存储器系统10的操作。例如,FTL可以执行诸如逻辑到物理(L2P)映射、损耗均衡、垃圾收集和/或坏块处理的操作。L2P映射称为逻辑块寻址(LBA)。
仿真中的ECC组件130可以在读取操作期间检测并且校正从存储器装置200读取的数据中的错误。在一个实施例中,当错误位的数量大于或等于可校正错误位的阈值数量时,ECC组件130可能不会校正错误位,而是会输出指示校正错误位失败的错误校正失败信号。
仿真中的ECC组件130可以基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)码、turbo码、涡轮乘积码(TPC)、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归系统码(RSC),网格编码调制(TCM)或分组编码调制(BCM)。然而,错误校正不限于这些技术。如此,ECC组件130可以包括适于错误校正操作的任何和所有电路、系统或装置。
仿真中的主机接口140可以通过诸如以下的各种接口标准或接口中的一种或多种与主机装置通信:通用串行总线(USB)、多媒体卡(MMC)、高速外围组件互连(PCI-e或PCIe)、小型计算机系统接口(SCSI)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强型小型磁盘接口(ESDI)和电子集成驱动器(IDE)。
仿真中的存储器接口150可以在控制器100和存储器装置200之间提供接口,以允许控制器100响应于来自主机装置的请求来控制存储器装置200。存储器接口150可以生成针对存储器装置200的控制信号并且在控制组件120的控制下处理数据。在一个实施例中,其中存储器装置200是诸如NAND闪速存储器的闪速存储器,存储器接口150可以生成针对存储器的控制信号并且在控制组件120的控制下处理数据。
如图2所示的存储器装置200在仿真中可以包括存储器单元阵列210、控制电路220、电压生成电路230、行解码器240、可以是页面缓冲器阵列形式的页面缓冲器阵列250、列解码器260以及输入和输出(输入/输出)电路270。存储器单元阵列210可以包括可以存储数据的多个存储块211。电压生成电路230、行解码器240、页面缓冲器阵列250、列解码器260和输入/输出电路270可以形成存储器单元阵列210的外围电路。外围电路可以对存储器单元阵列210执行编程操作、读取操作或擦除操作。控制电路220可以控制外围电路。
仿真中的电压生成电路230可以生成各种电平的操作电压。例如,在擦除操作中,电压生成电路230可以生成诸如擦除电压和通过电压的各种电平的操作电压。
仿真中的行解码器240可以与电压生成电路230以及多个存储块211电连通。行解码器240可以响应于由控制电路220生成的行地址在多个存储块211之中选择至少一个存储块,并且将电压生成电路230供应的操作电压传输到所选择的存储块。
仿真中的页面缓冲器阵列250可以通过位线BL(图3所示)与存储器单元阵列210联接。页面缓冲器阵列250可以响应于控制电路220生成的页面缓冲器控制信号,利用正电压对位线BL进行预充电,在编程操作和读取操作中将数据传输到所选择的存储块和从所选择的存储块接收数据,或者临时存储所传输的数据。
仿真中的列解码器260可以将数据传输到页面缓冲器250和从页面缓冲器250接收数据,或者可以将数据传输到输入/输出电路270和从输入/输出电路270接收数据。
仿真中的输入/输出电路270可以将从外部装置(例如,图1的存储器控制器100)接收的命令和地址传输到控制电路220,将数据从外部装置传输到列解码器260,或者通过输入/输出电路270来将数据从列解码器260输出到外部装置。
仿真中的控制电路220可以响应于命令和地址来控制外围电路。
图2是示出根据本发明的另一实施例的半导体存储器装置的存储块的电路图。例如,图2的存储块可以是图1所示的存储器单元阵列210中的存储块211中的任何一个。
参照图2,仿真中的存储块211可以包括联接到行解码器240的多条字线WL0至WLn-1、漏极选择线DSL和源极选择线SSL。这些线可以并行布置,其中多条字线布置在DSL和SSL之间。
仿真中的存储块211可以进一步包括分别联接到位线BL0至BLm-1的多个单元串221。每列单元串可以包括一个或多个漏极选择晶体管DST和一个或多个源极选择晶体管SST。在所示的实施例中,每个单元串具有一个DST和一个SST。在单元串中,多个存储器单元或存储器单元晶体管MC0至MCn-1可以串联在选择晶体管DST和SST之间。存储器单元中的每一个可以形成为多层单元。例如,存储器单元中的每一个可以形成为存储1位数据的单层单元(SLC)。存储器单元中的每一个可以形成为存储2位数据的多层单元(MLC)。存储器单元中的每一个可以形成为存储3位数据的三层单元(TLC)。存储器单元中的每一个可以形成为存储4位数据的四层单元(QLC)。
仿真中的每个单元串中的SST的源极可以联接到公共源极线CSL,并且每个DST的漏极可以联接到相应的位线。单元串中的SST的栅极可以联接到SSL,并且单元串中的DST的栅极可以联接到DSL。单元串上的存储器单元的栅极可以联接到相应的字线。也就是说,存储器单元MC0的栅极联接到相应的字线WL0,存储器单元MC1的栅极联接到相应的字线WL1,等等。联接到特定字线的存储器单元组可以称为物理页面。因此,存储块211中的物理页面的数量可以对应于字线的数量。
仿真中的页面缓冲器阵列250可以包括联接到位线BL0至BLm-1的多个页面缓冲器251。页面缓冲器251可以响应于页面缓冲器控制信号进行操作。例如,页面缓冲器251可以在读取操作或验证操作期间临时存储通过位线BL0至BLm-1接收的数据或感测位线的电压或电流。
在本发明的多种实施例中,仿真中的存储块211可以是NAND型闪速存储器单元。然而,存储块211不限于这种单元类型,而是可以包括NOR型闪速存储器单元。存储器单元阵列210可以被实施为组合两种或更多种类型的存储器单元的混合闪速存储器,或者控制器嵌入存储器芯片内部的1-NAND闪速存储器。
图3是示出根据本发明的一个实施例的存储器装置的不同类型的单元的状态或编程电压(PV)电平的分布的示图。
参照图3,仿真中的存储器单元中的每一个可以利用特定类型的单元来实施,例如,存储1位数据的单层单元(SLC)、存储2位数据的多层单元(MLC)、存储3位数据的三层单元(TLC)或存储4位数据的四层单元(QLC)。通常,特定存储器装置中的所有存储器单元都是相同类型的,但那不是必需的。
仿真中的SLC可以包括两种状态P0和P1。P0可以指示擦除状态,并且P1可以指示编程状态。由于SLC可以设置为两种不同状态中的一种,因此每个SLC可以根据设定的编码方法对1个位编程或存储1个位。MLC可以包括四种状态P0、P1、P2和P3。在这些状态之中,P0可以指示擦除状态,并且P1至P3可以指示编程状态。由于MLC可以设置为四种不同状态中的一种,因此每个MLC可以根据设定的编码方法来对2个位编程或存储2个位。TLC可以包括八种状态P0至P7。在这些状态之中,P0可以指示擦除状态,并且P1至P7可以指示编程状态。由于TLC可以设置为八种不同状态中的一种,因此每个TLC可以根据设定的编码方法来对3个位编程或存储3个位。QLC可以包括16种状态P0至P15。在这些状态之中,P0可以指示擦除状态,并且P1至P15可以指示编程状态。由于QLC可以设置为16种不同状态中的一种,因此每个QLC可以根据设定的编码方法来对4个位编程或存储4个位。
返回参照图1和图2,仿真中的存储器装置200可以包括多个存储器单元(例如,NAND闪速存储器单元)。如图2所示,存储器单元布置在由行和列构成的阵列中。每行中的单元连接到字线(例如,WL0),而每列中的单元联接到位线(例如,BL0)。这些字线和位线用于读取操作和写入操作。在仿真中的写入操作期间,当字线被断言(assert)时,在位线处提供待写入的数据(“1”或“0”)。在仿真中的读取操作期间,字线再次被断言,然后可以从位线获取每个单元的阈值电压。多个页面可以共享属于(即,联接到)同一字线的存储器单元。当存储器单元利用MLC来实施时,多个页面包括最高有效位(MSB)页面和最低有效位(LSB)页面。当仿真中的存储器单元利用TLC来实施时,多个页面包括MSB页面、中间有效位(CSB)页面和LSB页面。当仿真中的存储器单元利用QLC来实施时,多个页面包括MSB页面、中间最高有效位(CMSB)页面、中间最低有效位(CLSB)页面和LSB页面。例如,可以使用编码方案(例如,格雷编码)对存储器单元进行仿真,以增加诸如SSD的存储器系统10的容量。
仿真平台
在本发明的一个实施例中,关于给定现有存储器的属性在开始仿真时会发生的预测的响应(例如,进行或不进行损耗均衡的存储块的故障时间),仿真平台15可以通过运行仿真来发现FW算法的弱点和改进。在本发明的一个实施例中,仿真平台15提供了根据产品开发的不同阶段的需要仿真组件配置的灵活性,并为测试实际装置提供灵活性。
返回参照图1,如果通过传递关于数据大小和待写入或读取的信息的地址的信息来对请求存储装置(诸如存储器系统10)写入或读取信息的主机进行仿真,则在仿真中,存储装置可以执行内部读取和写入操作以优化存储容量、防止/解决NAND可读性问题、更新逻辑到物理地址映射等。因此,在仿真平台15仿真主机请求操作并为未来的分析收集信息时,仿真平台15可以预测如何优化存储容量、防止/解决解决NAND可读性问题以及更新逻辑到物理地址的映射。
图4是示出根据本发明的另一实施例的仿真平台15的示图。为了提供仿真HW/FW组件之间的SE图表遍历和快速通信(相对于实际硬件和固件组件的通信较快),在本发明的一个实施例中,仿真平台15在存储库52中存储一组SE(在图5中示出为装置1SE、装置2SE、装置3SE、装置4SE),其中每个SE是与特定产品或产品组或/和特定算法修订相关的某些HW或FW组件的算法实现。
在图表遍历中,图表表示由节点及其连接的边组成的非线性数据结构。更具体地,图表是相当于一组对象的结构,其中一些对象对彼此“相关”(例如通过功能依赖)。对象对应于称为顶点(也称为节点或点)的数学抽象,并且相关的顶点对中的每一个称为边。仿真内核组成SE图表并在SE之间分发消息。图表遍历是一种用于在图表中搜索顶点的技术。
仿真平台15还包括仿真内核引擎54,其被编程为:执行仿真,将消息重定向到相应的SE,管理被调用以进行仿真的一系列SE并且计算目标度量(例如,延迟、吞吐量、写入放大指数等)。仿真平台15还包括SE关系管理器处理器56。该工具被编程为构建SE图表(来自被调用以进行仿真的一组SE),该图表根据目标仿真目的和产品显示边缘。
由仿真内核引擎54生成的图表可以被实施为具有由预定义脚本生成的合适格式的文件。该图表提供SE关系以供仿真内核使用。该图表(如果向用户描绘)为用户提供用于显示所选择的SE和SE的功能之间的逻辑关系的可视化工具。仿真平台15还在存储库58中存储一个或多个产品配置文件,其包含用于目标产品仿真的参数及参数值。如果FW已经有配置文件,可以直接使用该文件进行仿真,或者仿真平台15直接从FW代码中自动采集所需参数。
在本发明的一个实施例中,在仿真内核引擎(诸如图4中的仿真内核引擎54)的控制下用作消息驱动系统的仿真中的SE例如根据预定义的工作负载生成消息。由SE实施的预定义的工作负载可以表示建立的工作负载类型,例如随机或顺序数据读取。预定义的工作负载还可以表示不同的数据方向、读取或写入或其具有各种队列深度的组合。例如,像随机读取写入这样的组合的工作负载可以具有70%的写入概率,其中存储块大小为4k,队列深度为32个命令。
在本发明的一个实施例中,表示数据的消息被发送到特定地址。在消息驱动系统中,每个组件可以具有唯一的“地址”,其他组件可以将消息发送到该地址。这些SE组件或接收器中的每一个等待消息并对接收到的消息做出反应。在本发明的一个实施例中,消息驱动的仿真构成SE通过发送消息相互进行交互的仿真。“地址”对应于上述图表的边。这种消息驱动的仿真可以调和孤立模型的冲突要求,促进仿真内核,并高度关联仿真速度的节奏。在本发明的一个实施例中,存储装置控制器的HW和FW被设计为交互的SE组件,并且可以表示为图表。该图表反映了硬件和固件的合作。在本发明的一个实施例中,存储装置被功能化为独立仿真实体(ISE)的图表,其中每个ISE是HW或FW组件的算法实现。在本发明的一个实施例中,SE通过发送对应于图表的边的消息相互交互。例如,在图5中,有两(2)条边SE1-SE2和SE2-SE3。
在本发明的一个实施例中,仿真内核引擎54负责组成SE图表并且在SE之间分发消息。例如,仿真内核可以获得图表。图表可以是文件或其他实体(诸如对象)。仿真内核根据在仿真期间通过在SE之间分发消息而获得的图表,创建SE实体并且管理SE之间的关系。
在本发明的一个实施例中,可以根据创建图表的脚本(即,单独的应用)生成仿真图表,或者可以由用户生成图表。对于特定的仿真(例如对于特定的SSD),可以生成特定的图表作为基础或模板。无论生成如何,都可以对图表进行更改。
作为ISE,在不影响其余仿真实体的情况下,可以添加/删除或利用其他版本替换任何HW/FW仿真实体。由于SE可以相互独立,因此可以灵活地改变图表节点的数量。这种灵活性允许进行或多或少详细的仿真。该消息驱动的属性允许SE相互独立,因为消息发送是与接收SE交互的唯一方式,而无需考虑消息的来源。
在一个实施例中,图4所示的仿真平台15可以用作独立的仿真器。可选地,在另一个实施例中,图4所示的仿真平台15可以用于接受来自实际产品中的真实现有硬件和固件组件的输入。
在真实的存储装置中,任何内部操作(例如,FW代码的执行、NAND操作、访问RAM、HW引擎工作等)都需要时间来执行。存储装置内部操作的持续时间可以从纳秒(用于访问RAM)到毫秒(用于NAND操作)不等。虽然一些操作的持续时间可以是恒定的,但其他操作的持续时间会随时间分布。由于内部操作持续时间的这些相当大的差异,通常不需要针对目标度量仿真所有的驱动硬件/固件组件以获得可接受的精度水平。因此,存储装置组件在耗时标准上是不同的。此类标准由以下类型的SE反映在仿真平台15中:
1.步骤实体(Step Entity)表示耗时的(time-consuming)存储装置组件。步骤实体仿真HW中的各种延迟。步骤实体接受消息并且向仿真内核报告相应的延迟以仿真HW开销。
2.状态实体(State Entity)仿真FW/HW状态机。这种SE会立即进行仿真。状态实体的状态切换指示仿真内核引擎54立即执行仿真而没有仿真开销。状态实体通过向其他状态实体和步骤实体发送消息进行交互。
3.共享资源表示FW/HW算法。这种SE通常不会消耗大量的仿真时间。可以一次仿真所有的共享资源。SE不会消耗大量的仿真时间。共享资源可以在其他SE之间共享,但可能不允许发送或接收消息。关键要求是算法执行的延迟不影响目标度量。
无论SE的类型如何,消息都是SE相互进行交互的优选方式。为了发送新消息,SE通过调用仿真内核引擎54从仿真内核分配消息以将消息发送到另一SE。仿真内核可以具有用于处理消息的应用程序接口(API)。SE可以将仿真API用作函数调用来分配、发送或释放消息。SE在相关操作完成后释放消息,并且如果需要,可以在消息处理后将反馈发送到调用者。SE可以调用仿真内核API来释放消息,这意味着该消息不再属于SE,因为SE已经完成了它被指示进行的操作/仿真。
在本发明的一个实施例中,利用了父子消息关系(parent-child messagerelationship)。仿真内核引擎54通过跟踪所有释放的消息和分配请求,在释放了所有SE的子消息后将父消息放入相应SE的完成队列中。从架构的角度来看,父子关系特征表示存储装置内部发生的进程的因果关系,并且可以被跟踪和/或可视化。因此,在本发明的一个实施例中,存在两种在SE之间发送消息的方式:
-当SE需要了解另一个SE释放的消息以进行相应的动作时,使用父子关系(Parent-Child Relationship,PCR)。
-在消息释放之后SE无事可做时,使用转发(FWD)。这种FWD能力减少了SE调用仿真内核引擎54的次数,从而使仿真性能提高。
假设用户在SE关系管理器处理器56处选择了三个SE,其中只有SE1生成初始消息并且需要关于消息完成的反馈,SE2进行一些动作并且进一步转发传入的消息,SE3进行一些动作并且释放传入的消息。SE1使用父子关系发送消息,因此在释放子信息时仿真内核调用SE1。由于SE2使用消息转发,因此仿真内核无需在消息释放时调用SE2。
图5是根据本发明的又一实施例的序列图。序列图显示父子进程中的消息进程,其中初始消息或父消息M1(例如,将数据从主机写入存储器)生成被发送到第二SE的第二消息M2(例如,请求确认存储块是可用的)。父子关系减少了处理SE通信的时间。第二SE采取行动并且将M2向前转发到第三SE。如图5所示,在这个事件序列中的某个点,没有子消息处于活跃状态,并且在没有子消息处于活跃状态时,调用仿真内核(仿真内核引擎54)以基于一组SE开始仿真并且消息M1被处理。
例如,让消息A具有两个命名为B1和B2的子消息(这意味着为了完成消息动作,必须完成动作B1和B2)。动作B1是活跃的,直到SE获得动作B1完成的消息。一旦动作B1完成,消息B1就会被释放。一旦消息B1被释放,它就不再活跃了。消息B2遵循相同的进程。一旦所有动作完成(即B1和B2被释放),消息A动作就完成,并且拥有或发起消息A的SE组件知道与A相关的所有活动都已完成。
在另一个示例中,如果消息M1是将数据从主机写入PRODUCT_A的指令,则一旦选择了图7A中的SE图表上示出的五个SE,它们的属性被传递给仿真内核引擎54,则图5中的消息M2将被释放,这意味着动作(这里在这种情况下是仿真将数据写入与消息M2相关联的PRODUCT_A)完成,并且SE可以执行其他动作。
图6是描述仿真内核主循环的示图。为了提高仿真性能,仿真内核引擎54可以(在其主循环迭代上)仅在需要的情况下使用SE,例如,对于存在SE的传入/完成的消息或者由步骤实体定义的超时过期。如图6所示在主循环中,仿真内核引擎54可以通过从存储库52中选择适当的SE来调用已接收到新消息的用于仿真的实体。在主循环中,分支点702确定所调用的仿真实体是步骤实体还是状态实体(如上文详述)。如果仿真实体是步骤实体,则仿真内核引擎54命令延迟请求。如果仿真实体是状态实体,则仿真内核引擎54将消息传递给其他状态实体以用于需要仿真的动作。在主循环中的分支704,仿真内核引擎54确定是否有任何实体有新消息。在有新消息的情况下,仿真内核引擎54返回到主循环的顶部以调用新实体进行仿真。在没有新消息的情况下,仿真内核引擎54继续增加仿真时间,并且如果超时过期,则可以调用步骤实体。
仿真内核引擎54可以没有内部仿真时间片(time slice)。相反,仿真时间通常由步骤实体本身确定。仿真内核引擎54获得仿真循环上的步骤实体请求的最小延迟。这种策略使得在SE之间切换的成本最小化并简化了并行过程的仿真。
在本发明的一个实施例中,当仿真过程时,SE同步仿真步骤以便知道何时采取后续动作。软件仿真实际上可以使用不同的真实时间片(由SE确定)来提示和提醒何时发生后续动作,而不必与物理时钟确定的时间表相关联。换言之,SE确定仿真时间表。
图7A是示出根据本发明的又一实施例的示出不同仿真实体的逻辑关系的图表的构建的示图。假设仿真的目标度量是队列深度2随机只读工作负载的主机读取命令延迟。而且,假设目标SSD(产品名称为“A”)只有两个NAND管芯,并且除NAND开销外,处理主机命令的所有主机和存储装置HW开销都等于0。
如图7A所示,初始配置文件引入待仿真的存储器系统的属性。如图7A中描绘的示例所示,主机SE、两个产品SE、两个逻辑到物理地址映射SE和两个步骤延迟SE可供选择。与SE关系管理器处理器56交互的用户然后从存储库52中选择待在仿真中使用的那些SE。如上所述,在用户的帮助下,如图8右侧所示,构建了SE(来自被调用的用于仿真的一组SE)的图表,其中主机SE及其属性(访问类型、命令类型、队列深度)、产品SE和L2P SE与步骤延迟SE一起显示在图7A的SE图表中。在示出的示例中,该图表显示从一个SE到另一个SE的通信流。
在图7A中设置的所示仿真中,主机由状态实体“HOST_SE”表示,因为排除了所有HW开销并且状态实体“HOST_SE”优选地将仅根据指定的工作负载生成命令(如上所述)并进一步发送它。在图7A上,目标存储装置组件被表示为名称为“PRODUCT_A_SE”的单个状态实体,因为除了NAND开销之外没有其他HW开销。“PRODUCT_A_SE”状态实体的主要目的是将传入的消息重定向到相应的存储装置管芯组件,该存储装置管芯组件被表示为具有恒定延迟(“STEP_CONST_DELAY_1”或“STEP_CONST_DELAY_2”)、具有针对初始配置文件中定义的读取操作的限定开销的步骤实体中的一个。对于操作重定向,“PRODUCT_A_SE”状态实体可以使用仿真逻辑地址到物理地址转换表(L2P)的共享资源SE“L2P_RND_SE”。在示出的示例中,“L2P_RND_SE”是用于为模型随机选择目标管芯的随机数生成器。在SE关系管理处理器56的帮助下,用户可以利用L2P_SNAPSHOT_SE(或用于L2P仿真的其他现有/新的共享资源)替换“L2P_RND_SE”,这可以是在先决条件之后来自真实驱动器的L2P属性的快照。
假设需要对访问DRAM以读取L2P表进行仿真来提高主机读取命令延迟估算的准确性。而且,假设DRAM读取开销是已知的并且具有恒定值。在这种情况下,在SE关系管理处理器56的帮助下,用户可以将SE图表重新配置为图7B所示的图表。这种重新配置(表现为图7A和图7B中的SE图表之间的差异)是仿真平台15的一个重要方面。
与图7A所示的初始配置相比的主要区别是增加了一个步骤实体“STEP_CONST_DELAY_3”以仿真具有相应开销的DRAM读取访问。而且,对于新的仿真,PRODUCT_A_SE状态实体首先将传入的消息发送到“STEP_CONST_DELAY_3”以仿真物理地址读取开销,并且只有在开销到期后,才会将相应的消息发送到负责NAND管芯读取开销仿真的相应SE。
图8示出在仿真图7B的SE图表中所示的配置期间由仿真内核引擎54做出的SE调用序列(在时间上)(标出了时间刻度)。在PCR或FWD发送的帮助下(上文详述),在每个时间点,仿真内核引擎54仅调用仿真所需的SE(即,用户通过SE关系管理处理器56选择的那些)。按照图8所示的顺序,首先,HOST_SE(通过仿真内核引擎54处理HOST_SE的程序代码)生成消息M1和M2并且通过PCR将它们发送到PRODUCT_A_SE。其次,PRODUCT_A_SE(通过仿真内核引擎54处理PRODUCT_A_SE的程序代码)通过PCR将M1和M2发送到STEP_CONST_DELAY_3。第三,STEP_CONST_DELAY_3(通过仿真内核引擎54处理STEP_CONST_DELAY_3的程序代码)分配开销(内存资源)以作用于M1的动作。第四,STEP_CONST_DELAY_3(通过仿真内核引擎54处理STEP_CONST_DELAY_3的程序代码)释放M1并且分配开销(内存资源)以作用于M2的动作。第五,PRODUCT_A_SE通过L2P_RND_SE(通过仿真内核引擎54处理PRODUCT_A_SE和L2P_RND_SE的程序代码)为M1的动作定义目标仿真并且转发消息M1。第六,STEP_CONST_DELAY_1分配开销(内存资源)以作用于M1的动作。第七,STEP_CONST_DELAY_3释放消息M2。第八,PRODUCT_A_SE通过L2P_RND_SE(通过仿真内核引擎54处理PRODUCT_A_SE和L2P_RND_SE的程序代码)为M2的动作定义目标仿真并且转发消息M2。第九,STEP_CONST_DELAY_2分配开销(内存资源)以作用于M1和M2的动作。第十,STEP_CONST_DELAY_3释放消息M1。第十一,HOST_SE(通过仿真内核引擎54处理HOST_SE的程序代码)释放M1,并且生成消息M3,将M3发送到PRODUCT_A_SE。第十二,PRODUCT_A_SE(通过仿真内核引擎54处理PRODUCT_A_SE的程序代码)将消息M3发送到STEP_CONST_DELAY_3。第十三,STEP_CONST_DELAY_3SE(通过仿真内核引擎54处理PRODUCT_A_SE的程序代码)分配开销(内存资源)以作用于消息M3的动作。
在本发明的一个实施例中,可配置性由产品配置文件和诸如SE关系管理器处理器56的相关工具提供。使用文件,用户可以在运行另一个仿真之前简单地更改HW/FW组件参数的值。在本发明的一个实施例中,可扩展性由SE独立性及其模块化组成提供。SE关系管理器处理器56允许用户借助图表根据所需的准确度级别来包括或排除SE。在本发明的一个实施例中,仿真性能由被调用的SE的有效序列提供,使得仿真仅使用影响用于估计的目标度量的SE。例如,从先前的仿真、文档、理论或假设中,选择“已知”会影响目标度量的SE,从而通过为有待建模的目标度量选择“更好”的SE来促进建模。
在本发明的一个实施例中,提供一种用于存储装置仿真的仿真系统(或平台)。这里,仿真系统(例如仿真系统2)包括一组仿真实体(SE),该组仿真实体包括主机SE和与待仿真的存储装置(例如存储库52)的硬件和软件组件相对应的存储组件SE。在本实施例中,仿真系统进一步包括a)关系管理器处理器(例如SE关系管理器处理器56),该关系管理器处理器被配置为确定从一组SE中选择的SE之间的逻辑关系,以及b)仿真内核引擎(诸如内核引擎54),该仿真内核引擎被配置为使用选择的(或为仿真而调用的)SE执行仿真。在本实施例中,顺序消息在选择的SE之间传播并且传播到仿真内核引擎。顺序消息确定仿真条件是否完整(并且因此确定何时进行仿真)。
在本发明的一个实施例中,仿真内核引擎被配置成为所选择的SE中的第一SE创建第一消息和第二消息,并且第二消息被转发到所选择的SE中的第二SE。
在本发明的一个实施例中,仿真第二SE的仿真内核引擎基于第二消息执行至少一个仿真动作,仿真内核引擎将第二消息转发到所选择的SE中的第三SE,仿真第三SE的仿真内核引擎基于第二消息执行另一个仿真动作并且释放第二消息,并且仿真内核引擎响应于第二消息的释放完成仿真。
在本发明的一个实施例中,SE包括独立的SE,在不影响其他SE的操作的情况下可以交换独立的SE以用于不同的仿真。在另一个实施例中,顺序消息可以与响应于先前生成的父消息而生成的子消息具有父子关系。
在本发明的一个实施例中,系统可以包括配置文件的存储库(例如存储库58),其中配置文件存储关于不同存储装置的不同硬件和软件组件的属性的信息。关系管理器处理器56可以被配置为构建描绘所选择的SE之间的逻辑关系的图表。图表可以通过从配置文件加载配置信息并且加载所选择的SE来构建。进一步,关系管理器处理器56可以被配置为向用户提供所选择的SE的视觉描绘、所选择的SE之间的逻辑关系以及配置信息。关系管理器处理器56可以被配置为接受用户输入以选择SE和选择配置文件。
图9是示出根据本发明的另一实施例的仿真操作的示图。
如图9所描绘的,该方法在901处提供一组仿真实体(SE),该组仿真实体包括主机SE和与待仿真的存储装置的硬件和软件组件相对应的存储组件SE。该方法在903处从该组SE中选择SE。该方法在905处确定所选择的SE之间的逻辑关系。该方法在907处在所选择的SE之间传播顺序消息并且将顺序消息传播到仿真内核引擎,顺序消息确定仿真条件是否完整(并且因此也确定何时进行仿真)。该方法在909处使用所选择的SE执行仿真。
在该方法中,传播顺序消息包括:与仿真内核引擎通信以为所选择的SE中的第一SE创建第一消息和第二消息,并且将第二消息发送到所选择的SE中的第二SE。该方法进一步在第二SE基于第二消息而进行至少一个仿真动作之后,将第二消息转发到所选择的SE中的第三SE,在第三SE基于第二消息而进行另一仿真动作之后释放第二消息,并且响应于第二条消息的释放完成仿真。
在该方法中,存储组件SE可以是独立的SE,可以在不影响其他SE的情况下(针对不同的仿真)被交换。在该方法中,传播的消息可以是与响应于先前生成的父消息而生成的子消息具有父子关系的顺序消息。在该方法中,可以存储和访问配置文件的存储库。配置文件具有关于不同存储装置的不同硬件和软件组件的属性的信息。
该方法可以进一步构建描绘所选择的SE之间逻辑关系的图表。构建图表可能涉及从配置文件加载配置信息。在该方法中,可以将所选择的SE的可视化描绘、所选择的SE之间的逻辑关系以及配置信息呈现给用户,并且用户可以提供输入(其被接受)以选择SE和选择配置文件。
尽管为了清楚起见和方便理解已经相当详细地示出和描述了前述实施例,但是本发明不限于所提供的细节。本领域技术人员鉴于前述公开将领会,存在许多实施本发明的替代方式。因此,所公开的实施例是说明性的而非限制性的。本发明旨在包括所公开的实施例的所有修改和替代。此外,可以组合所公开的实施例以形成额外的实施例。
实际上,本专利申请文件中描述的主题和功能操作的实施方案可以在各种系统、数字电子电路中或在计算机软件、固件或包括本说明书中公开的结构及其等效结构的硬件中或在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施方案可以被实施为一个或多个计算机程序产品,即,编码在有形和非暂时性计算机可读介质上以由数据处理设备运行或以控制数据处理设备的操作的计算机程序指令的一个或多个模块。计算机可读介质可以是机器可读存储装置、机器可读存储基板、存储器装置、影响机器可读传播信号的物质的合成物或者它们中的一个或多个的组合。术语“数据处理单元”或“数据处理设备”包含用于处理数据的所有设备、装置和机器,举例来说包括可编程处理器、计算机或者多个处理器或计算机。除了硬件之外,该设备还可以包括为讨论中的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用包括编译或解释语言的任何形式的编程语言编写,并且可以以任何形式部署,包括作为独立程序或作为适于在计算环境中使用的模块、组件、子程序或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,标记语言文档中存储的一个或多个脚本)的文件的一部分中、在专用于讨论中的程序的单个文件中或在多个协调文件(例如,存储一个或多个模块、子程序或代码的一部分的文件)中。计算机程序可以被部署为在一台计算机上或者位于一个地点或分布在多个地点并且通过通信网络互连的多台计算机上运行。
本说明书中描述的过程和逻辑流可以由运行一个或多个计算机程序以通过对输入数据进行操作并且生成输出来执行功能的一个或多个可编程处理器执行。过程和逻辑流也可以由专用逻辑电路执行,并且设备也可以被实施为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适于运行计算机程序的处理器包括,举例来说,通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器会从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的基本元件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器装置。通常,计算机还会包括用于存储数据的一个或多个大容量存储装置,例如磁盘、磁光盘或光盘,或可操作地联接到一个或多个大容量存储装置以从其接收数据或者向其发送数据,或者既从其接收数据又向其发送数据。然而,计算机不需要有这样的装置。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,举例来说包括半导体存储器装置,例如EPROM、EEPROM和闪存装置。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
尽管本专利申请文件包括许多细节,但是这些细节不应解释为对任何发明的或可能要求保护的范围的限制,而应解释为对可能特定于特定发明的特定实施例的特征的描述。在本专利申请文件中在不同实施例的背景下描述的某些特征也可以在单个实施例中以组合的方式实施。相反地,在单个实施例的背景下所描述的各种特征也可以分别在多个实施例中实施或以任何合适的子组合实施。此外,尽管这些特征在上面可以被描述为在某些组合中起作用,但是在某些情况下,可以从组合中移出来自该组合的一个或多个特征,然后该组合可以涉及子组合或子组合的变体。
类似地,尽管在附图中按特定顺序描述了操作,但是这不应被理解为要求按所示的特定顺序或按先后顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。此外,在本专利申请文件中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离。
仅描述一些实施方案和示例,并且可以基于本专利申请文件中描述和示出的内容得到其他实施方案、改进和变型。

Claims (20)

1.一种仿真系统,包括:
一组仿真实体即一组SE,包括主机SE以及与待仿真的存储装置的硬件和软件组件相对应的存储组件SE;
关系管理器处理器,确定从所述一组SE中选择的SE之间的逻辑关系;以及
仿真内核引擎,使用所选择的SE执行仿真,
其中,顺序消息在所述所选择的SE之间传播并且传播到所述仿真内核引擎,所述顺序消息确定仿真条件是否完整。
2.根据权利要求1所述的系统,其中,
所述仿真内核引擎为所述所选择的SE中的第一SE创建第一消息和第二消息,并且
所述第二消息被转发到所述所选择的SE中的第二SE。
3.根据权利要求2所述的系统,其中,
仿真所述第二SE的所述仿真内核引擎基于所述第二消息执行至少一个仿真动作,
所述仿真内核引擎将所述第二消息转发到所述所选择的SE中的第三SE,
仿真所述第三SE的所述仿真内核引擎基于所述第二消息执行另一个仿真动作并且释放所述第二消息,以及
所述仿真内核引擎响应于所述第二条消息的释放完成所述仿真。
4.根据权利要求1所述的系统,其中,所述存储组件SE包括独立的SE,所述独立的SE在不影响其他SE的情况下可以针对不同的仿真进行交换。
5.根据权利要求1所述的系统,其中,所述顺序消息与响应于先前生成的父消息而生成的子消息具有父子关系。
6.根据权利要求1所述的系统,进一步包括配置文件的存储库,其中所述配置文件具有关于不同存储装置的不同硬件和软件组件的属性的信息。
7.根据权利要求6所述的系统,其中,所述关系管理器处理器通过从所述配置文件加载配置信息并且通过加载所述所选择的SE来构建所述图表。
8.根据权利要求7所述的系统,其中,所述关系管理器处理器构建描绘所述所选择的SE之间的逻辑关系的图表。
9.根据权利要求8所述的系统,其中所述关系管理器处理器向用户提供所述所选择的SE的视觉描绘、所述所选择的SE之间的逻辑关系以及所述配置信息。
10.根据权利要求8所述的系统,其中所述关系管理器处理器接受用户输入以选择所述SE和选择所述配置文件。
11.一种仿真存储装置的方法,包括:
提供一组仿真实体即一组SE,所述一组SE包括主机SE以及与待仿真的存储装置的硬件和软件组件相对应的存储组件SE;
从所述一组SE中选择SE;
确定所选择的SE之间的逻辑关系;
在所述所选择的SE之间传播顺序消息并且将所述顺序消息传播到仿真内核引擎,所述顺序消息确定仿真条件是否完整;并且
使用所述所选择的SE执行仿真。
12.根据权利要求11所述的方法,其中传播所述顺序消息包括:
与所述仿真内核引擎通信,以为所述所选择的SE中的第一SE创建第一消息和第二消息,并且
将所述第二消息发送到所述所选择的SE中的第二SE。
13.根据权利要求12所述的方法,进一步包括:
在所述第二SE基于所述第二消息进行至少一个仿真动作之后,将所述第二消息转发到所述所选择的SE中的第三SE;
在所述第三SE基于所述第二消息进行另一个仿真动作之后释放所述第二消息,以及
响应于所述第二条消息的释放完成所述仿真。
14.根据权利要求11所述的方法,其中所述存储组件SE包括独立的SE,所述独立的SE在不影响其他SE的情况下可以针对不同的仿真进行交换。
15.根据权利要求11所述的方法,其中传播所述顺序消息包括:
传播与响应于先前生成的父消息而生成的子消息具有父子关系的顺序消息。
16.根据权利要求11所述的方法,进一步包括存储配置文件的存储库,其中所述配置文件具有关于不同存储装置的不同硬件和软件组件的属性的信息。
17.根据权利要求16所述的方法,其中构建图表包括从所述配置文件加载配置信息并且加载所述所选择的SE。
18.根据权利要求17所述的方法,进一步包括构建描绘所述所选择的SE之间的逻辑关系的图表。
19.根据权利要求18所述的方法,进一步包括从视觉上描绘所述所选择的SE、所述所选择的SE之间的逻辑关系以及所述配置信息。
20.根据权利要求18所述的方法,进一步包括接受用户输入以选择所述SE和选择所述配置文件。
CN202211001184.4A 2022-03-24 2022-08-19 非易失性存储器存储装置仿真平台 Pending CN116841838A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/703,970 US20230305734A1 (en) 2022-03-24 2022-03-24 Platform for non-volatile memory storage devices simulation
US17/703,970 2022-03-24

Publications (1)

Publication Number Publication Date
CN116841838A true CN116841838A (zh) 2023-10-03

Family

ID=88095764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211001184.4A Pending CN116841838A (zh) 2022-03-24 2022-08-19 非易失性存储器存储装置仿真平台

Country Status (2)

Country Link
US (1) US20230305734A1 (zh)
CN (1) CN116841838A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112185B (zh) * 2023-10-23 2024-01-26 北京世冠金洋科技发展有限公司 仿真引擎的调用控制方法、装置及仿真系统

Also Published As

Publication number Publication date
US20230305734A1 (en) 2023-09-28

Similar Documents

Publication Publication Date Title
CN109710451B (zh) 基于nand的存储装置的固件事件跟踪及其执行方法和指令集
CN110689915B (zh) 经由主机/串行接口的远程ssd调试及其执行方法
CN110444242B (zh) 有基于深度学习的干扰校正能力的存储器系统及操作方法
KR20200008476A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
CN116841838A (zh) 非易失性存储器存储装置仿真平台
CN110931075B (zh) 可重新配置的模拟系统和测试存储装置的固件的方法
CN110825655A (zh) 存储器件、存取数据的方法及管理数据的方法
US10921988B2 (en) System and method for discovering parallelism of memory devices
US11593248B2 (en) Firmware event tracking systems and methods for preventing loss of events
US11967391B2 (en) System and method for testing multicore SSD firmware based on preconditions generation
CN112416298A (zh) 闪速存储器的基于原始读取的物理不可克隆功能
US11156664B2 (en) Scan chain techniques and method of using scan chain structure
US11579195B2 (en) Automated verification code generation based on a hardware design and design data
CN110444245B (zh) 具有混合迭代解码能力的存储器系统及其操作方法
CN115145476A (zh) 基于紧凑工作负载表示的存储器控制器及其方法
CN109558265B (zh) 具有特征增强的存储器系统及其操作方法
US11520507B1 (en) System and method for test precondition generation based on factory-formatted state of memory device
US11789748B2 (en) Firmware parameters optimizing systems and methods
US9411919B2 (en) Method and apparatus for bitcell modeling
US20220236912A1 (en) Firmware parameters auto-tuning for memory systems
US11646091B2 (en) System for outputting test data from multiple cores and method thereof
US11307909B2 (en) System for slowdown status notification and operating method thereof
CN112433892B (zh) 存储器验证方法及存储器验证系统
CN111370051B (zh) 一种非易失存储器验证系统及方法
US20220253681A1 (en) Compact workload representation of memory system

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