CN109491958A - 错误处理系统和错误处理方法 - Google Patents

错误处理系统和错误处理方法 Download PDF

Info

Publication number
CN109491958A
CN109491958A CN201810803166.5A CN201810803166A CN109491958A CN 109491958 A CN109491958 A CN 109491958A CN 201810803166 A CN201810803166 A CN 201810803166A CN 109491958 A CN109491958 A CN 109491958A
Authority
CN
China
Prior art keywords
error
command
hardware block
error condition
order
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810803166.5A
Other languages
English (en)
Other versions
CN109491958B (zh
Inventor
A·J·汤姆林
J·C·琼斯
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.)
Japanese Businessman Panjaya Co ltd
Original Assignee
Toshiba Memory Corp
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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Publication of CN109491958A publication Critical patent/CN109491958A/zh
Application granted granted Critical
Publication of CN109491958B publication Critical patent/CN109491958B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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
    • 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/0751Error or fault detection not based on redundancy
    • 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
    • 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
    • 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/0766Error or fault reporting or storing
    • 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/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring 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

错误处理系统和错误处理方法
相关申请的交叉引用
本申请基于并要求2017年9月13日提交的美国非临时专利申请15/702,853的优先权的权益,该申请的全部内容通过引用并入本文中。
技术领域
本发明一般地涉及错误处理系统和错误处理方法。
背景技术
诸如片上系统(SoC)设备的现代专用集成电路(ASIC)通常需要以非常高的数据速率操作。为了实现这种高速操作,除了在处理器上运行的固件之外,ASIC设计通常还包括复杂的硬件自动化。具有高水平硬件自动化的ASIC的一个例子是非易失性固态存储驱动器中的存储控制器。在具有高水平硬件自动化的设备中,应该以使得错误命令被限制为对其它命令没有影响的方式处理在执行来自外部主机的命令时的错误。常见的错误处理方案涉及向设备固件发送的中断以及停止正遭受错误的硬件块的操作,或者在硬件块之间传递错误,这导致ASIC设计的显著复杂性。这些错误处理方案还为正遭受命令中的错误的一个硬件块创造了机会以“反压(back pressure)”在执行与该相同命令关联的任务时涉及的其它硬件块。例如,如果某硬件块由于命令遭受错误而停止操作,则需要通过该硬件块完成的任务的所有其它命令的完成将被延迟,直到该错误被清除,从而导致延迟峰值。
通常,遭受错误的每个硬件块将被保持在“错误状态”,直到固件清除该错误。如果两个硬件块同时处于错误状态,则这两个硬件块都将导致系统中的反压,这是一个多错误的极端情况。为了处理这种极端情况而设计的错误处理方案给系统硬件和固件二者都增加了显著的复杂性。这种复杂性要求在制造系统之前对系统的设计进行大量验证测试,这会延迟系统的上市时间。因此,长期以来需要一种用于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。为了便于说明,ASIC 100中的块之间的所有通信路径未在图1中示出。固件120是存储在只读存储器(未示出)中的可执行代码,其由处理单元(未示出)结合易失性存储器(未示出)执行。硬件块A 112、硬件块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的错误消息中,释放与错误命令相关联的所有状态,然后继续下一请求,硬件块A 112、硬件块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处理该请求。通过在试图处理请求之前检查与其功能接口上的每个到来的请求相关联的命令的错误状态,并且放弃(drop)与由错误状态管理器124报告为错误的命令相关联的请求,硬件块A 112、硬件块B 114、硬件块C 116和硬件块D 118中的每一个避免被先前在另一硬件块中遭受错误的命令“感染”。因此,硬件块A 112、硬件块B 114、硬件块C 116和硬件块D118中没有一个会浪费处理与被报告为错误的命令相关联的请求的资源。
图2是根据本发明的图1的错误状态管理器124的一个实施例的图示。错误状态管理器124包括但不限于具有命令标识符(命令ID)索引212和错误状态字段214的错误状态位图210、错误状态逻辑216和错误检查逻辑218。错误状态位图210包括多个行,行数等于在ASIC 100中使用的可能命令标识符的数量(N)。错误状态字段214中的错误状态位表示每个命令的错误状态。在图2的实施例中,具有逻辑值“0”的错误状态位意味着该命令是无错误的,具有逻辑值“1”的错误状态位意味着该命令是错误的。在图2的实施例中,命令4和命令N-1具有“错误”的错误状态。错误状态管理器124从错误队列管理器122接收“错误命令”状态消息以将命令标记为错误的,其中每个消息包括命令标识符。在另一实施例中,当硬件块A 112、硬件块B 114、硬件块C 116和硬件块D 118中的任一个硬件块在执行与命令标识符相关联的任务时遭受错误时,错误状态管理器124从该任一个硬件块接收“错误命令”状态消息。在一个实施例中,错误状态管理器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在硬件块A 112、硬件块B 114、硬件块C 116和硬件块D 118中的每一个与固件120之间提供错误消息传递接口。错误队列管理器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识别已被分配给与错误命令相关的请求的其它硬件块中的资源,并指令这些硬件块释放那些资源。然后,固件120以任何适当的方式处理错误信息,例如通过向主机系统报告错误和/或重新提交要执行的命令。
图4是根据本发明的包括具有集中式错误处理的控制器的固态存储驱动器400的一个实施例的图示。固态存储驱动器400包括但不限于前端子系统410、后端子系统414和多个NAND闪速存储器设备416。前端子系统410提供与主机系统(未示出)的接口,后端子系统414提供与NAND闪速存储器设备416的接口。在图4的实施例中,固态存储驱动器400是双主机系统,其中前端子系统410与两个单独的主机系统接口以接收命令和数据并输出从NAND设备416读取的数据。前端子系统410中的NVM express(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将生成读取子命令组,其中每个子命令被配置为使32KB有效载荷(payload)的一部分从NAND设备416中的一个被读取。在一个实施例中,子命令生成器516被配置为生成各自具有4KB数据有效载荷的子命令。因此,对于调用32KB数据的示例性读取命令,子命令生成器516将生成与该读取命令的命令标识符相关联的8个子命令。每个子命令都包含数据标签,该数据标签标识该子命令。子命令生成器516将子命令发送到子命令执行块518,子命令执行块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所述的错误处理方法,其中所述错误消息进一步包括所述多个硬件块中的所述一个的状态信息。
CN201810803166.5A 2017-09-13 2018-07-20 错误处理系统和错误处理方法 Active CN109491958B (zh)

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/702853 2017-09-13

Publications (2)

Publication Number Publication Date
CN109491958A true CN109491958A (zh) 2019-03-19
CN109491958B CN109491958B (zh) 2023-07-21

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 After (1)

Application Number Title Priority Date Filing Date
CN201811038075.3A Pending CN109491814A (zh) 2017-09-13 2018-09-06 专用集成电路中的集中式错误处置

Country Status (4)

Country Link
US (1) US10528414B2 (zh)
EP (1) EP3457283B1 (zh)
CN (2) CN109491958B (zh)
TW (1) TWI703435B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US11599481B2 (en) * 2019-12-12 2023-03-07 Western Digital Technologies, Inc. Error recovery from submission queue fetching errors
CN113485859A (zh) * 2021-06-23 2021-10-08 珠海格力电器股份有限公司 故障定位方法、装置、电子设备和计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020006167A1 (en) * 2000-04-22 2002-01-17 Mcfarland William Multi-carrier communication systems employing variable symbol rates and number of carriers
CN102473126A (zh) * 2009-08-11 2012-05-23 桑迪士克科技股份有限公司 提供闪存系统中的读状态和空闲块管理信息的控制器和方法
US8713357B1 (en) * 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US20150212738A1 (en) * 2014-01-27 2015-07-30 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US20150254121A1 (en) * 2014-03-06 2015-09-10 International Business Machines Corporation Command execution results verification

Family Cites Families (38)

* Cited by examiner, † Cited by third party
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
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
US9794348B2 (en) * 2007-06-04 2017-10-17 Todd R. Smith Using voice commands from a mobile device to remotely access and control a computer
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
EP2510439B1 (en) * 2009-12-08 2022-05-04 Hewlett Packard Enterprise Development LP Managing errors in a data processing system
US8862973B2 (en) * 2009-12-09 2014-10-14 Intel Corporation Method and system for error management in a memory device
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
DE112013007279T5 (de) * 2013-09-23 2016-05-04 Intel Corporation Ereignisausgelöstes speichern von Daten in einem nicht flüchtigen Speicher
US20150186068A1 (en) * 2013-12-27 2015-07-02 Sandisk Technologies Inc. Command queuing using linked list queues
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
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
JP6413813B2 (ja) * 2015-02-04 2018-10-31 富士ゼロックス株式会社 電子機器、制御装置及びプログラム
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
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020006167A1 (en) * 2000-04-22 2002-01-17 Mcfarland William Multi-carrier communication systems employing variable symbol rates and number of carriers
CN102473126A (zh) * 2009-08-11 2012-05-23 桑迪士克科技股份有限公司 提供闪存系统中的读状态和空闲块管理信息的控制器和方法
US8713357B1 (en) * 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US20150212738A1 (en) * 2014-01-27 2015-07-30 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US20150254121A1 (en) * 2014-03-06 2015-09-10 International Business Machines Corporation Command execution results verification

Also Published As

Publication number Publication date
TWI703435B (zh) 2020-09-01
CN109491958B (zh) 2023-07-21
EP3457283B1 (en) 2020-07-29
TW201921244A (zh) 2019-06-01
US10528414B2 (en) 2020-01-07
US20190079824A1 (en) 2019-03-14
CN109491814A (zh) 2019-03-19
EP3457283A1 (en) 2019-03-20

Similar Documents

Publication Publication Date Title
CN109491958A (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
US8166206B2 (en) Cancel instruction and command 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
US6850994B2 (en) Method for determining status of a computer device and detecting device behavior in response to a status request
CA2704131C (en) Processing of data to monitor input/output operations
US20150134874A1 (en) Determining extended capability of a channel path
US20090210580A1 (en) Early termination of an i/o operation in an i/o processing system
US9442676B2 (en) Method, device, and system for determining drive letter
GB2593852A (en) Handling an input/output store instruction
JP2009536403A (ja) ワーク・アイテム・イベント処理
US20070245111A1 (en) Methods, systems, and computer program products for managing temporary storage
US9417942B1 (en) Event-based in-band host registration
US20160073315A1 (en) Information processing apparatus, storage control apparatus, and information processing method
US20190250593A1 (en) Slave device, control system, communication method for response data and storage medium
EP1999588A1 (en) An apparatus, method and computer program product for generating trace data
US20100036982A1 (en) Interrogate processing for complex i/o link
KR101133879B1 (ko) 컴퓨터 시스템, 인터럽트 메시지 큐잉 방법 및 제조물
CN115407930A (zh) 主机系统及其操作方法
CN118113643A (zh) Dma控制方法、控制器和计算机可读存储介质
JPH06259375A (ja) バス接続装置

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Tokyo, Japan

Applicant after: TOSHIBA MEMORY Corp.

Address before: Tokyo, Japan

Applicant before: Japanese businessman Panjaya Co.,Ltd.

Address after: Tokyo, Japan

Applicant after: Kaixia Co.,Ltd.

Address before: Tokyo, Japan

Applicant before: TOSHIBA MEMORY Corp.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220113

Address after: Tokyo, Japan

Applicant after: Japanese businessman Panjaya Co.,Ltd.

Address before: Tokyo, Japan

Applicant before: TOSHIBA MEMORY Corp.

GR01 Patent grant
GR01 Patent grant