CN115934406A - 从多个内核输出测试数据的系统及其方法 - Google Patents
从多个内核输出测试数据的系统及其方法 Download PDFInfo
- Publication number
- CN115934406A CN115934406A CN202210217849.9A CN202210217849A CN115934406A CN 115934406 A CN115934406 A CN 115934406A CN 202210217849 A CN202210217849 A CN 202210217849A CN 115934406 A CN115934406 A CN 115934406A
- Authority
- CN
- China
- Prior art keywords
- cores
- memory
- slot
- array
- diagnostic message
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/10—Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/14—Implementation of control logic, e.g. test mode decoders
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C29/26—Accessing multiple arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/36—Data generation devices, e.g. data inverters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
- G11C29/4401—Indication or identification of errors, e.g. for repair for self repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1039—Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及一种用于将测试数据从内核输出到一个通信接口的系统。该系统包括对应于内核的共享存储器。每个共享存储器包括环形缓冲区和槽阵列。每个内核生成诊断消息,并将所生成的诊断消息存储在环形缓冲区中与槽阵列的第一空槽相对应的选择存储器区域中。所选择的内核在共享存储器中存储的诊断消息之中找到第一诊断消息,并且通过通信接口将第一诊断消息输出到个人计算机。
Description
技术领域
本公开的实施例涉及一种测试系统。
背景技术
计算机环境范例已经转变为可以随时随地使用的普适计算系统。因此,诸如移动电话、数码相机和笔记本电脑的便携式电子装置的使用已迅速增加。这些便携式电子装置通常使用具有存储器装置(即,数据存储装置)的存储器系统。数据存储装置用作便携式电子装置的主存储器装置或辅助存储器装置。
由于存储器装置没有移动部件,因此使用存储器装置的存储器系统提供优异的稳定性、耐用性、高信息访问速度和低功耗。具有这些优点的存储器系统的示例包括通用串行总线(USB)存储器装置、具有诸如通用闪存(UFS)的各种接口的存储卡以及固态驱动器(SSD)。可以使用各种测试工具来测试存储器系统。
发明内容
本发明的方面包括一种用于在没有高延迟的情况下将来自被同时访问的多个内核的测试数据输出到一个通信接口的系统及其方法。
在本发明的一方面,一种测试系统包括:个人计算机,被配置为传输测试命令;以及测试装置,包括:通信接口,联接到个人计算机并被配置为从个人计算机接收测试命令;多个内核,响应于测试命令而被同时访问,每个内核被配置为从通信接口接收测试命令并响应于测试命令而对与每个内核相关联的多个存储块执行测试;以及多个共享存储器,对应于多个内核,每个共享存储器包括环形缓冲区和槽阵列。多个内核中的每一个被配置为:生成与测试相关联的诊断消息;确定a)槽阵列中是否存在一个或多个空槽,以及b)环形缓冲区中是否存在一个或多个空闲存储器区域;并且当确定a)槽阵列中存在一个或多个空槽并且b)环形缓冲区中存在一个或多个空闲存储器区域时,将所生成的诊断消息存储在从一个或多个空闲存储器区域之中选择的存储器区域中,所选择的存储器区域对应于一个或多个空槽之中的第一空槽。从多个内核之中选择的内核被配置为:在多个共享存储器中存储的多个诊断消息之中找到第一诊断消息,并且通过通信接口将第一诊断消息输出到个人计算机。
在本发明的另一方面,提供了一种用于操作测试系统的方法。测试系统可以包括个人计算机和测试装置,测试装置包括a)用于从个人计算机接收测试命令的通信接口,以及b)响应于测试命令被同时访问以对多个存储块执行测试的多个内核。该方法可以包括:设置对应于多个内核的多个共享存储器,每个共享存储器包括环形缓冲区和槽阵列;由多个内核中的每一个生成与测试相关联的诊断消息;由多个内核中的每一个确定a)槽阵列中是否存在一个或多个空槽,以及b)环形缓冲区中是否存在一个或多个空闲存储器区域;当确定a)槽阵列中存在一个或多个空槽并且b)环形缓冲区中存在一个或多个空闲存储器区域时,由多个内核中的每一个将所生成的诊断消息存储在从一个或多个空闲存储器区域之中选择的存储器区域中,所选择的存储器区域对应于一个或多个空槽之中的第一空槽;由从多个内核之中选择的内核在多个共享存储器中存储的多个诊断消息之中找到第一诊断消息;并且由所选择的内核通过通信接口将第一诊断消息输出到个人计算机。
通过以下描述,本发明的其它方面将变得显而易见。
附图说明
图1是示出根据本发明的一个实施例的数据处理系统的框图。
图2是示出根据本发明的另一实施例的存储器系统的框图。
图3是示出根据本发明的又一实施例的存储器装置的存储块的电路图。
图4是示出根据本发明的一个实施例的存储器装置的不同类型单元的状态分布的示图。
图5是示出根据本发明的另一实施例的多内核存储装置的测试系统的示图。
图6是示出根据本发明的又一实施例的与测试系统中的每个内核的模式相对应的共享存储器的实施方案的示图。
图7是示出根据本发明的一个实施例的共享存储器的结构的示图。
图8是示出根据本发明的另一实施例的环形缓冲区中存储的诊断数据的示例的示图。
图9是示出根据本发明的又一实施例的环形缓冲区和槽阵列的示例的示图。
图10是示出根据本发明的又一实施例的多内核存储装置的测试操作的流程图。
具体实施方式
下面参照附图更详细地描述本发明的各个实施例。然而,本发明可以以不同的形式实现,因此不应被解释为限于本文阐述的实施例。相反,提供这些实施例是为了将本发明的范围充分地传达给本领域技术人员。此外,本文中对“实施例”、“另一实施例”等的引用不一定仅针对一个实施例,并且对任何这种短语的不同引用不一定针对相同的实施例。本文所使用的术语“实施例”不一定指所有实施例。在整个公开内容中,本发明的附图和实施例中的相同附图标记指代相同的部分。
本发明可以以多种方式来实施,例如包括过程、设备、系统、在计算机可读存储介质上实现的计算机程序产品;和/或处理器,例如适于运行联接到处理器的存储器上存储的和/或由其提供的指令的处理器。在本说明书中,这些实施方案或本发明可以采用的任何其它形式可以被称为技术。通常,所公开过程的操作的顺序可以在本发明的范围内进行改变。除非另有说明,否则被描述为适合于执行任务的、诸如处理器或存储器的组件可以被实施为被配置或以其他方式被编程为在给定时间执行任务的通用装置或电路组件,或者被实施为被制造或预配置或预编程以执行任务的特定装置或电路组件。如本文所使用的,术语“处理器”等是指适用于处理数据(例如,计算机程序指令)的一个或多个装置、电路和/或处理内核。
本文描述的方法、过程和/或操作可以通过待由计算机、处理器、控制器或其它信号处理装置运行的代码或指令来执行。计算机、处理器、控制器或其它信号处理装置可以是本文描述的那些或者本文描述的元件之外的元件。由于本文中对形成方法(或计算机、处理器、控制器或其它信号处理装置的操作)的基础的算法进行了描述,因此用于实施方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其它信号处理装置转换为专用处理器,以执行本文的方法中的任何一种。
如果至少部分地以软件实施,则控制器、处理器、装置、模块、单元、多路复用器、生成器、逻辑、接口、解码器、驱动器、发生器以及其它信号生成和信号处理特征可以包括例如用于存储待由例如计算机、处理器、微处理器、控制器或其它信号处理装置运行的代码或指令的存储器或其它存储装置。
以下提供了本发明的各个实施例的详细描述以及示出了本发明的方面的附图。结合这些实施例描述了本发明,但是本发明不限于任何特定实施例。本发明包括许多替代、修改和等效形式。下面的描述中阐述了许多具体细节,以便提供对本发明的透彻理解。提供这些细节仅出于示例的目的;可以在没有这些具体细节中的一些或全部的情况下实践本发明。为了清楚起见,并未详细描述与本发明有关的技术领域中已知的技术材料,从而不会不必要模糊本发明。
图1是示出根据本发明的一个实施例的数据处理系统2的框图。
参照图1,数据处理系统2可以包括主机装置5和存储器系统10。存储器系统10可以从主机装置5接收请求并响应于接收到的请求而操作。例如,存储器系统10可以存储待由主机装置5访问的数据。
主机装置5可以利用各种类型的电子装置中的任意一种来实施。在各个实施例中,主机装置5可以是诸如以下的电子装置:例如台式计算机、工作站、三维(3D)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器和/或数字视频记录器以及数字视频播放器。在各个实施例中,主机装置5可以是诸如以下的便携式电子装置:移动电话、智能电话、电子书、MP3播放器、便携式多媒体播放器(PMP)和/或便携式游戏机。
存储器系统10可以利用诸如固态驱动器(SSD)和存储卡的各种类型的存储装置中的任意一种来实施。在各个实施例中,存储器系统10可以被设置为诸如以下的电子装置中的各种组件中的一种:例如计算机、超移动个人计算机(PC)(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板PC、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(PMP)、便携式游戏装置、导航装置、黑盒、数码相机、数字多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心的存储装置、能够在无线环境下接收和传输信息的装置、射频识别(RFID)装置以及家庭网络的各种电子装置中的一种、计算机网络的各种电子装置中的一种、远程信息处理网络的各种电子装置中的一种,或者计算系统的各种组件中的一种。
存储器系统10可以包括存储器控制器100和半导体存储器装置200。存储器控制器100可以控制半导体存储器装置200的全部操作。
半导体存储器装置200可以在存储器控制器100的控制下执行一项或多项擦除操作、编程操作和读取操作。如图1所示,半导体存储器装置200可以通过输入/输出线接收命令CMD、地址ADDR和数据DATA。半导体存储器装置200可以通过电源线接收电力PWR,并且通过控制线接收控制信号CTRL。根据存储器系统10的设计和配置,控制信号CTRL可以包括例如命令锁存使能信号、地址锁存使能信号、芯片使能信号、写入使能信号、读取使能信号以及其它操作信号。
存储器控制器100和半导体存储器装置200可以被集成到诸如固态驱动器(SSD)的单个半导体装置中。SSD可以包括用于在其中存储数据的存储装置。在本发明的一个实施例中,其中半导体存储器系统10用于SSD,联接到存储器系统10的主机装置(例如,图1的主机装置5)的操作速度可以显著地提高。
存储器控制器100和半导体存储器装置200可以被集成到诸如存储卡的单个半导体装置中。例如,存储器控制器100和半导体存储器装置200可以被集成以配置个人计算机存储卡国际协会(PCMCIA)的个人计算机(PC)卡、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒、多媒体卡(MMC)、减小尺寸的多媒体卡(RS-MMC)、微型版本的MMC(微型MMC)、安全数字(SD)卡、迷你安全数字(迷你SD)卡、微型安全数字(微型SD)卡、安全数字高容量(SDHC)卡和/或通用闪存(UFS)。
图2是示出根据本发明的一个实施例的存储器系统的框图。例如,图2的存储器系统可以描绘图1所示的存储器系统10。
参照图2,存储器系统10可以包括存储器控制器100和半导体存储器装置200。存储器系统10可以响应于来自主机装置的请求(例如,来自图1的主机装置5的请求)而操作,并且特别地存储待由主机装置访问的数据。
半导体存储器装置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码、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可以在控制组件120的控制下生成用于半导体存储器装置200的控制信号并处理数据。在一个实施例中,其中存储器装置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可以在编程操作和读取操作中利用正电压对位线BL进行预充电、将数据传输到所选择的存储块以及从所选择的存储块接收数据,或者响应于控制电路220生成的页面缓冲器控制信号临时存储所传输的数据。
列解码器260可以向页面缓冲器250传输数据以及从页面缓冲器250接收数据,或者可以向输入/输出电路270传输数据以及从输入/输出电路270接收数据。
输入/输出电路270可以将从外部装置(例如,图1的存储器控制器100)接收的命令和地址传输到控制电路220,将数据从外部装置传输到列解码器260,或者将数据从列解码器260输出到外部装置。
控制电路220可以响应于命令和地址而控制外围电路中的一个。
图3是示出根据本发明的一个实施例的半导体存储器装置200的存储块的电路图。例如,图3的存储块可以是图2所示的半导体存储器装置200中的存储器单元阵列210的存储块211中的任意一个。
参照图3,存储块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闪速存储器。
图4是示出根据本发明的一个实施例的数据处理系统2的示图。
参照图4,数据处理系统2可以包括主机5和存储器系统(即,存储装置)10。存储装置10可以包括控制器100和存储器装置200。存储器装置200可以包括多个存储器单元(例如,NAND闪速存储器单元)。存储器单元以行和列的阵列形式布置,如图3所示。特定行中的单元连接到字线(例如,WL0),特定列中的单元联接到位线(例如,BL0)。这些字线和位线用于读取和写入操作。在写入操作期间,在字线被寻址时,在位线提供待写入的数据(“1”或“0”)。在读取操作期间,字线再次被寻址,然后可以从位线获取每个单元的阈值电压。多个页面可以共享属于(即,联接到)同一字线的存储器单元。
控制器100可以包括固件(FW),固件(FW)是用于控制存储器装置200的各种操作(例如,读取操作、写入操作和擦除操作)的特定类别的软件。在一些实施例中,固件可以驻留在存储装置110中,并且可以由图2中的控制组件120运行。
固件可以包括控制与主机5的通信的主机接口层(HIL)、控制主机5和存储器装置200之间的通信的闪存转换层(FTL)以及控制与存储器装置200的通信的闪存接口层(FIL)。FTL是固件最复杂的部分。
诸如固态驱动器(SSD)的存储装置10可以包括利用多个内核实施的控制器100。这些多内核系统可以包括与用于测试(即,记录和诊断目的)的外部测试装置的一个通信接口。在大多数情况下,可以使用作为通信接口的慢速传输(或输出)接口来实现对测试装置的打印(或传输)。输出接口可以利用通用异步接收器和发送器(UART)、串行(或单)线输出(SWO)等来实施。
当输出接口用于多个内核的同时访问时,存在如下一些问题。
第一个问题是,在大多数情况下,输出接口不仲裁或不支持对从多个源输出的数据进行排队。结合来自多个内核的同时访问,这将导致在数据输出期间来自不同内核的消息的重叠。实际上,输出接口的资源,即大小等于输出接口的输出缓冲区(例如,8字节缓冲区)的输出分量,应该分布在若干内核上。这种分布可以取决于互斥器(mutexes)输出接口内的互斥器(即,同步/控制数据访问的多个互斥对象中的一个)的实施方案和互斥器的捕获算法。在一个内核输出消息的整个持续时间内独占捕获输出接口互斥器的情况下,可能需要其他内核来输出诊断消息。在这种情况下,其他内核可能无法输出诊断消息,因为它们将尝试捕获互斥器。在并行执行其他任务的同时定期检查互斥器可能会导致未输出到输出接口的数据丢失,因为新的数据可能会到达。
第二个问题是来自具有更高优先级的模式的诊断消息的输出,例如中断或异常处理程序。例如,从中断模式到输出接口的输出可以中断从用户模式到输出接口的输出。也就是说,具有较高优先级的中断处理程序的运行可能会阻塞具有较低优先级的中断的运行。
第三个问题是,到输出接口的输出不一定按照消息输出的开始时间的顺序发生,而是可能按照输出接口互斥器的捕获顺序发生。在不同内核上的消息之间的延迟最小的情况下,无法确定首先传输哪个消息,因为等待输出接口互斥器的捕获,并且可能在其他内核上继续输出。这可能会降低输出诊断消息的价值。
第四个问题是诊断数据(或消息)输出非常慢。通常,准备和显示诊断消息将会长时间阻塞主程序的运行过程。考虑到现代片上系统(SoC)内核的高速处理,这可能例如由于对主要程序中运行的关键任务的时序的强烈影响而导致无法使用这种SoC内核的通道。例如,在UART的速度为115200波特时,一个字符的输出大约需要87微秒。内部UART输出缓冲区不大,并且通常不允许一次填充超过8至32字节(字符)。此外,内核需要相当长的时间来不断检查UART输出缓冲区是否为空以便进一步填充。此外,捕获独占访问互斥器将需要时间。所有这些都会影响主程序的运行并导致相当高的延迟。例如,对于80个字符的消息,利用最简单的解决方案,将需要6.264毫秒才能输出到具有8字节缓冲区的UART。这正是在主程序中处理数据所花费的时间。
因此,本发明的各个实施例可以提供一种方案,其有效地将来自同时访问的多个内核的测试数据(即,诊断数据)输出到一个通信接口而没有高延迟。
图5是示出根据本发明的一个实施例的多内核存储装置的测试系统500的示图。
参照图5,测试系统500可以包括个人计算机(PC)510和测试装置520。个人计算机510可以测试测试装置520并从测试装置520收集诊断数据(或测试数据)。例如,个人计算机510可以是主机5,而测试装置520可以是存储器系统10,如图4所示。
在各个实施例中,测试装置520可以是多内核存储装置(或多内核存储器系统),例如多内核固态驱动器(SSD)。测试装置520可以包括多个内核530、通信接口540和多个共享存储器550。在图5所示的示例中,多个内核530可以包括第一内核CORE 1 531至第K内核CORE K 539。每个内核都可以利用中央处理单元(CPU)来实施。
通信接口540可以从个人计算机510接收测试命令并将测试命令传输到多个内核530。也就是说,测试命令可以是用于同时访问和测试所有多个内核530的命令。可选地,测试命令可以是用于访问和测试从多个内核530之中选择的一个或多个内核的命令。在各个实施例中,通信接口530可以利用通用异步接收器和发送器(UART)来实施。
每个内核可以通过通信接口540接收测试命令,并且响应于测试命令而执行特定测试。例如,每个内核可以与多个存储块(例如,图4的存储器装置200中的存储块)相关联,并且对多个存储块执行测试。作为测试结果,每个内核可以生成诊断数据并将诊断数据提供到多个共享存储器550之中的相应共享存储器。
多个共享存储器550可以包括第一共享存储器551至第K共享存储器559。在图5所示的示例中,第一共享存储器551至第K共享存储器559可以分别对应于第一内核CORE 1531至第K内核CORE K 539。也就是说,多个共享存储器550的数量可以与多个内核530的数量相同。
可选地,可以基于多个内核530的数量和每个内核支持的运行模式的数量来确定多个共享存储器550的数量。在各个实施例中,每个运行模式可以包括与CPU的架构相关的用户、中断、监督和其他模式中的任意一个。如果内核(即,CPU)具有很少应该单独处理的运行模式,则该运行模式可以用作单独的内核。换言之,在本发明的一个实施例中,每个运行模式都作为具有自己的结构和处理的单独的CPU而存在。在图6所示的示例中,第一内核531可以支持三种运行模式,并且存在对应于三种运行模式的三个共享存储器11至13。第二内核532可以支持两种运行模式,并且存在对应于两种运行模式的两个共享存储器21至22。
每个共享存储器700可以包括环形缓冲区710和槽阵列720,如图7所示。每个共享存储器的详细信息如下所述。
多个内核530中的每一个可以执行特定测试(例如,黑盒、白盒和单元测试)并生成与测试相关联的诊断数据。也就是说,多个内核530中的每一个可以是诊断数据的生产者(构建者)。进一步地,每个内核可以确定槽阵列720中是否存在一个或多个空槽,并且可以确定环形缓冲区710中是否存在一个或多个存储器区域。当确定槽阵列720中存在一个或多个空槽并且环形缓冲区710中存在一个或多个空闲存储器区域时,每个内核可以将所生成的诊断数据存储在从一个或多个空闲存储器区域之中选择的存储器区域中。所选择的存储器区域可以对应于一个或多个空槽之中的第一空槽。
可以从多个内核530之中选择内核。所选择的内核可以在多个共享存储器530中存储的多个诊断消息之中找到第一诊断消息,并且通过通信接口540将第一诊断消息输出到个人计算机510。在各个实施例中,所选择的内核可以是多个内核530之中负载最少的内核(存储的数据量最少的内核)。在图5所示的示例中,可以从多个内核530之中选择第一内核531。
如上所述,诊断数据可以通过共享存储器550输出到通信接口540,而不是直接输出到通信接口540。共享存储器550可以被内核(例如,图5的第一内核531)访问,该内核直接与通信接口540交互并输出诊断数据。也就是说,在诊断数据的输出期间,测试装置520可以使用对共享存储器550的输出,而不是在通信接口540处独占捕获诊断数据。共享存储器550可以不是全局共享的,而是可以在用作诊断数据输出控制器的内核(即,所选择的内核)和用作诊断数据生产者的内核(即,所有内核)之间共享。
图7是示出根据本发明的另一实施例的共享存储器700的结构的示图。共享存储器700可以是图5中的多个共享存储器550中的每一个。诊断数据的构建,即,诊断数据的生成(产生)以及将诊断数据存储在共享存储器700中可以由图5中的每个内核执行。
参照图7,如上所述,共享存储器700可以包括环形缓冲区710和槽阵列720。进一步地,共享存储器700可以包括区域715和区域725。图5的每个内核可以生成诊断数据(即,诊断消息)并将所生成的诊断数据存储在环形缓冲区710中。每个内核可以生成与诊断数据相关联的头部信息(header information)并将所生成的头部信息存储在槽阵列720中。每个内核可以生成关于环形缓冲区710的缓冲区信息并且将所生成的缓冲区信息存储在区域715中。每个内核可以生成关于槽阵列720的阵列信息并将所生成的阵列信息存储在区域725中。
环形缓冲区710可以包括用于存储诊断数据,即多个诊断消息的多个存储器区域。在图7所示的示例中,环形缓冲区710可以存储包括第零诊断消息Message0至第六诊断消息Message6的七个诊断消息。
槽阵列720可以包括对应于环形缓冲区710的多个存储器区域的多个槽。在图7所示的示例中,槽阵列720可以包括(N+1)个槽,该(N+1)个槽包括索引为0的第零槽至索引为N的第N槽。例如,第零槽可以对应于第零诊断消息Message0,第一槽可以对应于第一诊断消息Message1,第二槽可以对应于第二诊断消息Message2。
槽阵列720中的每一个可以存储诊断消息的头部信息。在各个实施例中,头部信息可以包括头部地址、时间戳和长度信息。头部地址可以指示环形缓冲区710的多个存储器区域之中的、存储诊断消息的特定存储器区域。时间戳可以指示诊断消息存储在特定存储器区域中的时间。长度信息可以是关于诊断消息的长度的信息。
阵列信息可以包括与槽阵列相关联的头部索引、尾部索引、以及大小信息。头部索引可以指示槽阵列720中的第一槽,而尾部索引可以指示槽阵列720中的第一空槽。大小信息可以是关于槽阵列720的大小的信息。
缓冲区信息可以包括指示环形缓冲区710中的第一空位置的尾部地址以及关于环形缓冲区710的大小的大小信息。
返回参照图5,在多个内核530之中的选择的内核,即第一内核531可以在多个共享存储器530中存储的多个诊断消息之中找到第一诊断消息。进一步地,第一内核531可以通过通信接口540将第一诊断消息输出到个人计算机510。例如,第一内核531可以在每个共享存储器的环形缓冲区710中存储的多个诊断消息之中找到第一诊断消息。环形缓冲区710可以具有如图8所示的状态。
在图8所示的示例中,包括第零消息Message0至第六消息Message6的七个诊断消息已经被存储在环形缓冲区710中。一些诊断消息可能已经被输出到通信接口540,而剩余的诊断消息仍然被存储在环形缓冲区710中。如图8所示,包括第零消息Message0和第三消息Message3至第六消息Message6的五个诊断消息是已经通过先前的处理被发送到通信接口540的消息。如图8所示,包括第一消息Message1和第二消息Message2的两个诊断消息是尚未被发送到通信接口540的消息。
图9是示出根据本发明的另一实施例的环形缓冲区710和槽阵列720的示例的示图。
参照图9,诊断消息可以顺序地存储在环形缓冲区710中。在图9所示的示例中,包括第零消息Message0至第三消息Message3的四个诊断消息可以顺序地存储在环形缓冲区710中。诊断消息可以具有相同的数据长度或不同的数据长度。可以为环形缓冲区710管理头部地址和尾部地址。头部地址可以指示环形缓冲区710中存储每个诊断消息的位置。也就是说,头部地址可以是环形缓冲区710中的相对于相应诊断消息的起始位置的偏移,即,相对于环形缓冲区710中存储相应诊断消息的存储器区域的位置的偏移。尾部地址可以指示环形缓冲区710中的第一空存储器区域。
与每个诊断消息相关联的头部信息可以被生成并存储在槽阵列720的每个槽中。每个槽可以具有索引并且可以存储包括时间戳(Time stamp)和长度信息(Data length)的头部信息。索引为0的槽可以存储环形缓冲区710中的第零消息Message0的时间戳“5”和数据长度“16”。索引为1的槽可以存储环形缓冲区710中的第一消息Message1的时间戳“91”和数据长度“25”。索引为2的槽可以存储环形缓冲区710中的第二消息Message2的时间戳“108”和数据长度“9”。索引为3的槽可以存储环形缓冲区710中的第三消息Message3的时间戳“304”和数据长度“9”。可以为槽阵列720管理头部索引和尾部索引。头部索引可以指示在搜索存储数据的槽阵列720时在槽阵列720中找到的第一槽,尾部索引可以指示在搜索槽阵列720时找到的第一空槽。
在各个实施例中,头部索引和头部地址在构建(即,生成和存储)一个或多个诊断消息期间可以不变。当一个或多个诊断消息被输出到通信接口540时,头部索引和地址可以改变。尾部索引和地址可以改变以指示用于添加新诊断消息的位置。
在上述四个诊断消息之中,如图9所示,包括第零消息Message0和第三消息Message3的两个诊断消息已经被发送到通信接口540。如图9所示,第一消息Message1和第二消息Message2仍然保留在环形缓冲区710中并且尚未被发送到通信接口540。
在这种情况下,如图7所示,槽阵列720的大小可以设置为N,头部索引可以设置为1,其表示槽阵列720中索引为“1”的槽,尾部索引可以设置为3,其表示第一空(或空闲)槽,即槽阵列720中索引为“3”的槽。索引为“1”的槽中的头部地址可以指向环形缓冲区710中对应于第一消息Message1的第一字节的地址。索引为“2”的槽中的头部地址可以指向环形缓冲区710中对应于第二消息Message2的第一字节的地址。索引为“3”的槽中的尾部地址可以指向环形缓冲区710中对应于第二消息Message2之后的第一字节的地址。也就是说,尾部地址可以指向与第二消息Message2的头部地址与第二消息Message2的数据长度之和相对应的地址。
在各个实施例中,图5的所选择的内核可以在多个共享存储器550中的多个槽阵列720中存储的头部信息的时间戳之中找到最小的时间戳。进一步地,所选择的内核可以从环形缓冲区710找到具有最小时间戳的诊断消息,并将找到的诊断消息输出到通信接口540。
返回参照图5,多个内核530可以执行测试操作(例如,黑盒、白盒和单元测试)并生成与测试操作相关联的测试数据(即,诊断消息)。在图5所示的示例中,多个内核CORE 1至CORE K可以运行诊断数据生成任务。由于诊断数据生成任务,诊断消息可以被生成并存储在共享存储器550中的每一个的环形缓冲区710中。进一步地,与诊断消息相关联的各种信息可以被生成并存储在每个共享存储器中。
诊断数据生成任务可以由多个内核中的每一个执行。首先,内核可以检查槽阵列720的头部和尾部索引以确定槽阵列720之中是否存在空槽。当检查到头部索引和尾部索引不同时,内核可以确定槽阵列720之中存在空槽。
第二,内核可以从槽阵列720中具有头部索引的槽获得环形缓冲区710的头部地址。第三,内核可以检查环形缓冲区710的头部地址和尾部地址以确定环形缓冲区710中的多个存储器区域之中是否存在空(空闲)存储器区域。当检查到头部地址和尾部地址不同时,内核可以确定环形缓冲区710中存在空存储器区域。
第四,当确定环形缓冲区710中存在空存储器区域时,内核可以将新的诊断消息存储到环形缓冲区710中由尾部地址指向的空存储器区域。第五,内核可以将新诊断消息的头部信息(即,头部地址、时间戳和数据长度)放入(存储)到槽阵列720中由尾部索引指向的槽中。最后,内核可以改变环形缓冲区710的尾部地址并改变槽阵列720的尾部索引。
诊断数据输出任务可以由多个内核之中的特定内核执行。在一个实施例中,特定内核可以是多个内核之中负载较少的内核中的一个(例如,负载最少的内核)。在一个所示的示例中,特定内核可以是第一内核CORE1。因此,诊断数据生成任务和诊断数据输出任务在时间上不重叠。
对于诊断数据输出任务,特定内核可以确定(存储在共享存储器550的环形缓冲区中并由头部索引指向的诊断消息之中的)待输出到个人计算机510的诊断消息。在一个实施例中,特定内核可以基于槽阵列720中存储的头部信息(例如,时间戳)在共享存储器550的环形缓冲区中存储的诊断消息之中找到第一诊断消息。第一诊断消息可以是头部索引指向的诊断消息之中具有最小(或最低)时间戳的诊断消息。进一步地,特定内核可以检索具有最低时间戳的诊断消息(即,图9所示的第一诊断消息)并通过通信接口540将检索到的诊断消息输出到个人计算机510。
诊断消息输出任务可以循环浏览槽阵列720的头部信息以找到最小时间戳。然后诊断消息输出任务可以将找到的诊断消息输出到通信接口540。当通信接口540包括内部缓冲区(例如,8字节)时,大小等于内部缓冲区大小的一个或多个消息组块可以被输出到通信接口540。例如,诊断消息的组块(例如,8字节)可以被输出到通信接口540。再例如,两个诊断消息的组块(例如,2×4字节)可以被输出到通信接口540。
在完成一个或多个诊断消息的输出之后,槽阵列720的头部索引和环形缓冲区710的头部地址可以改变。由于环形缓冲区710的头部地址或尾部地址,定位到待从环形缓冲区710输出或待存储在环形缓冲区710中的下一个诊断消息可以自动发生。之后,可以重复寻找最小时间戳的操作,并且可以将下一个诊断消息输出到通信接口540。
因此,在本发明的一个实施例中,不会发生存储器中诊断消息的迁移。也可能不需要内核之间的同步,因为不同的指针(即,头部和尾部)在不同的内核上改变:头部在向共享存储器550输出诊断消息的内核上改变,尾部在向通信接口540输出诊断消息的内核上改变。在对内核检查的情况下,环形缓冲区710中不存在由于旧的尾部值而引起冲突。
图10是示出根据本发明的另一实施例的多内核存储装置的测试操作的流程图。测试操作1000可以由图5中的测试系统500执行。如图5所示,测试系统500可以包括个人计算机510,个人计算机510被配置为向测试装置520传输测试命令。测试装置520可以包括响应于测试命令同时访问的多个内核530、联接到个人计算机510并被配置为从个人计算机接收测试命令的通信接口540、以及与多个内核530的数量相对应的多个共享存储器550。每个内核可以被配置为从通信接口540接收测试命令并响应于测试命令而对与每个内核相关联的多个存储块执行测试(例如,黑盒、白盒和单元测试)。每个共享存储器可以包括环形缓冲区710和槽阵列720,如图7所示。
参照图10,测试操作1000可以包括诊断数据生成(或构建)操作1010和诊断数据输出操作1050。诊断数据生成操作1010可以由多个内核中的每一个执行,而诊断数据输出操作1050可以由从多个内核之中选择的特定内核执行。在各个实施例中,特定内核可以是所选择的内核之中负载最少的内核。
诊断数据生成操作1010可以包括操作1020至1040。在操作1020中,多个内核中的每一个可以生成与测试相关联的诊断消息。在操作1030中,多个内核中的每一个可以确定槽阵列中是否存在一个或多个空槽,以及环形缓冲区中是否存在一个或多个存储器区域。在操作1040中,当确定槽阵列中存在一个或多个空槽时并且当确定环形缓冲区中存在一个或多个空闲存储器区域时,多个内核中的每一个可以将所生成的诊断消息存储在从一个或多个空闲存储器区域之中选择的存储器区域中。所选择的存储器区域可以对应于一个或多个空槽之中的第一空槽。
在各个实施例中,多个内核中的每一个可以生成头部信息并且可以将头部信息存储在槽阵列的多个槽之中的特定槽中,其中头部信息包括指示环形缓冲区的多个存储器区域之中存储诊断消息的特定存储器区域的头部地址以及指示诊断消息存储在特定存储器区域中的时间的时间戳。头部信息可以进一步包括关于诊断消息的长度的信息。
在各个实施例中,多个内核中的每一个可以基于头部索引和尾部索引来确定槽阵列中是否存在一个或多个空槽,头部索引指示槽阵列中的第一槽,尾部索引指示槽阵列中的第一空槽。
在各个实施例中,多个内核中的每一个可以生成包括与槽阵列相关联的头部索引和尾部索引的阵列信息,并且可以将阵列信息存储在共享存储器中。
在各个实施例中,多个内核中的每一个可以生成包括指示环形缓冲区中的第一空存储器区域的尾部地址的缓冲区信息,并且可以将缓冲区信息存储在共享存储器中。
诊断数据输出操作1050可以包括操作1060至1070。在操作1060中,所选择的内核可以在多个共享存储器550中存储的多个诊断消息之中找到第一诊断消息。在各个实施例中,所选择的内核可以在多个共享存储器的多个槽阵列中存储的头部信息的时间戳之中找到最小的时间戳,并且可以找到具有最小时间戳的第一诊断消息。
在操作1070中,所选择的内核可以通过通信接口540将第一诊断消息输出到个人计算机510。
如上所述,本发明的各个实施例提供了一种用于有效地将来自同时访问的多个内核的测试数据输出到一个通信接口而没有高延迟的方案。
尽管为了清楚和理解的目的已经详细地示出和描述了前述实施例,但是本发明不限于所提供的细节。如本领域技术人员根据前述公开内容将理解的,存在许多实施本发明的替代方式。因此,所公开的实施例是示例性的,而非限制性的。本发明旨在涵盖所公开实施例的所有修改和替代。此外,所公开的实施例可以组合以形成另外的实施例。
Claims (20)
1.一种测试系统,包括:
个人计算机,传输测试命令;以及
测试装置,包括:
通信接口,联接到所述个人计算机并从所述个人计算机接收所述测试命令;
多个内核,响应于所述测试命令而被同时访问,每个内核从所述通信接口接收所述测试命令并响应于所述测试命令而对与每个内核相关联的多个存储块执行测试;以及
多个共享存储器,对应于所述多个内核,每个共享存储器包括环形缓冲区和槽阵列,
其中所述多个内核中的每一个:
生成与所述测试相关联的诊断消息;
确定a)所述槽阵列中是否存在一个或多个空槽,以及b)所述环形缓冲区中是否存在一个或多个空闲存储器区域;并且
当确定a)所述槽阵列中存在一个或多个空槽并且b)所述环形缓冲区中存在一个或多个空闲存储器区域时,将所生成的诊断消息存储在从所述一个或多个空闲存储器区域之中选择的存储器区域中,所选择的存储器区域对应于所述一个或多个空槽之中的第一空槽,并且
其中从所述多个内核之中选择的内核:在所述多个共享存储器中存储的多个诊断消息之中找到第一诊断消息,并且通过所述通信接口将所述第一诊断消息输出到所述个人计算机。
2.根据权利要求1所述的测试系统,其中每个共享存储器中的环形缓冲区包括多个存储器区域,并且每个共享存储器中的槽阵列包括对应于所述多个存储器区域的多个槽,并且
其中所述多个内核中的每一个进一步:
生成头部信息,所述头部信息包括头部地址和时间戳,所述头部地址指示所述环形缓冲区的多个存储器区域之中存储所述诊断消息的特定存储器区域,所述时间戳指示所述诊断消息存储在所述特定存储器区域中的时间;并且
将所述头部信息存储在所述槽阵列的多个槽之中的特定槽中。
3.根据权利要求2所述的测试系统,其中所述头部信息进一步包括关于所述诊断消息的长度的信息。
4.根据权利要求2所述的测试系统,其中所述多个内核中的每一个基于头部索引和尾部索引来确定所述槽阵列中是否存在一个或多个空槽,所述头部索引指示所述槽阵列中的第一槽,所述尾部索引指示所述槽阵列中的第一空槽。
5.根据权利要求4所述的测试系统,其中所述多个内核中的每一个进一步:
生成包括与所述槽阵列相关联的头部索引和尾部索引的阵列信息,并且将所述阵列信息存储在所述共享存储器中。
6.根据权利要求5所述的测试系统,其中所述阵列信息进一步包括关于所述槽阵列的大小的信息。
7.根据权利要求2所述的测试系统,其中所述多个内核中的每一个进一步:
生成包括尾部地址的缓冲区信息,所述尾部地址指示所述环形缓冲区中的第一空存储器区域,并且
将所述缓冲区信息存储在所述共享存储器中。
8.根据权利要求7所述的测试系统,其中所述缓冲区信息进一步包括关于所述环形缓冲区的大小的信息。
9.根据权利要求2所述的测试系统,其中所选择的内核:
在所述多个共享存储器的槽阵列中存储的头部信息的时间戳之中找到最小时间戳,并且
找到具有所述最小时间戳的第一诊断消息。
10.根据权利要求9所述的测试系统,其中所选择的内核是所述多个内核之中负载最少的内核。
11.根据权利要求1所述的测试系统,其中基于所述多个内核的数量和每个内核支持的运行模式的数量确定所述多个共享存储器的数量。
12.一种操作测试系统的方法,所述测试系统包括个人计算机和测试装置,所述测试装置包括a)从所述个人计算机接收测试命令的通信接口,以及b)响应于所述测试命令而被同时访问以对多个存储块执行测试的多个内核,所述方法包括:
设置对应于所述多个内核的多个共享存储器,每个共享存储器包括环形缓冲区和槽阵列;
由所述多个内核中的每一个生成与所述测试相关联的诊断消息;
由所述多个内核中的每一个确定a)所述槽阵列中是否存在一个或多个空槽,以及b)所述环形缓冲区中是否存在一个或多个空闲存储器区域;
当确定a)所述槽阵列中存在一个或多个空槽并且b)所述环形缓冲区中存在一个或多个空闲存储器区域时,由所述多个内核中的每一个将所生成的诊断消息存储在从所述一个或多个空闲存储器区域之中选择的存储器区域中,所选择的存储器区域对应于所述一个或多个空槽之中的第一空槽;
由从所述多个内核之中选择的内核在所述多个共享存储器中存储的多个诊断消息之中找到第一诊断消息;并且
由所选择的内核通过所述通信接口将所述第一诊断消息输出到所述个人计算机。
13.根据权利要求12所述的方法,进一步包括:
由所述多个内核中的每一个生成头部信息,所述头部信息包括头部地址和时间戳,所述头部地址指示所述环形缓冲区的多个存储器区域之中存储所述诊断消息的特定存储器区域,所述时间戳指示所述诊断消息存储在所述特定存储器区域中的时间;并且
由所述多个内核中的每一个将所述头部信息存储在所述槽阵列的多个槽之中的特定槽中。
14.根据权利要求13所述的方法,其中所述头部信息进一步包括关于所述诊断消息的长度的信息。
15.根据权利要求13所述的方法,其中确定所述槽阵列中是否存在一个或多个空槽包括:
基于头部索引和尾部索引来确定所述槽阵列中是否存在一个或多个空槽,所述头部索引指示所述槽阵列中的第一槽,所述尾部索引指示所述槽阵列中的第一空槽。
16.根据权利要求15所述的方法,进一步包括:
由所述多个内核中的每一个生成包括与所述槽阵列相关联的头部索引和尾部索引的阵列信息,并且由所述多个内核中的每一个将所述阵列信息存储在所述共享存储器中。
17.根据权利要求13所述的方法,进一步包括:
由所述多个内核中的每一个生成包括尾部地址的缓冲区信息,所述尾部地址指示所述环形缓冲区中的第一空存储器区域;并且
由所述多个内核中的每一个将所述缓冲区信息存储在所述共享存储器中。
18.根据权利要求13所述的方法,其中找到所述第一诊断消息包括:
在所述多个共享存储器的多个槽阵列中存储的头部信息的时间戳之中找到最小时间戳;并且
找到具有所述最小时间戳的第一诊断消息。
19.根据权利要求18所述的方法,其中所选择的内核是所述多个内核之中负载最少的内核。
20.根据权利要求12所述的方法,其中基于所述多个内核的数量和每个内核支持的运行模式的数量确定所述多个共享存储器的数量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/482,151 | 2021-09-22 | ||
US17/482,151 US11646091B2 (en) | 2021-09-22 | 2021-09-22 | System for outputting test data from multiple cores and method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115934406A true CN115934406A (zh) | 2023-04-07 |
Family
ID=85572886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210217849.9A Pending CN115934406A (zh) | 2021-09-22 | 2022-03-08 | 从多个内核输出测试数据的系统及其方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11646091B2 (zh) |
CN (1) | CN115934406A (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180041898A (ko) * | 2016-10-17 | 2018-04-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10990326B2 (en) | 2017-05-31 | 2021-04-27 | Fmad Engineering Kabushiki Gaisha | High-speed replay of captured data packets |
US10528404B2 (en) | 2018-06-01 | 2020-01-07 | Micron Technology, Inc. | Event logging in a multi-core system |
JP2022076620A (ja) * | 2020-11-10 | 2022-05-20 | キオクシア株式会社 | メモリシステムおよび制御方法 |
-
2021
- 2021-09-22 US US17/482,151 patent/US11646091B2/en active Active
-
2022
- 2022-03-08 CN CN202210217849.9A patent/CN115934406A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11646091B2 (en) | 2023-05-09 |
US20230092302A1 (en) | 2023-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108121669B (zh) | 存储器系统及其操作方法 | |
US11216362B2 (en) | Data storage device and operating method thereof | |
US11532372B2 (en) | Remote SSD debug via host/serial interface and method of executing the same | |
CN107957959B (zh) | 具有文件级安全擦除的存储器系统及其操作方法 | |
CN109671465B (zh) | 具有自适应读取阈值方案的存储器系统及其操作方法 | |
KR102564774B1 (ko) | 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법 | |
CN110310691B (zh) | 存储器系统中的工作负载预测及其方法 | |
US10169289B2 (en) | Memory system and method for accelerating boot time | |
KR20190083148A (ko) | 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템 | |
CN109800178B (zh) | 垃圾收集方法以及用于混合地址映射的存储器系统 | |
KR20190118030A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
KR20200088564A (ko) | 컨트롤러, 컨트롤러의 동작방법 및 메모리 시스템 | |
KR20210147696A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11782638B2 (en) | Storage device with improved read latency and operating method thereof | |
US11093369B2 (en) | Reconfigurable simulation system and method for testing firmware of storage | |
US10921988B2 (en) | System and method for discovering parallelism of memory devices | |
CN112416298A (zh) | 闪速存储器的基于原始读取的物理不可克隆功能 | |
US10599562B2 (en) | Nonvolatile memory device configured to be accessed without block address and method of operating the same | |
US11967391B2 (en) | System and method for testing multicore SSD firmware based on preconditions generation | |
CN111128289B (zh) | 扫描链技术以及利用扫描链结构的方法 | |
US11087846B1 (en) | Memory system with single decoder, multiple memory sets and method for decoding multiple codewords from memory sets using the single decoder | |
US11157401B2 (en) | Data storage device and operating method thereof performing a block scan operation for checking for valid page counts | |
CN110989919B (zh) | 用于存储器系统的日志记录机制 | |
US11646091B2 (en) | System for outputting test data from multiple cores and method thereof | |
KR20200113387A (ko) | 메모리 시스템 및 그것의 동작방법 |
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 |