CN109491814A - 专用集成电路中的集中式错误处置 - Google Patents
专用集成电路中的集中式错误处置 Download PDFInfo
- Publication number
- CN109491814A CN109491814A CN201811038075.3A CN201811038075A CN109491814A CN 109491814 A CN109491814 A CN 109491814A CN 201811038075 A CN201811038075 A CN 201811038075A CN 109491814 A CN109491814 A CN 109491814A
- Authority
- CN
- China
- Prior art keywords
- error
- order
- hardware block
- error condition
- manager
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0784—Routing of error reports, e.g. with a specific transmission path or data flow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0787—Storage of error reports, e.g. persistent data storage, storage using memory protection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及专用集成电路中的集中式错误处置。在一个实施例中,一种系统包括:多个硬件块,所述多个硬件块中的每一者经配置以响应于与命令相关联的请求执行功能;错误队列管理器,其经配置以从所述多个硬件块中的至少一者接收错误消息并将所述错误消息存储在错误队列中,所述错误消息包含出错的命令的命令识别符;以及错误状态管理器,其包含错误状态位图,所述错误状态位图存储多个命令识别符中的每一者的错误状态位,所述错误状态位指示命令出错或命令未出错;所述错误状态管理器经配置以设置用于所述出错的命令的所述命令识别符的所述错误状态位以响应于错误状态消息指示命令出错,所述错误状态消息包含所述出错的命令的所述命令识别符。
Description
技术领域
本发明大体来说涉及专用集成电路,且更具体来说,涉及专用集成电路中的集中式错误处置。
背景技术
例如片上系统(SoC)装置的现代专用集成电路(ASIC)通常需要以非常高的数据速率操作。为了实现此高速操作,除了在处理器上运行的固件之外,ASIC设计通常还包含复杂的硬件自动化。具有高水平硬件自动化的ASIC的一个实例为非易失性固态存储器驱动器中的存储器控制器。在具有高级硬件自动化的装置中,应以使得出错的命令已限制对其它命令没有影响的方式处置来自外部主机的执行中的命令中的错误。常见的错误处置方案涉及发送到装置固件的中断以及停止遇到错误的硬件块的操作,或在硬件块之间传递错误,此导致ASIC设计的显著复杂性。此些错误处置方案还为遇到命令中的错误的一个硬件块创造“背压”在执行与所述同一命令相关联的任务中所涉及的其它硬件块的机会。例如,如果硬件块由于遇到错误的命令而停止操作,那么需要由所述硬件块完成任务的所有其它命令的完成将被延迟,直到错误被清除为止,从而导致等待时间峰值。
通常,遇到错误的每一硬件块将保持“错误状态”,直到固件清除错误为止。如果两个硬件块同时处于错误状态,那么那些硬件块中的两者都将导致系统中的背压,这是一个多错误的极端状况。旨在处理此些极端状况的错误处置方案为系统的硬件及固件两者增加了显著的复杂性。此复杂性要求在制造之前对系统的设计进行重要的验证测试,这可能会延迟系统的上市时机。因此,长期以来需要一种用于ASIC中的错误处置的改进技术。
发明内容
在一个实施例中,一种系统包括多个硬件块,所述多个硬件块中的每一者经配置以响应于与命令相关联的请求执行功能;错误队列管理器,其经配置以从所述多个硬件块中的至少一者接收错误消息并将所述错误消息存储在错误队列中,所述错误消息包含出错的命令的命令识别符;以及错误状态管理器,其包含错误状态位图,所述错误状态位图存储多个命令识别符中的每一者的错误状态位,所述错误状态位指示命令出错或命令未出错;所述错误状态管理器经配置以设置用于所述出错的命令的所述命令识别符的所述错误状态位以响应于错误状态消息指示命令出错,所述错误状态消息包含所述出错的命令的所述命令识别符。在一个实施例中,多个硬件块中的每一者经配置以在响应于与命令相关联的请求执行功能之前向错误状态管理器发送查询以确定命令的错误状态,并忽略对执行与出错的命令有关的功能的请求。在一个实施例中,所述系统进一步包括固件,所述固件经配置以从错误队列管理器中的错误队列中检索错误消息,并识别分配给包含出错的命令的命令识别符的请求的多个硬件块中的至少一个中的资源,及且指示多个硬件块中的至少一者释放分配到请求的资源,包含出错的命令的命令识别符。
在一个实施例中,一种方法包括:在错误队列管理器中从多个硬件块中的一者接收错误消息,所述错误消息包含命令识别符;将错误消息存储在错误队列中,使得错误状态管理器将对应于命令识别符的错误状态位图中的错误状态设置为错误的消息;向固件报告错误队列中存在错误消息;通过固件识别与多个硬件块中的第二者中的命令识别符相关联的至少一个资源;及致使多个硬件块中的第二者释放与命令识别符相关联的至少一个资源。在一个实施例中,所述方法进一步包括响应于来自多个硬件块中的一者的查询报告命令的错误状态,如果命令的错误状态为命令出错,那么忽略与所述命令相关联的请求,且如果命令的错误状态为命令未出错,那么响应与命令相关联的请求执行功能。在一个实施例中,所述方法进一步包括在已释放与命令识别符相关联的至少一个资源时,使得错误状态管理器将对应于命令识别符的错误状态位图中的错误状态位设置为命令未出错。
附图说明
图1为根据本发明的具有集中式错误处置的专用集成电路的一个实施例的图。
图2为根据本发明的图1的错误状态管理器的一个实施例的图。
图3为根据本发明的图1的错误排队管理器的一个实施例的图。
图4为根据本发明的包含具有集中式错误处置的控制器的固态存储驱动器的一个实施例的图。
图5为根据本发明非具有图4的集中式错误处置的控制器的一个实施例的图。
图6为根据本发明一个实施例的用于专用集成电路中的集中式错误处置的方法步骤的流程图。
图7为根据本发明一个实施例的用于释放与错误命令相关联的硬件资源的方法步骤的流程图。
具体实施方式
图1为根据本发明的具有集中式错误处置的专用集成电路(ASIC)100的一个实施例的图。ASIC 100包括但不限于硬件块A 112、硬件块B 114、硬件块C 116、硬件块D 118、固件120、错误队列管理器122及错误状态管理器124。ASIC 100包含用于在硬件块之间交换命令及命令相关请求的命令路径132和用于在硬件块之间交换数据的数据路径134。为便于说明,图1中未展示ASIC 100中的块之间的所有通信路径。固件120为存储在只读存储器(未展示)中的可执行代码,其由处理单元(未展示)结合易失性存储器(未展示)执行。硬件块A112、硬件块B 114、硬件块C 116及硬件块D 118中的每一者为执行特定任务或功能(例如直接存储器存取、排队命令或纠错编码)的硬件状态机。为便于说明,图1中展示四个硬件块112、114、116及118;包含任何数目的硬件块的ASIC 100都在本发明的范围内。另外,错误队列管理器122及错误状态管理器124可实施为硬件状态机。
硬件块A 112、硬件块B 114、硬件块C 116及硬件块D 118中的每一者响应于与来自主机系统(未展示)的命令的命令识别符相关联的请求来执行任务或功能。如果硬件块中的一者(例如硬件块C 116)在处理请求时遇到错误,那么硬件块C 116通过发送错误消息将错误报告到错误队列管理器122。错误消息包含硬件块C 116的块识别符,所述命令识别符用于识别与遇到错误的请求相关联的命令(即,错误命令),以及与错误有关的任何其它适当信息。在将错误消息发送到错误队列管理器122之后,硬件块C 116释放与错误命令有关的所有状态并开始处置下一个请求。通过将与错误消息中的错误有关的所有信息包括到错误队列管理器122,释放与出错的命令相关联的所有状态,且然后继续下一个请求,硬件块A112、硬件块B 114、硬件块C 116及硬件块D 118中无一者通过延迟处置与其它命令相关联的请求来“背压”ASIC 100中的任何其它硬件块。
当错误队列管理器122将错误消息移动到错误队列的顶部(头部)时,错误队列管理器122向固件120发送中断。错误队列管理器122向错误状态管理器124发送“命令出错”状态消息,所述状态消息致使错误状态管理器124将关于错误状态位图中的所述命令识别符的错误状态设置为出错。在另一实施例中,遇到错误的硬件块,例如硬件块C 116,向错误状态管理器124发送“命令出错”状态消息,所述状态消息致使错误状态管理器124将关于所述命令识别符的错误状态设置为错误状态位图中的错误。固件120从错误队列管理器122检索错误信息且识别出出错的命令。然后,固件120执行“清除”过程以识别并释放与执行错误命令有关的其它硬件块中的资源。例如,硬件块A 112可具有例如寄存器的资源,所述寄存器存储关于与在硬件块C 116中遇到错误的命令有关的请求的状态信息。固件120将指示硬件块A 112释放分配到与错误命令相关联的处理请求的任何资源。然后,释放的资源可用于处置与其它未出错的命令相关联的请求。当“清除”过程完成时,固件120向错误状态管理器124发送“清除错误”消息,以将命令识别符的错误状态设置为未出错。
错误状态管理器124中的错误状态位图包含可分配给ASIC 100中的命令的每一命令识别符的错误状态位。当硬件块(例如硬件块A 112)从固件120或功能接口上的另一硬件块接收执行任务的请求时,硬件块A 112首先通过向错误状态管理器124发送查询来检查与所述请求相关联的命令识别符的错误状态。如果错误状态管理器124响应所述命令出错的消息,硬件块A 112忽略与所述命令相关联的请求,并继续进行查询它接收的下一个请求的错误状态。如果错误状态管理器124以所述命令未出错的消息做出响应,则硬件块A 112处理所述请求。通过在尝试处置请求之前检查与其功能接口上的每一传入请求相关联的命令的错误状态,且丢弃与错误状态管理器124报告为出错的命令相关联的请求,硬件块A 112、硬件块B 114、硬件块C 116及硬件块D 118中的每一者避免被先前在另一硬件块中遇到错误的命令“感染”。因此,硬件块A 112、硬件块B 114、硬件块C 116及硬件块D 118中任一者都不会浪费资源来处置与报告为出错的命令相关联的请求。
图2为根据本发明的图1的错误状态管理器124的一个实施例的图。错误状态管理器124包含但不限于具有命令识别符(命令ID)索引212及错误状态字段214、错误状态逻辑216及错误检查逻辑218的错误状态位图210。错误状态位图210包含等于ASIC 100中所使用的可能命令识别符的数目(N)的数目个行。错误状态字段214中的错误状态位表示每一命令的错误状态。在图2的实施例中,具有逻辑值“0”的错误状态位意味着所述命令未出错,且具有逻辑值“1”的错误状态位意味着所述命令出错。在图2的实施例中,命令4及命令N-1具有“出错”的错误状态。错误状态管理器124从错误队列管理器122接收“命令出错”状态消息,以将命令标记为出错,其中每一消息包含命令识别符。在另一个实施例中,当硬件块在执行与命令识别符相关联的任务时遇到错误时,错误状态管理器124从硬件块A 112,硬件块B114,硬件块C 116和硬件块D 118中的任何一个接收“错误命令”状态消息。在一个实施例中,错误状态管理器124包含寄存器接口(未展示),其使得固件120能够设置命令的错误状态。例如,固件120可中止命令并将错误状态位图210中的所述命令的错误状态设置为出错。响应于“命令出错”状态消息,错误状态逻辑216将针对指定命令识别符的错误状态字段214中的错误状态位设置为出错,例如通过将所述位设置为逻辑值“1”。错误状态管理器124从固件120接收“清除错误”消息,以将指定的命令标记为不再出错。响应于“清除错误”消息,错误状态逻辑216将针对“清除错误”消息中规定的命令识别符的错误状态字段214中的错误状态位设置为未出错,例如通过将所述位设置为逻辑值“0”。
错误状态管理器124还经配置以从寻求特定命令的错误状态非硬件块A 112、硬件块B 114、硬件块C 116及硬件块D 118接收“检查错误”查询。当错误状态管理器124接收到来自硬件块A 112,硬件块B 114,硬件块C 116或硬件块D 118中的一者的查询时,错误检查逻辑218读取针对查询中规定的命令识别符的错误状态字段214中的错误状态。然后,错误检查逻辑218向请求硬件块发送包含命令识别符及当前错误状态的响应。此响应使得硬件块能够避免将与报告给错误队列管理器122的命令相关联的请求处理为出错。
图3为根据本发明的图1的错误队列管理器122的一个实施例的图。错误队列管理器122包括但不限于错误队列310、固件接口318及错误消息逻辑320。在图3的实施例中,错误队列310包含但不限于命令识别符字段312、硬件块识别符字段314及错误信息字段316。错误队列管理器122在固件120与硬件块A 112、硬件块B 114、硬件块C 116及硬件块D 118中的每一者之间提供错误消息接口。错误队列管理器122经由错误消息逻辑320从遇到错误的硬件块接收错误消息。错误消息包含遇到错误的硬件块的硬件块识别符、出错的命令的命令识别符以及与所述命令有关的其它错误状态信息。错误状态信息的内容及格式取决于遇到错误的硬件块执行的功能。例如,执行直接存储器存取功能的硬件块将具有与执行数值计算功能的硬件块不同的状态信息。
错误消息逻辑320响应于来自硬件块的错误消息向错误状态管理器124发送“命令出错”状态消息,并将错误消息信息存储在错误队列310中。在图3的实施例中,错误队列310展示硬件块A 112在处置与命令N-1有关的请求时报告错误,且硬件块C 116在处置与命令4有关的请求时报告错误。如图2中所展示,命令4及命令N-1具有错误状态“1”,命令出错。错误消息逻辑320按接收到错误消息的顺序将错误消息信息存储在错误队列310中。当错误消息移动到错误队列310的顶部时,固件接口318向固件120发送中断以通知固件120命令已遇到错误,且固件120将从错误队列管理器122获取关于所述命令的错误信息。在一个实施例中,错误队列310为具有头部及尾部的缓冲器。错误消息逻辑320将每一所接收到的错误消息写入到错误队列310的尾部,且固件120从错误队列310的头部读取错误消息。在固件120已处理错误消息之后,固件120写入到头部寄存器(未展示)以更新错误队列310中头部的位置。固件120执行“清除”过程,其中其识别已经分配到与出错的命令有关的请求的其它硬件块中的资源,并指示那些硬件块释放那些资源。然后,固件120以任何适当的方式处理错误信息,例如通过向主机系统报告错误及/或重新提交命令以便执行。
图4为根据本发明的包含具有集中式错误处置的控制器的固态存储驱动器400的一个实施例的图。固态存储驱动器400包含但不限于前端子系统410、后端子系统414及多个NAND快闪存储器装置416。前端子系统410提供与主机系统(未展示)的接口且后端子系统414提供与NAND快闪存储器装置416的接口。在图4的实施例中,固态存储驱动器400为双主机系统,其中前端子系统410与两个单独的主机系统介接以接收命令及数据并输出从NAND装置416读取的数据。前端子系统410中的NVM快速(NVMe)控制器412将从符合NVMe标准的主机系统接收的命令转换成对后端子系统414的一组请求以致使从NAND装置416读取数据或将数据写入到NAND装置416。
图5为根据本发明的图4的NVMe控制器412的一个实施例的图。NVMe控制器412为ASIC,其包含但不限于双端口接口510、队列直接存储器存取(DMA)512、命令处理器514、子命令生成器516、子命令执行块518、数据DMA 520、固件522、错误队列管理器524及错误状态管理器526。固件522为存储在只读存储器(未展示)中的可执行代码,其由处理单元(未展示)结合易失性存储器(未展示)执行。双端口接口510、队列DMA 512、命令处理器514、子命令生成器516、子命令执行块518及数据DMA 520中的每一者为经配置以执行特定任务的硬件块。队列DMA 512通过双端口接口510提取主机命令(例如读取命令及写入命令),并将命令发送到命令处理器514。命令处理器514将命令识别符指派到每一主机命令且将命令识别符发送到固件522。命令处理器514将具有其分配的命令识别符的命令发送到子命令生成器516,子命令生成器516生成所述命令的一组子命令(或请求)。例如,如果所述命令为调用待从NAND装置416读取的32KB数据的读取命令,那么子命令生成器516将生成一组读取子命令,其中每一子命令经配置以致使从NAND装置416中的一者读取32KB有效载荷的部分。在一个实施例中,子命令生成器516经配置以生成各自具有4KB的数据有效载荷的子命令。因此,对于调用32KB数据的示范性读取命令,子命令生成器516将生成与读取命令的命令识别符相关联的8个子命令。每一子命令包含标识所述子命令的数据标记。子命令生成器516将子命令发送到子命令执行块518,所述子命令执行块执行子命令以使后端子系统414执行例如从NAND装置416读取数据的操作。子命令执行块518使用数据标签来管理子命令的处理。子命令执行块518将从NAND装置416读取的数据发送到数据DMA 520,数据DMA 520通过双端口接口510向请求主机系统提供数据。数据DMA 520还通过双端口接口510从主机系统接收待写入到NAND装置416的数据,并将数据提供到子命令执行块518。
在接收与主机命令相关联的请求时,队列DMA 512、命令处理器514、子命令生成器516、子命令执行块518及数据DMA 520中的每一者向错误状态管理器526发送查询以确定与请求相关联的命令的错误状态。错误状态管理器526包含错误状态位图(未展示),且在错误状态位图中查找包含在查询中的命令识别符的错误状态。错误状态管理器526用包括所述命令的错误状态的当前状态(无错或出错)的消息来对所述查询做出响应。如果错误状态管理器526对所述命令未出错的查询做出响应,那么硬件块处置所述请求。如果错误状态管理器526到所述命令出错的查询做出响应,那么硬件块丢弃或忽略所述请求并继续进行下一个请求。
如果队列DMA 512、命令处理器514、子命令生成器516、子命令执行块518及数据DMA 520中的任何一者在处置与主机命令相关联的请求时遇到错误,那么遇到所述错误的块将错误消息发送到错误队列管理器524。错误消息包含硬件块的识别符,例如命令处理器514的识别符,遇到错误的命令的命令识别符,以及其它适用的错误信息。在发送错误消息后,遇到错误的块将释放所述请求的所有状态,并继续处置其下一个传入请求。错误队列管理器524将每一错误消息中的信息存储在错误队列(未展示)中,并将“命令出错”状态消息发送到错误状态管理器526。在另一实施例中,遇到错误的块将“命令出错”状态消息发送到错误状态管理器526。错误状态管理器526然后在错误状态位图中将命令识别符的错误状态设置为出错。错误队列管理器524向固件522发送中断以通知固件522消息可用,且固件522将从错误队列管理器524提取关于所述命令的错误信息。
固件522适当地处理错误信息,然后将释放分配给出错的命令的资源,并在必要时将错误报告到请求主机系统。固件522识别已分配到与出错的命令有关的请求的其它硬件块中的资源,并指示那些硬件块释放那些资源。例如,固件522将从命令处理器514的执行队列中删除出错的命令,并扫描子命令执行块518的数据标签表,以识别与出错的命令的命令识别符相关联的任何数据标签。然后,固件522将指令发送到数据DMA 520及子命令执行块518,以便释放与出错的命令相关联的所有数据标签。一旦释放了与出错的命令相关联的所有数据标签,固件522指示数据DMA 520解除分配与出错的命令相关联的任何残留数据指针。当与出错的命令有关的所有资源都已被释放时,固件522将“清除错误”消息发送到错误状态管理器526以将命令的错误状态改变为“未出错”。固件522还可指示命令处理器514将现在清除的命令的命令识别符标记为可用或空闲,使得命令识别符可被分配到从主机系统接收的新命令。替代地,固件522将错误报告到发出命令的主机系统。在一个实施例中,固件522将命令完成消息发送到请求主机系统的完成队列,其中完成消息包含错误代码。发送完成消息的固件522也将释放命令识别符。在一个实施例中,固件522经配置以将命令完成消息发送到符合NVMe协议的请求主机的完成队列。
图6为根据本发明一个实施例的用于例如NVMe控制器412的专用集成电路中的集中式错误处置的方法步骤的流程图。在步骤610中,硬件块(例如图5的NVMe控制器412的子命令执行块518)检测由所述块处置的命令中的错误。在步骤612中,遇到错误的硬件块将错误消息发送到错误队列管理器524,所述错误消息包含关于出错的命令的命令识别符、遇到错误的硬件块的识别符,以及其它错误信息。其它错误信息的格式及内容将根据经历错误的硬件块经配置执行的功能而变化。遇到错误的硬件块也会释放与出错的命令有关的所有状态,且然后继续处理下一传入请求。在步骤614中,错误队列管理器524向固件522发送中断以通知固件522已发生错误且向错误状态管理器526发送“命令出错”状态消息,错误状态管理器526将错误状态位图中的命令的错误状态设置为出错。在另一实施例中,遇到错误的硬件块向错误状态管理器526发送“命令出错”状态消息。在一个实施例中,错误队列管理器524在错误队列管理器524将下一错误消息放置在错误队列的头部处时向固件522发送中断。在步骤616中,固件522读取错误队列管理器524的错误队列中的错误消息。在步骤618中,固件522执行“清除”过程以释放分配到在其它硬件块中的出错的命令的资源。下面结合图7描述此“清除”过程的一个实施例。当清除过程完成后,所述方法继续步骤620,其中固件522将消息发送到错误状态管理器526以清除错误状态位图中的命令识别符的错误状态。换句话说,固件522向错误状态管理器526发送“清除错误”消息,以将命令识别符的错误状态设置为没有错误。在步骤622中,固件522用适当的错误状态代码向主机系统的完成队列发送命令完成消息。
图7为根据本发明一个实施例的用于释放与错误命令相关联的硬件资源的方法步骤的流程图。在图7的实施例中,固件522执行“清除”过程以释放已在图5的NVMe控制器412的硬件块中的一者中遇到错误的命令的硬件资源。在步骤710中,固件522从子命令生成器516的执行队列中删除错误的命令。在步骤712中,固件522通过在子命令执行块518扫描一个数据标签表识别与错误的命令相关联的所有数据标签。在步骤714中,固件522释放与相关硬件块中的错误命令相关联的所有数据标签。例如,固件522指示数据DMA 520及子命令执行块518释放与出错的命令相关联的所有数据标签。一旦释放了与出错的命令相关联的所有数据标签,在步骤716中,固件522指示数据DMA 520解除分配与错误命令相关联的任何残留数据指针。
本发明的各个方面的其它目的、优点及实施例对于本发明领域的技术人员来说是显而易见的,且在说明书及附图的范围内。例如但不限于,可重新布置结构或功能元件,或重新排序方法步骤,与本发明一致。类似地,机器可包括单个实例或多个机器,此类多个机器可能囊括多种类型的机器,其一起提供所指示的功能。在各种实施例中所描述的机器类型并不意味着限制可在本发明的方面的实施例中使用的可能类型的机器,且也可实现可完成类似任务的其它机器。类似地,根据本发明的原理以及体现其的方法及系统可应用于其它实例,即使此处没有具体描述,其仍然在本发明的范围内。
Claims (23)
1.一种系统,其包括:
多个硬件块,所述多个硬件块中的每一者经配置以响应于与命令相关联的请求而执行功能;
错误队列管理器,其经配置以从所述多个硬件块中的至少一个接收错误消息,并将所述错误消息存储在错误队列中,所述错误消息包含出错的命令的命令识别符;
及
错误状态管理器,其包含错误状态位图,所述错误状态位图存储多个命令识别符中的每一者的错误状态位,所述错误状态位指示命令出错或命令未出错;
所述错误状态管理器经配置以将所述出错的命令的所述命令识别符的所述错误状态位设置为响应于错误状态消息指示出错的命令,所述错误状态消息包含所述出错的命令的所述命令识别符。
2.根据权利要求1所述的系统,其中所述多个硬件块中的每一者经配置以在响应于与所述命令相关联的请求执行功能之前,向所述错误状态管理器发送查询以确定命令的错误状态。
3.根据权利要求2所述的系统,其中所述多个硬件块中的每一者经配置以忽略执行与出错的命令相关联的功能的请求。
4.根据权利要求1所述的系统,其中所述错误队列管理器经进一步配置以将所述错误状态消息发送到所述错误状态管理器。
5.根据权利要求1所述的系统,其中所述多个硬件块中的每一个经进一步配置以将所述错误状态消息发送到所述错误状态管理器。
6.根据权利要求1所述的系统,其中所述多个硬件块中的每一个经配置以在执行与所述请求相关联的所述功能时检测错误,并在检测到所述错误时将所述错误消息发送到所述错误队列管理器。
7.根据权利要求6所述的系统,其中所述多个硬件块中的每一者为状态机,且经进一步配置以在将所述错误消息发送到所述错误队列管理器之后释放与所述请求有关的所有状态。
8.根据权利要求1所述的系统,其进一步包括固件,所述固件经配置以从所述错误队列管理器中的所述错误队列中检索所述错误消息并识别分配到包含所述出错的命令的所述命令识别符的请求的所述多个硬件块中的至少一者中的资源。
9.根据权利要求8所述的系统,其中所述固件经进一步配置以指示所述多个硬件块中的所述至少一者释放分配到包含所述出错的命令的所述命令识别符的所述请求的所述资源。
10.根据权利要求9所述的系统,其中所述固件经进一步配置以当已释放分配到所述多个硬件块中的所述请求的所有资源时,指示所述错误状态管理器将用于所述命令识别符的所述错误状态位图中的所述错误状态位设置为命令未出错。
11.根据权利要求1所述的系统,其中所述错误消息进一步包含所述多个硬件块中的所述至少一者的识别符。
12.根据权利要求1所述的系统,其中所述错误消息进一步包含关于所述多个硬件块中的所述至少一者的状态信息。
13.一种方法,其包括:
从多个硬件块中的一者接收错误队列管理器中的错误消息,所述错误消息包含命令识别符;
将所述错误消息存储在错误队列中;
致使错误状态管理器将对应于所述命令识别符的错误状态位图中的错误状态位设置为命令出错;
向固件报告所述错误队列中存在所述错误消息;
通过所述固件识别与所述多个硬件块中的第二者中的所述命令识别符相关联的至少一个资源;及
致使所述多个硬件块中的所述第二者释放与所述命令识别符相关联的所述至少一个资源。
14.根据权利要求13所述的方法,其进一步包括查询所述错误状态管理器以通过所述多个硬件块中的一者确定命令的所述错误状态。
15.根据权利要求13所述的方法,其进一步包括:
响应于来自所述多个硬件块中的一者的查询报告命令的所述错误状态;
如果所述命令的所述错误状态为命令出错,则忽略与所述命令相关联的请求;且如果所述命令的所述错误状态为命令未出错,则响应于与所述命令相关联的所述请求而执行功能。
16.根据权利要求13所述的方法,其中致使错误状态管理器将对应于所述命令识别符的错误状态位图中的错误状态位设置为命令出错包括将错误状态消息从所述错误队列管理器或所述多个硬件块中的所述一者发送到所述错误状态管理器。
17.根据权利要求13所述的方法,其进一步包括在已释放与所述命令识别符相关联的所述至少一个资源时,致使所述错误状态管理器将对应于所述命令识别符的错误状态位图中的所述错误状态位设置为命令未出错。
18.根据权利要求13所述的方法,其进一步包括通过多个硬件块中的所述一者在执行与所述命令识别符相关联的功能时检测错误,并释放与多个硬件块中的所述一者中的所述错误有关的所有状态信息。
19.根据权利要求13所述的方法,其中所述多个硬件块中的每一者为状态机,且经配置以在将所述错误消息发送到所述错误队列管理器之后释放与所述命令识别符有关的所有状态。
20.根据权利要求13所述的方法,其中所述多个硬件块包括专用集成电路,所述专用集成电路将所述固件存储在存储器中。
21.根据权利要求13所述的方法,其进一步包括向主机系统发送命令完成消息,所述命令完成消息包含错误代码。
22.根据权利要求13所述的方法,其中所述错误消息进一步包含所述多个硬件块中的所述一者的识别符。
23.根据权利要求13所述的方法,其中所述错误消息进一步包含关于所述多个硬件块中的所述一者的状态信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/702,853 US10528414B2 (en) | 2017-09-13 | 2017-09-13 | Centralized error handling in application specific integrated circuits |
US15/702,853 | 2017-09-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109491814A true CN109491814A (zh) | 2019-03-19 |
Family
ID=63678359
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810803166.5A Active CN109491958B (zh) | 2017-09-13 | 2018-07-20 | 错误处理系统和错误处理方法 |
CN201811038075.3A Pending CN109491814A (zh) | 2017-09-13 | 2018-09-06 | 专用集成电路中的集中式错误处置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810803166.5A Active CN109491958B (zh) | 2017-09-13 | 2018-07-20 | 错误处理系统和错误处理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10528414B2 (zh) |
EP (1) | EP3457283B1 (zh) |
CN (2) | CN109491958B (zh) |
TW (1) | TWI703435B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988043A (zh) * | 2019-12-12 | 2021-06-18 | 西部数据技术公司 | 提交队列获取错误的错误恢复 |
CN113485859A (zh) * | 2021-06-23 | 2021-10-08 | 珠海格力电器股份有限公司 | 故障定位方法、装置、电子设备和计算机可读存储介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10540219B2 (en) * | 2017-09-13 | 2020-01-21 | Toshiba Memory Corporation | Reset and error handling in application specific integrated circuits |
US10528414B2 (en) * | 2017-09-13 | 2020-01-07 | Toshiba Memory Corporation | Centralized error handling in application specific integrated circuits |
US11841776B2 (en) * | 2019-06-12 | 2023-12-12 | Intel Corporation | Single chip multi-die architecture having safety-compliant cross-monitoring capability |
US10938657B1 (en) * | 2019-09-13 | 2021-03-02 | Servicenow, Inc. | Enhancing discovery patterns with shell command exit status |
CN114564324B (zh) * | 2022-01-28 | 2024-06-28 | 苏州浪潮智能科技有限公司 | 一种ssd硬件错误处理方法、系统、装置及存储介质 |
TWI839862B (zh) * | 2022-09-26 | 2024-04-21 | 英柏得科技股份有限公司 | 檢查資料存儲裝置之系統環境是否異常的方法與系統 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080300884A1 (en) * | 2007-06-04 | 2008-12-04 | Smith Todd R | Using voice commands from a mobile device to remotely access and control a computer |
CN102096611A (zh) * | 2009-12-09 | 2011-06-15 | 英特尔公司 | 用于存储器装置中的差错管理的方法和系统 |
CN102473126A (zh) * | 2009-08-11 | 2012-05-23 | 桑迪士克科技股份有限公司 | 提供闪存系统中的读状态和空闲块管理信息的控制器和方法 |
CN105843677A (zh) * | 2015-02-04 | 2016-08-10 | 富士施乐株式会社 | 电子装置、控制装置以及控制方法 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5278984A (en) * | 1990-12-19 | 1994-01-11 | Bull Hn Information Systems Inc. | Method for managing requests by specifying time intervals for transmitting a minimum number of messages for specific destinations and priority levels |
US5687390A (en) * | 1995-11-14 | 1997-11-11 | Eccs, Inc. | Hierarchical queues within a storage array (RAID) controller |
US7308700B1 (en) | 1999-12-15 | 2007-12-11 | Stmicroelectronics, Inc. | Network station management system and method |
EP1277317A2 (en) * | 2000-04-22 | 2003-01-22 | Atheros Communications, Inc. | Multi-carrier communication systems employing variable ofdm-symbol rates and number of carriers |
US6775790B2 (en) | 2000-06-02 | 2004-08-10 | Hewlett-Packard Development Company, L.P. | Distributed fine-grained enhancements for distributed table driven I/O mapping |
US6829697B1 (en) * | 2000-09-06 | 2004-12-07 | International Business Machines Corporation | Multiple logical interfaces to a shared coprocessor resource |
US7743147B2 (en) * | 2001-04-20 | 2010-06-22 | Hewlett-Packard Development Company, L.P. | Automated provisioning of computing networks using a network database data model |
US7151744B2 (en) | 2001-09-21 | 2006-12-19 | Slt Logic Llc | Multi-service queuing method and apparatus that provides exhaustive arbitration, load balancing, and support for rapid port failover |
US7756053B2 (en) | 2006-06-30 | 2010-07-13 | Intel Corporation | Memory agent with error hardware |
US8228338B1 (en) | 2006-11-03 | 2012-07-24 | Nvidia Corporation | Hardware override of application programming interface programmed state |
US8307128B2 (en) * | 2006-12-08 | 2012-11-06 | International Business Machines Corporation | System and method to improve sequential serial attached small computer system interface storage device performance |
US7721076B2 (en) * | 2006-12-18 | 2010-05-18 | Intel Corporation | Tracking an oldest processor event using information stored in a register and queue entry |
US7849259B1 (en) * | 2007-02-14 | 2010-12-07 | Marvell International Ltd. | Disk controller response handler for write commands |
US8095829B1 (en) | 2007-11-02 | 2012-01-10 | Nvidia Corporation | Soldier-on mode to control processor error handling behavior |
US8351426B2 (en) * | 2008-03-20 | 2013-01-08 | International Business Machines Corporation | Ethernet virtualization using assisted frame correction |
US8504538B2 (en) * | 2009-03-05 | 2013-08-06 | Matrixx Software, Inc. | Dependent commit queue for a database |
US8839032B2 (en) * | 2009-12-08 | 2014-09-16 | Hewlett-Packard Development Company, L.P. | Managing errors in a data processing system |
US8713357B1 (en) * | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8839037B2 (en) * | 2011-10-05 | 2014-09-16 | Lsi Corporation | Hardware queue for transparent debug |
US9015533B1 (en) | 2011-12-06 | 2015-04-21 | Amazon Technologies, Inc. | Error handling for asynchronous applications |
US9086965B2 (en) * | 2011-12-15 | 2015-07-21 | International Business Machines Corporation | PCI express error handling and recovery action controls |
WO2015041698A1 (en) * | 2013-09-23 | 2015-03-26 | Intel Corporation | Event-triggered storage of data to non-volatile memory |
US20150186068A1 (en) * | 2013-12-27 | 2015-07-02 | Sandisk Technologies Inc. | Command queuing using linked list queues |
US10108372B2 (en) * | 2014-01-27 | 2018-10-23 | Micron Technology, Inc. | Methods and apparatuses for executing a plurality of queued tasks in a memory |
US9454310B2 (en) * | 2014-02-14 | 2016-09-27 | Micron Technology, Inc. | Command queuing |
US10169127B2 (en) * | 2014-03-06 | 2019-01-01 | International Business Machines Corporation | Command execution results verification |
US10061780B2 (en) * | 2014-04-28 | 2018-08-28 | Bank Of America Corporation | Information management command process device |
US9497025B2 (en) * | 2014-09-20 | 2016-11-15 | Innovasic Inc. | Ethernet interface module |
US20160248628A1 (en) * | 2015-02-10 | 2016-08-25 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Queue pair state transition speedup |
KR102367982B1 (ko) * | 2015-06-22 | 2022-02-25 | 삼성전자주식회사 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
US10437483B2 (en) * | 2015-12-17 | 2019-10-08 | Samsung Electronics Co., Ltd. | Computing system with communication mechanism and method of operation thereof |
US10102084B1 (en) * | 2015-12-23 | 2018-10-16 | Github, Inc. | Decoupled maintenance and repository synchronization error detection |
US10216668B2 (en) * | 2016-03-31 | 2019-02-26 | Intel Corporation | Technologies for a distributed hardware queue manager |
US10536441B2 (en) * | 2016-08-23 | 2020-01-14 | Texas Instruments Incorporated | Thread ownership of keys for hardware-accelerated cryptography |
US10503434B2 (en) * | 2017-04-12 | 2019-12-10 | Micron Technology, Inc. | Scalable low-latency storage interface |
US11243899B2 (en) * | 2017-04-28 | 2022-02-08 | International Business Machines Corporation | Forced detaching of applications from DMA-capable PCI mapped devices |
US10210095B2 (en) * | 2017-07-06 | 2019-02-19 | International Business Machines Corporation | Configurable hardware queue management and address translation |
US10528414B2 (en) * | 2017-09-13 | 2020-01-07 | Toshiba Memory Corporation | Centralized error handling in application specific integrated circuits |
US10540219B2 (en) * | 2017-09-13 | 2020-01-21 | Toshiba Memory Corporation | Reset and error handling in application specific integrated circuits |
-
2017
- 2017-09-13 US US15/702,853 patent/US10528414B2/en active Active
-
2018
- 2018-07-20 CN CN201810803166.5A patent/CN109491958B/zh active Active
- 2018-08-20 TW TW107128919A patent/TWI703435B/zh active
- 2018-08-27 EP EP18190922.7A patent/EP3457283B1/en active Active
- 2018-09-06 CN CN201811038075.3A patent/CN109491814A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080300884A1 (en) * | 2007-06-04 | 2008-12-04 | Smith Todd R | Using voice commands from a mobile device to remotely access and control a computer |
CN102473126A (zh) * | 2009-08-11 | 2012-05-23 | 桑迪士克科技股份有限公司 | 提供闪存系统中的读状态和空闲块管理信息的控制器和方法 |
CN102096611A (zh) * | 2009-12-09 | 2011-06-15 | 英特尔公司 | 用于存储器装置中的差错管理的方法和系统 |
CN105843677A (zh) * | 2015-02-04 | 2016-08-10 | 富士施乐株式会社 | 电子装置、控制装置以及控制方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988043A (zh) * | 2019-12-12 | 2021-06-18 | 西部数据技术公司 | 提交队列获取错误的错误恢复 |
CN112988043B (zh) * | 2019-12-12 | 2024-06-07 | 西部数据技术公司 | 用于提交队列获取错误的错误恢复的设备、系统和方法 |
CN113485859A (zh) * | 2021-06-23 | 2021-10-08 | 珠海格力电器股份有限公司 | 故障定位方法、装置、电子设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3457283A1 (en) | 2019-03-20 |
TWI703435B (zh) | 2020-09-01 |
TW201921244A (zh) | 2019-06-01 |
CN109491958A (zh) | 2019-03-19 |
US20190079824A1 (en) | 2019-03-14 |
US10528414B2 (en) | 2020-01-07 |
EP3457283B1 (en) | 2020-07-29 |
CN109491958B (zh) | 2023-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109491814A (zh) | 专用集成电路中的集中式错误处置 | |
US8108570B2 (en) | Determining the state of an I/O operation | |
US7904605B2 (en) | Computer command and response for determining the state of an I/O operation | |
US9483433B2 (en) | Processing communication data in a ships passing condition | |
US10540219B2 (en) | Reset and error handling in application specific integrated circuits | |
US8166206B2 (en) | Cancel instruction and command for determining the state of an I/O operation | |
US8176222B2 (en) | Early termination of an I/O operation in an I/O processing system | |
CA2704131C (en) | Processing of data to monitor input/output operations | |
US7908403B2 (en) | Reserved device access contention reduction | |
US7496691B2 (en) | Standard ATA queuing automation in serial ATA interface for creating a frame information structure (FIS) corresponding to command from transport layer | |
US10761776B2 (en) | Method for handling command in conflict scenario in non-volatile memory express (NVMe) based solid-state drive (SSD) controller | |
US10013367B2 (en) | I/O processing system including dynamic missing interrupt and input/output detection | |
GB2593852A (en) | Handling an input/output store instruction | |
CN116149559A (zh) | 队列处理方法、装置、服务器、电子设备和存储介质 | |
EP1761856A1 (en) | Computer system and method for queuing interrupt messages in a device coupled to a parallel communications bus | |
KR20010110100A (ko) | 데이터 처리 시스템 내의 채널들의 복구를 위한체크포인팅 방법, 프로그램 제품 및 장치 | |
CN118503025A (zh) | 中断丢失检测方法、设备、主机及检测系统 | |
CN118567457A (zh) | 存储设备的复位方法、装置和电子设备以及物理机系统 | |
KR101133879B1 (ko) | 컴퓨터 시스템, 인터럽트 메시지 큐잉 방법 및 제조물 | |
CN118535214A (zh) | 数据库的升级方法及装置、存储介质、计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190319 |