CN110291501A - 计算中的错误校正 - Google Patents

计算中的错误校正 Download PDF

Info

Publication number
CN110291501A
CN110291501A CN201880006508.9A CN201880006508A CN110291501A CN 110291501 A CN110291501 A CN 110291501A CN 201880006508 A CN201880006508 A CN 201880006508A CN 110291501 A CN110291501 A CN 110291501A
Authority
CN
China
Prior art keywords
matrix
mistake
magnitude
expected results
processor
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
CN201880006508.9A
Other languages
English (en)
Other versions
CN110291501B (zh
Inventor
乔纳森·亚历山大·罗斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Groq Inc
Original Assignee
Groq 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 Groq Inc filed Critical Groq Inc
Publication of CN110291501A publication Critical patent/CN110291501A/zh
Application granted granted Critical
Publication of CN110291501B publication Critical patent/CN110291501B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • 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/079Root cause analysis, i.e. error or fault diagnosis
    • 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/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/104Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error using arithmetic codes, i.e. codes which are preserved during operation, e.g. modulo 9 or 11 check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • G06F7/026Magnitude comparison, i.e. determining the relative order of operands based on their numerical value, e.g. window comparator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

这里介绍了检测和/或校正计算中的错误的技术。校正计算中的错误的能力可以提高处理器的速度、降低处理器的功耗并且减小处理器内的晶体管之间的距离,因为可以检测和校正由此生成的错误。在一个实施方式中,以软件或硬件运行的错误校正模块可以通过计算所得到的矩阵中所有元素的预期总和以及所得到的矩阵中所有元素的实际总和来检测矩阵乘法中的错误。当预期总和与得到的总和之间存在差异时,错误校正模块检测到错误。在另一实施方式中,除了检测错误以外,错误校正模块还可以确定错误的位置和量值,从而校正错误的计算。

Description

计算中的错误校正
相关申请的交叉引用
本申请要求于2017年1月11日提交的美国临时专利申请第62/444,950号的优先权,其全部内容通过引用合并入本文。
技术领域
本申请的一个或更多个实施方式涉及在计算期间检测和校正错误,并且更具体地涉及检测和校正矩阵乘法中的错误的方法和系统。
背景技术
在现代处理器中,确定处理器的速度、处理器的功耗和处理器内的晶体管之间的距离,使得处理器中的最不可靠的晶体管可以在没有错误的情况下进行操作。通过增加内部时钟的频率来增加处理器的速度可能导致处理器中的最不可靠的晶体管中的错误。类似地,降低处理器的功耗或减小处理器中的计算单元之间的距离也可能导致错误的计算。
发明内容
本文中所介绍的一个或更多个实施方式可以包括检测和/或校正计算中的错误的技术。校正计算中的错误的能力可以提高处理器的速度、降低处理器的功耗并且减小处理器内的晶体管之间的距离,因为可以检测和校正由此生成的错误。在一个实施方式中,以软件或硬件运行的错误校正模块可以通过计算所得到的矩阵中所有元素的预期总和以及所得到的矩阵中所有元素的实际总和来检测矩阵乘法中的错误。当预期总和与得到的总和之间存在差异时,错误校正模块检测到错误。在另一实施方式中,除了检测错误之外,错误校正模块还可以确定错误的位置和量值,从而校正错误的计算。
附图说明
通过研究以下结合所附权利要求和附图的详细描述,对于本领域技术人员而言,本实施方式的这些和其他目的、特性和特征将变得更加明显,所有这些都形成本说明书的一部分。虽然附图包括各种实施方式的图示,但是附图不意在限制所要求保护的主题。
图1示出了根据一个实施方式的包括电子电路和计算错误校正模块的设备。
图2A示出了根据一个实施方式的非逻辑门。
图2B示出了根据一个实施方式的具有增加的时钟速度的非逻辑门。
图2C示出了根据一个实施方式的具有降低的输入电压的非逻辑门。
图3示出了根据一个实施方式的检测矩阵乘法中的错误的方法。
图4示出了根据一个实施方式的检测和校正矩阵乘法中的错误的方法。
图5示出了根据另一实施方式的检测和校正矩阵乘法中的错误的方法。
图6示出了根据一个实施方式的检测所得到的矩阵中的错误的位置和量值的方法。
图7A示出了根据一个实施方式的用于检测从存储器读取的数据中的错误的错误校正数据结构。
图7B示出了根据另一实施方式的用于检测从存储器读取的数据中的错误的错误校正数据结构。
图8是根据一个实施方式的通过检测和校正矩阵乘法中的错误来提高处理器的效率的方法的流程图。
图9是根据一个实施方式的通过检测矩阵乘法中的错误来提高处理器的效率的方法的流程图。
图10是计算机系统1000的示例形式的机器的图形表示,在计算机系统1000内可以执行用于使机器执行本文中讨论的方法或模块中的任何一个或更多个的一组指令。
具体实施方式
术语
下面给出了贯穿本申请使用的术语、缩写和短语的简要定义。
本说明书中对“一个实施方式”或“实施方式”的引用意味着结合该实施方式描述的特定特征、结构或特性被包括在本公开内容的至少一个实施方式中。在说明书的各个位置中出现的短语“在一个实施方式中”不一定都指代相同的实施方式,也不是与其他实施方式互斥的单独或替选实施方式。此外,描述了可以由一些实施方式而不是由其他实施方式呈现的各种特征。类似地,描述了可能是一些实施方式而不是其他实施方式的要求的各种要求。
除非上下文明确要求,否则在整个说明书和权利要求书中,词语“包括”、“包含”等应被解释为包含性的含义而不是排他性或穷举性的含义;也就是说,“包括但不限于”的含义。如本文中使用的,术语“连接”、“耦接”或其任何变体意指两个或更多个元件之间的直接或间接的任何连接或耦接。元件之间的耦接或连接可以是物理的、逻辑的或其组合。例如,两个装置可以直接耦接,或者经由一个或更多个中间通道或装置耦接。作为另一示例,装置可以以信息可以在其间传递的这样的方式耦接,而不与彼此共享任何物理连接。另外,当在本申请中使用时,词语“本文”、“上文”、“下文”和类似含义的词语应当指代作为整体的本申请,而不是指本申请的任何特定项。在上下文允许的情况下,在具体实施方式中使用单数或复数的词语也可以分别包括复数或单数。关于两个或多个项的列表的词“或”涵盖了该词的所有以下解释:列表中的任何项、列表中的所有项以及列表中的项的任何组合。
如果说明书陈述了部件或特征“可以”、“能够”、“能”或“可能”被包括或具有特性,则该特定部件或特征不需要被包括或具有该特性。
术语“模块”泛指软件、硬件或固件部件(或其任何组合)。模块通常是可以使用指定输入生成有用数据或其他输出的功能部件。模块可以是自包含的,或者可以不是自包含的。应用程序(也称为“应用”)可以包括一个或更多个模块,或者模块可以包括一个或更多个应用程序。
具体实施方式中使用的术语意在以其最广泛的合理方式解释,即使其与某些示例结合使用。在本公开内容的上下文中以及在使用每个术语的特定上下文内,本说明书中使用的术语通常具有其在本领域中的普通含义。为方便起见,可以例如使用大写、斜体和/或引号来突出显示某些术语。突出显示的使用对术语的范围和含义没有影响;术语的范围和含义在相同的上下文中是相同的,无论是否突出显示。应当理解的是,可以以不止一种方式描述相同的元件。
因此,可以针对本文中讨论的任何一个或更多个术语使用替选语言和同义词,而不特别注重本文中是否阐述或讨论了术语。一个或更多个同义词的记载不排除其他同义词的使用。本说明书中任何地方的示例的使用,包括本文中讨论的任何术语的示例,仅是说明性的,并非旨在进一步限制本公开内容或任何示例性术语的范围和含义。类似地,本公开内容不限于本说明书中给出的各种实施方式。
技术
本文中所公开的一个或更多个实施方式可以包括检测和/或校正计算中的错误的技术。校正计算中的错误的能力可以提高处理器的速度、降低处理器的功耗并且减小处理器内的晶体管之间的距离,因为可以检测和校正由此生成的错误。在一个实施方式中,以软件或硬件运行的错误校正模块可以通过计算所得到的矩阵中所有元素的预期总和以及所得到的矩阵中所有元素的实际总和来检测矩阵乘法中的错误。当预期总和与得到的总和之间存在差异时,错误校正模块检测到错误。在另一实施方式中,除了检测错误之外,错误校正模块还可以确定错误的位置和量值,从而校正错误的计算。
图1示出了根据一个实施方式的包括电子电路和计算错误校正模块的设备。错误校正模块100连接至电子电路110。错误校正模块100和电子电路110可以是单个处理器的一部分,或者可以是单独的部件。错误校正模块100可以用硬件实现,或者可以用软件实现。例如,错误校正模块100可以作为包含电子电路110的处理器上的软件指令运行。当电子电路110执行诸如矩阵乘法的计算时,错误校正模块100检测由电子电路110引入的计算错误。错误校正模块100可以检测电子电路110中的计算单元120内的错误。作为另一示例,错误校正模块100可以是包括逻辑门、乘法和加法电路和/或其他电路以执行这些操作的错误校正电路。
电子电路110可以是处理器、微控制器、处理器的一部分或者微控制器的一部分。电子电路110由构建块诸如晶体管、忆阻器、量子计算元件等构成。电子电路110内的计算单元120可以与单个构建块一样小,或者可以是电子电路110内的一组构建块。在一个实施方式中,电子电路110是执行针对机器学习模型的矩阵乘法的处理器。一个矩阵中的值可以是来自机器学习模型的层的权重,而另一矩阵中的值可以是至机器学习模型的层的输入数据(例如,图像数据、音频数据)。然后,两个矩阵由电子电路110相乘在一起,以产生表示机器学习模型的层的输出的得到的矩阵。
图2A示出了根据一个实施方式的非逻辑门。非逻辑门200接收可变输入210并产生与取反的变量输入210等同的输出230。时钟信号220被分成由线240表示的周期(为简洁起见仅标记一个)。线240表示一个时钟周期的结束和下一时钟周期的开始。在每个时钟周期的开始处,当非逻辑门200正常工作时,非逻辑门200产生以下输出:当变量输入210为1时,输出230为0;当变量输入210为0时,输出230为1。
图2B示出了根据一个实施方式的具有增加的时钟速度的非逻辑门。时钟信号220的频率的增加可能导致非逻辑门200产生错误的输出,因为非逻辑门200没有足够的时间在由线240表示的连续时钟周期之间放电。如图2B所示,非逻辑门在时段250中没有适当地放电并且错误地产生输出1而不是0。
图2C示出了根据一个实施方式的具有降低的输入电压的非逻辑门。降低可变输入210的电压可能导致非逻辑门200产生错误的输出,因为输入电压不足以激活通过非逻辑门200的电流的流动。如图2C所示,非逻辑门200在时段260中没有适当地激活并且错误地产生输出0而不是1。
此外,在电子电路印刷期间将逻辑门彼此靠近地放置导致逻辑门中的串扰,从而导致它们产生计算错误。具有检查和校正矩阵乘法中的错误的能力使得处理器设计人员和处理器生产商能够创建更快、更节能且更节省空间的处理器。
图3示出了根据一个实施方式的检测矩阵乘法中的错误的方法。将两个矩阵300和310相乘在一起以获得得到的矩阵320。为了检查得到的矩阵320是否正确,错误校正模块100计算两个矢量330、340。矢量330中的每个元素是矩阵300中的相应列的和。例如,元素350是列355的和。矢量340中的每个元素是矩阵310中的相应行的和。例如,元素360是行365的和。错误校正模块100执行两个矢量330、340的点积以获得预期结果370。错误校正模块100还对得到的矩阵320中的所有元素求和以获得实际结果380。当预期结果370和实际结果380不相等时,错误校正模块100检测到错误。
执行以上描述的方法的益处在于:两个矢量330、340及其点积即预期结果370的创建可能需要比执行两个矩阵300和310的矩阵乘法指数地少的计算。假设矩阵300、310的大小是N×N,其中在图3中,N=8。产生得到的矩阵320的操作的数量是O(N3)。在图3中,计算得到的矩阵320需要针对得到的矩阵320中的每个元素进行8次乘法和7次加法。在得到的矩阵320中存在64个元素,因此产生得到的矩阵320的操作的数量是8*8*(8次乘法+7次加法)=O(83)。产生预期结果370可能需要的操作的数量是O(N2)。在图3中,产生两个矢量330、340中的每个元素需要7次加法。产生矢量330、340的点积需要8次乘法。因此,产生预期结果370可能需要7*16次加法+8次乘法=O(82)。O(N2)比O(N3)小一个指数。因此,执行错误校正比执行矩阵乘法便宜至少一个指数。
执行乘法比执行加法更昂贵。因此,比较矩阵乘法与以上描述的错误检查之间的乘法的数量是错误检查效率的有用量度。矩阵乘法中可能需要的乘法的数量是O(N3)。执行以上描述的错误检查所需的乘法的数量是O(N)。因此,与执行矩阵乘法相比,错误检查中所需的乘法的数量便宜了两个指数。
一旦检测到错误,错误校正模块100就可以记录错误。一旦记录了错误,错误校正模块100就可以做一件或更多件事。例如,错误校正模块100可以向电子电路110发信号以再次执行矩阵乘法。在再次执行整个计算时,电子电路110可以置换行和列,或者置换矩阵300、310的元素的分组,以防止再次发生相同的错误。
此外,错误校正模块100可以测量错误率。当观察到的误差率高于指定阈值例如每秒1个误差、每毫秒1个误差等时,错误校正模块100可以发送应该更换电子电路110的消息。错误率检测在安全关键系统中可能有用,安全关键系统例如自动驾驶汽车、医疗装置、飞行器飞行控制、武器、核系统等中的处理器。了解处理器何时停止可靠地工作是有用的,因为可以要求更换处理器。
类似地,观察错误率可以使得系统能够降低至电子电路110中的输入电压,直到由电子电路产生的错误高于指定阈值例如每秒1个错误、每毫秒1个错误等。调整至电子电路110的电压动态地减少了电子电路110的功耗。
此外,错误校正模块100可以测量电子电路110内的计算单元120的错误率。计算单元120可以与电子电路110内的单个构建块一样小或者可以是电子电路110内的一组构建块。当错误率超过预定义阈值时,错误校正模块100可以动态地调整至其错误率已经超过预定义阈值的计算单元120的电压。
图4示出了根据一个实施方式的检测和校正矩阵乘法中的错误的方法。通常,一旦错误校正模块100确定得到的矩阵320中存在错误,错误校正模块100就可以将得到的矩阵320细分为多个子矩阵,并对每个子矩阵执行相同的错误检测操作。错误校正模块100可以将得到的矩阵如图4所示细分为两个矩阵,细分成三个矩阵,或细分成任意数量的矩阵,只要每个子矩阵包含至少一个元素。
在图4的特定示例中,错误校正模块100将得到的矩阵320细分成两个子矩阵400、410,并且将子矩阵310细分成相应的子矩阵420、430。当矩阵300乘以子矩阵420时,结果是子矩阵400。当矩阵300乘以子矩阵430时,结果是子矩阵410。然后,错误校正模块100对两个得到的子矩阵400、410执行如图3所描述的相同的错误检测操作,以产生两个实际结果440、450。
为了产生两个预期结果460、470,错误校正模块100计算三个矢量330、480、490。以与图3中的矢量330相同的方式计算矢量330。矢量480中的每个元素是子矩阵420中的相应行的和。例如,矢量480中的元素482是子矩阵420中的行484中的元素的和。类似地,矢量490中的每个元素是子矩阵430中的相应行的和。例如,矢量490中的元素492是子矩阵430中的行494中的元素的和。
为了确定得到的子矩阵400、410中是否存在错误,错误校正模块100将预期结果460、470与实际结果440、450进行比较。当预期结果460与实际结果440匹配时,相应的子矩阵400中不存在错误。类似地,当预期结果470与实际结果450匹配时,相应的子矩阵410中不存在错误。相反,当预期结果460与实际结果440不匹配时,不匹配指示子矩阵400包含至少一个错误。当预期结果470与实际结果450不匹配时,不匹配指示子矩阵410包含至少一个错误。由图4可见,结果440和460匹配,因此子矩阵400中不存在错误。结果450和470不匹配,因此子矩阵410中存在错误。
该错误校正模块100沿虚线485继续细分含有错误499的矩阵,直到错误499被发现。本文描述的方法可以用于找到单个得到的矩阵320中的多个错误。
一旦该错误校正模块100找到得到的矩阵320中的一个或更多个错误,错误校正模块100可以向电子电路110发信号以再次执行整个计算。在再次执行整个计算时,电子电路110可以置换行和列或者矩阵300、310的元素的不同分组,以防止再次发生相同的错误。可替选地,错误校正模块100可以执行计算错误元素所需的点积。
图5示出了根据另一实施方式的检测和校正矩阵乘法中的错误的方法。当电子电路110将矩阵300乘以矩阵310时,得到的矩阵320包含错误599。为了检测错误599,错误校正模块100执行比将矩阵310乘以矩阵300所需的计算的数量便宜的多个计算。错误校正模块100计算两个中间矩阵500、510。
中间矩阵500中的每个元素是矩阵300中的相应元素的和。中间矩阵500的第一行中的元素是矩阵300中的相应列的和。例如,中间矩阵500中的元素502是矩阵300中的列504的和。中间矩阵500的第二行中的元素是矩阵300中每个相应列的前四个元素的和。例如,中间矩阵500中的元素506是矩阵300中的列508的一半的和。中间矩阵500的第三行中的元素是矩阵300中每个相应列的第一元素、第二元素、第五元素和第六元素的和。例如,中间矩阵500中的元素518是矩阵300中的元素512的和。最后,中间矩阵500的第四行中的元素是矩阵300中的每个相应列中的交替元素的和。例如,中间矩阵500中的元素514是矩阵300中的元素516的和。
类似地,中间矩阵510是矩阵310中的相应元素的和。中间矩阵510的第一列中的元素是矩阵310中的相应行的和。例如,中间矩阵510中的元素522是矩阵310中的行524的和。中间矩阵510的第二列中的元素是矩阵310中每个相应行的前四个元素的和。例如,中间矩阵510中的元素526是矩阵310中的行528的一半的和。中间矩阵510的第三列中的元素是矩阵310中每个相应行的第一元素、第二元素、第五元素和第六元素的和。例如,中间矩阵510中的元素530是矩阵310中的元素532的和。最后,中间矩阵510的第四列中的元素是矩阵310中的每个相应行中的交替元素的和。例如,中间矩阵510中的元素534是矩阵310中的元素536的和。
中间矩阵500、510被部分相乘以产生部分矩阵520。部分矩阵520中的每个元素是包含在得到的矩阵320中的多个项的元素的预期总和。得到的矩阵320中的项可以是整个得到的矩阵320或得到的矩阵320中的一组元素。得到的矩阵320中的该组元素可以是邻接的或非邻接的。
部分矩阵560中的每个元素是包含在得到的矩阵320中的多个项的元素的实际总和。例如,每个元素550、552、554、556分别是多个项540、542、544、546的元素的和。换句话说,元素550是项540中所有元素的和;元素552是项542中所有元素的和;元素554是项544中所有元素的和;元素556是项546中所有元素的和。
类似地,元素562、564、566是包含在得到的矩阵320中的另外多个项的元素的和。假设矩阵320包含行0至行7和列0至列7,其中矩阵320的左上角是行0和列0的交集。因此,元素562等于行0至行3中所有元素的和。元素564等于行0至行1和行4至行5中所有元素的和。元素566等于行0、行2、行4、行6中所有元素的和。
如图5所示,部分矩阵520和560中的元素具有一对一的对应关系。当得到的矩阵320不包含任何错误时,部分矩阵520和部分矩阵560中的相应元素相等。然而,如图5所示,当得到的矩阵320包含错误时,部分矩阵520中的元素与部分矩阵560中的相应元素之间存在差异。
如本文所描述的,执行矩阵乘法所需的操作的数量是O(N3),其中NxN是输入矩阵300、310以及得到的矩阵320的大小。产生部分矩阵520所需的操作的数量是针对2个矩阵500、510中的每个元素的N次加法,以及针对部分矩阵520中的每个元素的N次乘法。在两个矩阵500、510中总共存在N2个元素。在部分矩阵520中存在(log2N)*2+1个元素。因此,产生部分矩阵520所需的操作的数量是N次加法*N2+N次乘法*((log2N)*2+1)=O(N3)。鉴于乘法比加法更昂贵,比较乘法的数量是错误检查效率的重要量度。矩阵乘法中的乘法的数量是O(N3),而检测错误的位置和量值的乘法的数量是(N*log2N)。因此,错误检查中的乘法的数量至少比矩阵乘法中的乘法的数量指数地少。
图6示出了根据一个实施方式的检测得到的矩阵中的错误的位置和量值的方法。部分矩阵520中的每个元素对应于部分矩阵560中的一个元素。如本文所描述的,部分矩阵560中的每个元素是包含在得到的矩阵320中的多个项的元素的实际总和。当部分矩阵520中的元素与部分矩阵560中的相应元素不匹配时,这意味着得到的矩阵320中的相应项包含错误。为了检测错误的位置和量值,错误校正模块100将部分矩阵520中的每个元素与部分矩阵560中的相应元素进行比较。
为了检测得到的矩阵320中的发生错误的列,错误校正模块100将部分矩阵520中的元素652与部分矩阵560中的元素552进行比较。当元素652和元素552相等时,错误校正模块100在位600中记录值1。当元素652和元素552不相等时,错误校正模块100在位600中记录值0。错误校正模块100将部分矩阵520中的元素654与部分矩阵560中的元素554进行比较,并根据元素是否相等分别在位610中记录1或0。为了生成位620,错误校正模块100将元素656和元素556进行比较。被解释为二进制数的三个位600、610、620产生得到的矩阵320中的错误599的列位置。找到错误599的列位置可能需要的位600、610、620的数量根据得到的矩阵320的大小而变化。假设得到的矩阵320的大小为N列。找到错误599的列位置所需的位的数量等于(log2N)+1。
类似地,为了检测得到的矩阵320中的发生错误的行,错误校正模块100将部分矩阵520中的元素660与部分矩阵560中的元素561进行比较。当元素660和元素561相等时,错误校正模块100在位630中记录值1。当元素660和元素561不相等时,错误校正模块100在位630中记录值0。错误校正模块100将部分矩阵520中的元素662与部分矩阵560中的元素562进行比较,并根据元素是否相等分别在位640中记录1或0。为了生成位650,错误校正模块100将元素664和元素564进行比较。被解释为二进制数的三个位630、640、650产生得到的矩阵320中的错误599的行位置。找到错误599的列位置需要的位630、640、650的数量根据得到的矩阵320的大小而变化。假设得到的矩阵320的大小为M行。找到错误599的行位置所需的位的数量等于(log2M)+1。
在图6中,仅部分矩阵520中的元素660、662与它们在部分矩阵560中的对应元素561、562不同。因此,错误元素的列位置是7并且错误元素的行位置是1,这表明错误599作为错误的元素。所有元素对660、561和662、562相差1,并且该差表示错误599中的错误的量值。错误校正模块100校正矩阵320中的错误599以产生经校正的最终结果,即矩阵670。
图7A示出了根据一个实施方式的用于检测从存储器读取的数据中的错误的错误校正数据结构。用于检测错误的错误校正数据结构700包括矩阵710和错误校正码720,错误校正码720等于矩阵710中所有元素的和。矩阵710可以作为阵列、作为三元组(triplet)表示、链接表示等被存储在存储器中。错误校正码720可以作为整数、浮点数等被存储在存储器中。错误校正码720可以是错误校正数据结构700中的第一元素,之后是矩阵710,或者矩阵710可以是错误校正数据结构700中的第一元素,之后是错误校正码720。错误校正模块100可以计算错误校正码720并将错误校正码720以及矩阵710存储在存储器中,从而创建错误校正数据结构700。
存储错误校正数据结构700的存储器可以是诸如闪存的半导体存储器、诸如硬盘驱动器的磁存储器、诸如CD(压缩盘)或DVD(数字通用盘)的光学存储器等。存储器可能由于外部影响例如电场、磁场、宇宙射线、阿尔法辐射、伽马辐射、错误的存储器读取等而被损坏。由于错误校正码720中的冗余信息,因此在使用错误校正数据结构700时可以更容易地检测到存储器损坏。
具体地,当从存储器读取矩阵710时,错误校正模块100可以执行对矩阵710中的所有元素的求和。如果求和的结果与错误校正码720不匹配,则检测到错误。该错误更可能存在于矩阵710中而不是错误校正码720中,因为矩阵710具有更大的大小并因此更可能被损坏。
图7B示出了根据另一实施方式的用于检测从存储器读取的数据中的错误的错误校正数据结构。错误校正数据结构700包括矩阵710和错误校正码730。错误校正码730可以被存储为阵列、链表等。错误校正码730包含矩阵中各项的预期总和。矩阵中的各项可以是如图5中所示的540、542、544、546。
当从存储器读取矩阵710时,错误校正模块100可以执行对矩阵710中的各项例如如图5中所示的项540、542、544、546的求和。错误校正模块100还读取所存储的错误校正码730。当至少一个存储的错误校正码730与各项的至少一个求和不匹配时,错误校正模块100如图6所描述地检测错误的位置和量值并校正错误。
图8是根据一个实施方式的通过检测和校正矩阵乘法中的错误来提高处理器效率的方法的流程图。在步骤800中,提高处理器的效率,从而导致来自处理器的错误输出的增加。提高处理器的效率包括:在保持处理性能相同的同时,降低处理器的功耗,增加处理器的时钟速度,或者将处理器的构建块放置得更靠近彼此,从而减小处理器的大小。处理器的构建块可以是晶体管、忆阻器、量子计算元件等。
在步骤810中,计算装置例如图1中的处理器和/或电子电路110将第一矩阵与第二矩阵相乘以获得得到的矩阵。在步骤820中,错误校正模块通过执行多个计算有效地校正得到的矩阵中的错误,其中,多个计算与将第一矩阵与第二矩阵相乘相比更便宜。
例如,为了检测得到的矩阵中的错误,错误校正模块100针对得到的矩阵的多个项例如图5中的540、542、544基于第一矩阵的相应多个项和第二矩阵的相应多个项来计算多个预期结果,例如图5中的部分矩阵520。得到的矩阵320中的项可以是整个得到的矩阵320或得到的矩阵320中的一组元素。得到的矩阵320中的该组元素可以是邻接的或非邻接的。
错误校正模块100基于得到的矩阵来计算针对得到的矩阵的多个项例如图5中的540、542、544的多个实际结果,例如图5中的部分矩阵560。可以通过对图5中的多个项540、542、544中的每个项中的所有元素进行求和来计算多个实际结果。当多个预期结果中的至少一个预期结果与多个实际结果中的相应实际结果不同时,错误校正模块检测到错误。在检测到错误时,基于至少一个预期结果与相应的实际结果之间的差,错误校正模块100校正错误。
例如,在图6中,错误校正模块100确定预期结果660比实际结果561小1。因此,错误校正模块100将得到的矩阵中的错误结果减小1。可以如整个说明书描述的例如如图6所描述的找到错误的位置。
图9是根据一个实施方式的通过检测矩阵乘法中的错误来提高处理器效率的方法的流程图。计算装置例如图1中的处理器或电子电路110将第一矩阵与第二矩阵相乘以获得得到的矩阵。错误校正模块通过执行多个计算有效地检测得到的矩阵中的错误,使得计算的数量少于将第一矩阵与第二矩阵相乘所需的计算的数量。
为了有效地检测错误,错误校正模块100执行以下步骤。在步骤900中,错误校正模块100基于第一矩阵的项和第二矩阵的项来计算针对得到的矩阵的项的预期结果。当第一矩阵的项与第二矩阵的项相乘时,产生得到的矩阵的项。矩阵中的项可以是整个矩阵或矩阵中的一组元素。矩阵中的该组元素可以是邻接的或非邻接的。
例如,基于第一矩阵的项和第二矩阵的项来计算针对得到的矩阵的项的预期结果可以包括:错误校正模块100确定图3中的与图3中的得到的矩阵320相关联的所有元素的预期总和370。
在步骤910中,错误校正模块100基于得到的矩阵来计算针对得到的矩阵的项的一个或更多个实际结果,如图3中所说明的。例如,为了计算针对得到的矩阵的项的一个或更多个实际结果,错误校正模块100可以确定图3中的与图3中的得到的矩阵320相关联的所有元素的实际总和380。在步骤920中,错误校正模块100在预期结果例如图3中的预期结果370与实际结果例如图3中的实际结果380不同时检测到错误。
此外,错误校正模块100可以监测错误的错误率。当错误率高于预定义阈值时,错误校正模块100可以执行以下中的一个或更多个:生成改变计算装置的通知;动态地调节输入到计算装置的电压;向计算装置发信号以重复矩阵计算等。预定义阈值可以是每秒1个错误、每分钟1个错误等,这取决于可以校正多少位错误并且取决于使用情况。错误校正模块100可以动态地调整进入整个计算装置或者计算装置内的计算单元的电压,其中计算单元可以包括计算装置的一个或更多个构建块。
错误校正模块100可以以各种方式检测得到的矩阵中的错误的位置和量值。一旦检测到错误的位置和量值,错误校正模块100就可以校正得到的矩阵中的错误。
在一个实施方式中,错误校正模块100计算针对得到的矩阵的多个部分例如图5中的540、542、544的多个预期结果,例如图5中的部分矩阵520。错误校正模块100基于第一矩阵的相应多个项和第二矩阵的相应多个项来计算多个预期结果,例如图5中的部分矩阵520。错误校正模块100计算针对得到的矩阵的多个项例如540、542、544的多个相应实际结果,例如图5中的部分矩阵560。计算多个相应实际结果例如图5中的部分矩阵560可以包括:对得到的矩阵的每个部分例如图5中的540、542、544中的所有元素进行求和。错误校正模块100将多个预期结果即图5中的部分矩阵520与多个相应的实际结果即图5中的部分矩阵560进行比较。当包含在图5中的部分矩阵520中的多个预期结果中的至少一个预期结果与包含在图5中的部分矩阵560中的多个相应的实际结果中的相应实际结果不同时,错误校正模块100计算得到的矩阵中的错误的位置和量值,如本文中所描述的。
在另一实施方式中,错误校正模块100使用二分搜索来计算错误的位置和量值。在检测到错误时,错误校正模块100将得到的矩阵分成多个子矩阵,直到多个子矩阵中的最小矩阵包含一个错误元素,如图4所示。一旦图4中的错误499被找到,可以以各种方式校正错误499。例如,可以再次执行矩阵乘法,或者可以将第一矩阵中的相应行乘以第二矩阵中的相应列以产生代替错误499的校正元素。
错误校正模块100可以检测存储在存储器例如闪存、硬盘等中的数据的损坏。在存储矩阵之前,错误校正模块100计算矩阵中所有元素的和,并且将所有矩阵元素的和以及矩阵共同存储在存储器中,例如如图7A所示。在从存储器中读取矩阵时,可能由于损坏的存储装置或读取错误而出现错误。在读取存储器的矩阵时,错误校正模块100对读取矩阵的所有元素进行求和,并将得到的总和与存储在存储器中的和进行比较。在得到的总和与存储在存储器中的和不同时,错误校正模块100报告错误。另外,如图7B所描述的,错误校正模块100可以检测并校正错误。
其他考虑
本文所公开的至少一个实施方式是一种增加处理器的效率从而导致来自处理器的错误输出增加的方法。该方法包括:将第一矩阵和第二矩阵相乘,所述将第一矩阵和第二矩阵相乘包括获得得到的矩阵;以及通过执行多个乘法计算有效地校正得到的矩阵中的错误,其中多个乘法计算比所述将第一矩阵和第二矩阵相乘指数地便宜。检测得到的矩阵中的错误包括:针对得到的矩阵的多个项,基于第一矩阵的相应多个项和第二矩阵的相应多个项来计算多个预期结果;基于得到的矩阵来计算针对得到的矩阵的多个项的多个实际结果;以及当多个预期结果中的至少一个预期结果与多个实际结果中的相应实际结果不同时,检测到错误。在检测到错误时,基于至少一个预期结果与相应的实际结果之间的差来校正错误。
本文公开的至少一个实施方式是一种方法,该方法包括:获得第一矩阵、第二矩阵和得到的矩阵,得到的矩阵包括将第一矩阵乘以第二矩阵的结果;以及通过执行多个计算有效地检测得到的矩阵中的错误,其中计算的数量至少指数地少于所述将第一矩阵和第二矩阵相乘所需的计算的数量。有效地检测得到的矩阵中的错误包括:基于第一矩阵的项和第二矩阵的项来计算针对得到的矩阵的项的预期结果,其中第一矩阵的项和第二矩阵的项组合以产生得到的矩阵的项,其中得到的矩阵的项包括整个矩阵或整个矩阵的一部分中的至少之一,第一矩阵的相应项包括整个第一矩阵或整个第一矩阵的一部分中的至少之一,第二矩阵的相应项包括整个第二矩阵或整个第二矩阵的一部分中的至少之一;基于得到的矩阵来计算针对得到的矩阵的项的一个或更多个实际结果;以及当预期结果与实际结果不同时,检测到错误。该方法还包括基于检测到的错误的错误率来调整输入至执行矩阵乘法的计算装置的电压。
该方法包括:当错误率高于预定义阈值时,生成改变执行矩阵乘法的计算装置的通知。该方法包括:当错误率低于预定义阈值时,动态地减小输入至执行矩阵乘法的计算装置的电压。该方法包括:在检测到错误时,使执行矩阵乘法的计算装置重复矩阵乘法。
有效地检测得到的矩阵中的错误可以包括:确定与得到的矩阵相关联的所有元素的预期总和;确定与得到的矩阵相关联的所有元素的实际总和;以及当预期总和与实际总和不同时,检测到错误。
该方法包括检测得到的矩阵中的错误的位置和量值;并且校正得到的矩阵中的错误。检测得到的矩阵中的错误的位置和量值包括:基于第一矩阵的相应多个部分和第二矩阵的相应多个部分来计算针对得到的矩阵的多个部分的多个预期结果;基于得到的矩阵来计算针对得到的矩阵的多个部分的多个相应的实际结果;以及将多个预期结果与多个相应的实际结果进行比较。该方法包括当多个预期结果中的至少一个预期结果与多个相应的实际结果中的相应实际结果不同时,计算得到的矩阵中的错误的位置和量值。
该方法包括:计算矩阵中所有元素的和;并且将矩阵中所有元素的和以及矩阵共同存储在存储器中。
该方法包括:从存储器中读取矩阵以及所有元素的和;以及当从存储器读取的矩阵中的所有元素的和不等于从存储器读取的所有元素的和时,检测到错误。
该方法包括:在检测到错误时,将得到的矩阵划分为多个子矩阵,直到多个子矩阵中的最小矩阵包含一个错误元素;以及校正错误元素。
本公开内容的至少一个实施方式包括一种设备,该设备包括:计算装置,其将第一矩阵和第二矩阵相乘以获得得到的矩阵,计算装置以增加的时钟速度运行;以及错误校正模块,其通过执行多个乘法计算和多个加法计算来有效地检测得到的矩阵中的错误的位置和量值,其中乘法计算的数量至少指数地少于将第一矩阵和第二矩阵相乘所需的乘法计算的数量。
错误校正模块可以基于第一矩阵的项和第二矩阵的项来计算针对得到的矩阵的项的预期结果,其中第一矩阵的项和第二矩阵的项组合以产生得到的矩阵的项,其中得到的矩阵的项包括整个矩阵或整个矩阵的一部分中的至少之一,第一矩阵的相应项包括整个第一矩阵或整个第一矩阵的一部分中的至少之一,第二矩阵的相应项包括整个第二矩阵或整个第二矩阵的一部分中的至少之一;基于得到的矩阵来计算针对得到的矩阵的项的一个或更多个实际结果;以及当预期结果与实际结果不同时,检测到错误。
错误校正模块可以监测与错误相关联的错误率;并且当错误率高于预定义阈值时,生成改变计算装置的通知。
错误校正模块可以确定计算装置的产生错误的计算单元,其中计算单元是计算装置的一部分;并且增加输入至计算单元的电压。
错误校正模块可以监测与错误相关联的错误率;并且当错误率高于预定义阈值时,动态地调整输入至计算装置的电压。
错误校正模块可以确定与得到的矩阵相关联的所有元素的预期总和;确定与得到的矩阵相关联的所有元素的实际总和;以及当预期总和与实际总和不同时,检测到错误。
错误校正模块可以校正得到的矩阵中的错误。
计算装置可以在由错误校正模块检测到错误时将第一矩阵和第二矩阵相乘。
在通过错误校正模块检测到错误时,计算装置可以对第一矩阵中的第一组元素以及第二矩阵中的第二组元素进行置换;将经置换的第一矩阵和经置换的第二矩阵相乘以获得置换的得到的矩阵;以及对置换的得到的矩阵中的一组元素进行置换以获得得到的矩阵。
错误校正模块可以计算矩阵中所有元素的和;将所有元素的和以及矩阵共同存储在存储器中;从存储器中读取矩阵以及所有元素的和;以及当从存储器读取的矩阵中的所有元素的和不等于从存储器读取的所有元素的和时,检测到错误。
错误校正模块可以在检测到错误时,将得到的矩阵划分为多个子矩阵,直到多个子矩阵中的最小矩阵包含一个错误元素;并且校正错误元素。
本公开内容的至少一个实施方式包括一种设备。该设备包括计算装置,其将第一矩阵和第二矩阵相乘以获得得到的矩阵。该设备包括存储指令的非暂态计算机可读介质。指令在由处理器执行时使处理器:通过执行多个乘法计算来检测得到的矩阵中的错误的位置和量值,其中乘法计算的数量少于将第一矩阵和第二矩阵相乘涉及的乘法计算的数量;并且基于错误的位置和量值来校正得到的矩阵中的错误。
错误的位置和量值可以通过以下操作来检测:针对得到的矩阵的多个项,基于第一矩阵的相应多个项和第二矩阵的相应多个项来计算多个预期结果;基于得到的矩阵来计算针对得到的矩阵的多个项的多个实际结果;以及响应于多个预期结果中的预期结果与多个实际结果中的相应实际结果不同来检测错误的位置和量值。
可以将错误的量值确定为多个预期结果中的预期结果与多个实际结果中的相应实际结果之间的差。可以通过基于预期结果和实际结果检测错误的列并且检测错误的行来检测错误的位置。
指令可以使处理器:监测与错误相关联的错误率;并且响应于错误率高于预定义阈值,生成改变计算装置的通知。
指令可以使处理器:确定计算装置的产生错误的计算单元并且增加输入至计算单元的电压。
指令可以使处理器:监测与错误相关联的错误率;并且响应于错误率高于预定义阈值,动态地调整输入至计算装置的电压。
指令可以使处理器:使计算装置响应于检测到错误来重复第一矩阵和第二矩阵的相乘。
计算装置可以响应于检测到错误:对第一矩阵中的第一组元素以及第二矩阵中的第二组元素进行置换;将经置换的第一矩阵和经置换的第二矩阵相乘以获得置换的得到的矩阵;以及对置换的得到的矩阵中的一组元素进行置换以获得得到的矩阵。
本公开内容的至少一个实施方式包括一种设备。该设备包括计算装置,其将第一矩阵和第二矩阵相乘以获得得到的矩阵。该设备包括错误校正电路,其通过执行多个乘法计算来检测得到的矩阵中的错误的位置和量值,其中乘法计算的数量少于将第一矩阵和第二矩阵相乘涉及的乘法计算的数量。错误校正电路基于错误的位置和量值来校正得到的矩阵中的错误。
错误校正电路可以通过以下操作来检测错误的位置和量值:针对得到的矩阵的多个项,基于第一矩阵的相应多个项和第二矩阵的相应多个项来计算多个预期结果;基于得到的矩阵来计算针对得到的矩阵的多个项的多个实际结果;以及响应于多个预期结果中的预期结果与多个实际结果中的相应实际结果不同来检测错误的位置和量值。
计算机
图10是计算机系统1000的示例形式的机器的图形表示,在计算机系统1000内可以执行用于使机器执行本文所讨论的方法或模块中的任何一个或更多个的一组指令。
在图10的示例中,计算机系统1000包括处理器、存储器、非易失性存储器和接口装置。处理器可以执行说明书中描述的矩阵乘法。错误校正模块100可以是处理器的硬件部件,可以作为处理器上的软件运行,以及/或者可以是如图10中所示的单独错误校正模块。为了说明简单,省略了各种通用部件(例如,高速缓冲存储器)。计算机系统1000旨在示出硬件装置,在该硬件装置上可以实现图1至图9的示例中描述的任何部件(以及本说明书中描述的任何其他部件)。计算机系统1000可以是任何适用的已知或方便类型。计算机系统1000的部件可以经由总线或通过一些其他已知或方便的装置耦接在一起。
本公开内容设想计算机系统1000采用任何合适的物理形式。作为示例而非作为限制,计算机系统1000可以是嵌入式计算机系统、片上系统(SOC)、单板计算机系统(SBC)(例如,模块上计算机(COM)或模块上系统(SOM))、台式计算机系统、膝上型计算机或笔记本计算机系统、交互亭(kiosk)、大型机、计算机系统网、移动电话、个人数字助理(PDA)、服务器或这些中的两个或更多个的组合。在适当的情况下,计算机系统1000可以包括一个或更多个计算机系统1000;一个或更多个计算机系统1000是单元的或分布的;跨越多个位置;跨越多个机器;或者驻留在云中,云可以包括一个或更多个网络中的一个或更多个云部件。在适当的情况下,一个或更多个计算机系统1000可以在没有实质空间或时间限制的情况下执行本文中描述或示出的一个或更多个方法的一个或更多个步骤。作为示例而非作为限制,一个或更多个计算机系统1000可以实时地或以批量模式执行本文中描述或示出的一个或更多个方法的一个或更多个步骤。在适当的情况下,一个或更多个计算机系统1000可以在不同时间或在不同位置执行本文中描述或示出的一个或更多个方法的一个或更多个步骤。
处理器可以是例如传统的微处理器,例如Intel Pentium微处理器或Motorolapower PC微处理器。相关领域的技术人员将认识到,术语“机器可读(存储)介质”或“计算机可读(存储)介质”包括可由处理器访问的任何类型的装置。
存储器通过例如总线耦接至处理器。作为示例而非限制,存储器可以包括随机存取存储器(RAM),诸如动态RAM(DRAM)和静态RAM(SRAM)。存储器可以是本地的、远程的或分布式的。
总线还将处理器耦接至非易失性存储器和驱动单元。非易失性存储器通常是磁性软盘或硬盘、磁光盘、光盘、只读存储器(ROM)(例如CD-ROM、EPROM或EEPROM)、磁卡或光卡或针对大量数据的其他形式的存储装置。在计算机1000中执行软件期间,这些数据中的一些通常通过直接存储器访问过程写入存储器。非易失性存储装置可以是本地的、远程的或分布式的。非易失性存储器是可选的,因为可以使用存储器中可用的所有适用数据来创建系统。典型的计算机系统通常至少包括处理器、存储器和将存储器耦接至处理器的装置(例如总线)。
软件通常被存储在非易失性存储器和/或驱动单元中。实际上,甚至不可能将整个大型程序存储在存储器中。然而,应该理解的是,对于要运行的软件,如果需要,将其移动到适于处理的计算机可读位置,并且为了说明的目的,该位置在本申请中被称为存储器。即使将软件移动到存储器用于执行,处理器通常也会利用用于存储与软件相关联的值的硬件寄存器和理想情况下用于加速执行的本地高速缓存。如本文所使用的,当软件程序被称为“在计算机可读介质中实现”时,假设软件程序存储在任何已知或方便的位置(从非易失性存储装置到硬件寄存器)。当与程序相关联的至少一个值存储在处理器可读的寄存器中时,处理器被认为是“被配置成执行程序”。
总线还将处理器耦接至网络接口装置。该接口可以包括调制解调器或网络接口中的一个或更多个。将理解的是,调制解调器或网络接口可以被认为是计算机系统1000的一部分。接口可以包括模拟调制解调器、ISDN调制解调器、电缆调制解调器、令牌环接口、卫星传输接口(例如,“直接PC”)或用于将计算机系统耦接至其他计算机系统的其他接口。接口可以包括一个或更多个输入和/或输出装置。作为示例而非限制,I/O装置可以包括键盘、鼠标或其他指向装置、磁盘驱动器、打印机、扫描仪以及包括显示装置的其他输入和/或输出装置。作为示例而非限制,显示装置可以包括阴极射线管(CRT)、液晶显示器(LCD)或一些其他适用的已知或方便的显示装置。为简单起见,假设未在图10的示例中描绘的任何装置的控制器驻留在接口中。
在操作中,计算机系统1000可以由包括文件管理系统例如磁盘操作系统的操作系统软件控制。具有相关联文件管理系统软件的操作系统软件的一个示例是来自华盛顿州雷蒙德市的微软公司的称为的操作系统系列及其相关联的文件管理系统。具有其相关联文件管理系统软件的操作系统软件的另一示例是LinuxTM操作系统及其相关联的文件管理系统。文件管理系统通常存储在非易失性存储器和/或驱动单元中,并使处理器执行操作系统所需的各种动作以输入和输出数据并将数据存储在存储器中,包括将文件存储在非易失性存储器和/或驱动单元上。
可以按照对计算机存储器内的数据位的操作的算法和符号表示来呈现具体实施方式的一些项。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们工作的实质传达给本领域其他技术人员的手段。这里算法通常被认为是导致期望结果的操作的自洽序列。操作是需要物理操纵物理量的操作。通常,尽管不是必须的,这些量采用能够被存储、传输、组合、比较和/或以其他方式操纵的电信号或磁信号的形式。已经证明,有时、主要出于通用的原因将这些信号称为位、值、元素、符号、字符、术语、数字等是方便的。
然而,应当记住的是,所有这些和类似术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非从以下讨论中明确说明,否则应理解的是,在整个说明书中,利用诸如“处理”或“计算(computing)”或“计算(calculating)”或“确定”或“显示”或“生成”等术语的讨论涉及计算机系统或类似电子计算装置的动作和处理,其将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵并转换成类似地表示为计算机系统存储器或寄存器或者其他这样的信息存储、传输或显示装置内的物理量的其他数据。
本文中呈现的算法和显示并非固有地与任何特定计算机或其他设备相关。可以根据本文中的教导将各种通用系统与程序一起使用,或者可以证明构造更专用的设备以执行一些实施方式的方法是方便的。根据下面的描述,各种这些系统的所需结构将明显。另外,没有参考任何特定编程语言描述这些技术,并且因此可以使用各种编程语言来实现各种实施方式。
在替选实施方式中,机器作为独立装置操作或者可以连接(例如,联网)至其他机器。在联网部署中,机器可以在客户端服务器网络环境中以服务器或客户端机器的身份操作,或者在对等(或分布式)网络环境中作为对等机器操作。
机器可以是服务器计算机、客户端计算机、个人计算机(PC)、平板PC、膝上型计算机、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、苹果手机、黑莓、处理器、电话、网络设备、网络路由器、交换机或网桥或能够执行指定该机器要采取的动作的一组指令(顺序地或以其他方式)的任何机器。
虽然机器可读介质或机器可读存储介质在示例性实施方式中被示为单个介质,但是术语“机器可读介质”和“机器可读存储介质”应被视为包括存储一个或更多个指令集的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机器可读介质”和“机器可读存储介质”还应被视为包括能够存储、编码或携带用于由机器执行并且使机器执行本公开技术和创新的方法或模块中的任一个或更多个的一组指令的任何介质。
通常,被执行以实现本公开内容的实施方式的例程可以被实现为操作系统或被称为“计算机程序”的特定应用、部件、程序、对象、模块或指令序列的一部分。计算机程序通常包括在计算机中的各个存储器和存储装置中在不同时间设置的一个或更多个指令,当由计算机中的一个或更多个处理单元或处理器读取和执行指令时,指令使计算机执行操作以执行涉及本公开内容的各方面的元素。
此外,虽然在完全运行的计算机和计算机系统的上下文中描述了实施方式,但是本领域技术人员将理解的是,各个实施方式能够作为程序产品以各种形式被分布,并且无论用于实际影响分布的特定类型的机器或计算机可读介质如何,公开内容均适用。
机器可读存储介质、机器可读介质或计算机可读(存储)介质的其他示例包括但不限于:可记录类型介质例如易失性和非易失性存储器装置、软盘和其他可移动盘、硬盘驱动器、光盘(例如,压缩盘只读存储器(CD ROM)、数字通用盘(DVD)等)等,以及传输类型介质例如数字和模拟通信链路。
在一些情况下,存储器装置的操作,例如,状态从二进制1变为二进制0或从二进制0变为二进制1,可以例如包括变换,例如物理变换。对于特定类型的存储器装置,这样的物理变换可以包括物品向不同状态或事物的物理变换。例如但不限于,对于某些类型的存储器装置,状态的改变可以涉及电荷的累积和存储或存储的电荷的释放。同样地,在其他存储器装置中,状态的变化可以包括磁取向的物理变化或变换或分子结构的物理变化或变换,例如从晶体到非晶体或从非晶体到晶体。前述内容并非旨在是穷举列表,其中存储器装置中二进制1至二进制0的状态的变化或二进制0至二进制1的状态的变化可以包括变换,例如物理变换。更确切地说,前述内容旨在作为说明性示例。
存储介质通常可以是非暂态的或包括非暂态装置。在该上下文中,非暂态存储介质可以包括有形的装置,有形意味着该装置具有具体的物理形式,尽管该装置可以改变其物理状态。因此,例如,非暂态涉及尽管状态发生该变化仍然保持有形的装置。
附注
已经出于说明和描述的目的提供了所要求保护的主题的各种实施方式的前述描述。其并非旨在穷举或将所要求保护的主题限制为所公开的精确形式。许多修改和变化对于本领域技术人员来说是明显的。选择并描述实施方式以最好地描述本发明的原理及其实际应用,从而使相关领域的其他技术人员能够理解所要求保护的主题、各种实施方式以及设想的适合于特定用途的各种修改。
尽管已经在完全运行的计算机和计算机系统的上下文中描述了实施方式,但是本领域技术人员将理解的是,各个实施方式能够作为程序产品以各种形式分布,并且无论用于实际影响分布的特定类型的机器或计算机可读介质如何,本公开内容均适用。
尽管上面的具体实施方式描述了设想的某些实施方式和最佳模式,但无论上面在文本中如何详细描述,实施方式都可以以多种方式实践。系统和方法的细节可以在其实现细节方面显著变化,然而仍然包含在说明书中。如上面提到的,在描述各种实施方式的某些特征或方面时使用的特定术语不应被视为暗示本文中重新定义术语以限制与该术语相关联的本发明的任何特定特性、特征或方面。通常,所附权利要求中使用的术语不应被解释为将本发明限制于说明书中公开的特定实施方式,除非这些术语在本文中明确定义。因此,本发明的实际范围不仅包括所公开的实施方式,还包括按照权利要求实践或实现实施方式的所有等同方式。
说明书中使用的语言主要是出于可读性和指导目的而选择的,并且所述语言可能未被选择以描绘或限制本发明的主题。因此,本发明的范围旨在不受具体实施方式限制,而受基于申请发出的任何权利要求限制。因此,各种实施方式的公开内容旨在说明而非限制所附权利要求中阐述的实施方式的范围。

Claims (20)

1.一种设备,包括:
计算装置,其将第一矩阵和第二矩阵相乘以获得得到的矩阵;以及
存储指令的非暂态计算机可读介质,所述指令在由处理器执行时使所述处理器:
通过执行多个乘法计算来检测所述得到的矩阵中的错误的位置和量值,其中,所述乘法计算的数量少于将所述第一矩阵和所述第二矩阵相乘涉及的乘法计算的数量;以及
基于所述错误的所述位置和所述量值来校正所述得到的矩阵中的所述错误。
2.根据权利要求1所述的设备,其中,所述错误的所述位置和所述量值是通过以下操作而检测的:
针对所述得到的矩阵的多个项,基于所述第一矩阵的相应多个项和所述第二矩阵的相应多个项来计算多个预期结果;
基于所述得到的矩阵来计算针对所述得到的矩阵的所述多个项的多个实际结果;以及
响应于所述多个预期结果中的预期结果与所述多个实际结果中的相应实际结果不同,检测所述错误的所述位置和所述量值。
3.根据权利要求2所述的设备,其中,所述错误的所述量值被确定为所述多个预期结果中的预期结果与所述多个实际结果中的相应实际结果之间的差。
4.根据权利要求2所述的设备,其中,所述错误的所述位置是通过基于所述预期结果和所述实际结果检测所述错误的列并且检测所述错误的行而检测的。
5.根据权利要求1所述的设备,其中,所述指令使所述处理器:
监测与所述错误相关联的错误率;以及
响应于所述错误率高于预定义阈值,生成改变所述计算装置的通知。
6.根据权利要求1所述的设备,其中,所述指令使所述处理器:
确定所述计算装置的产生所述错误的计算单元;以及
增加输入至所述计算单元的电压。
7.根据权利要求1所述的设备,其中,所述指令使所述处理器:
监测与所述错误相关联的错误率;以及
响应于所述错误率高于预定义阈值,动态地调整输入至所述计算装置的电压。
8.根据权利要求1所述的设备,其中,所述指令使所述处理器:
使所述计算装置响应于检测到所述错误来重复所述第一矩阵和所述第二矩阵的相乘。
9.根据权利要求1所述的设备,所述计算装置响应于检测到所述错误:
对所述第一矩阵中的第一组元素以及所述第二矩阵中的第二组元素进行置换;
将经置换的第一矩阵和经置换的第二矩阵相乘以获得置换的得到的矩阵;以及
对所述置换的得到的矩阵中的一组元素进行置换以获得所述得到的矩阵。
10.一种方法,包括:
通过计算装置将第一矩阵和第二矩阵相乘以获得得到的矩阵;
通过执行多个乘法计算来检测所述得到的矩阵中的错误的位置和量值,其中,所述乘法计算的数量少于将所述第一矩阵和所述第二矩阵相乘所需的乘法计算的数量;以及
基于所述错误的所述位置和所述量值来校正所述得到的矩阵中的所述错误。
11.根据权利要求10所述的方法,其中,检测所述错误的所述位置和所述量值包括:
针对所述得到的矩阵的多个项,基于所述第一矩阵的相应多个项和所述第二矩阵的相应多个项来计算多个预期结果;
基于所述得到的矩阵来计算针对所述得到的矩阵的所述多个项的多个实际结果;以及
响应于所述多个预期结果中的预期结果与所述多个实际结果中的相应实际结果不同,检测所述错误的所述位置和所述量值。
12.根据权利要求11所述的方法,其中,将所述错误的所述量值确定为所述多个预期结果中的预期结果与所述多个实际结果中的相应实际结果之间的差。
13.根据权利要求11所述的方法,其中,检测所述错误的所述位置包括:基于所述预期结果和所述实际结果来检测所述错误的列并且检测所述错误的行。
14.根据权利要求10所述的方法,还包括:
监测与所述错误相关联的错误率;以及
响应于所述错误率高于预定义阈值,生成改变所述计算装置的通知。
15.根据权利要求10所述的方法,还包括:
确定所述计算装置的产生所述错误的计算单元;以及
增加输入至所述计算单元的电压。
16.根据权利要求10所述的方法,还包括:
监测与所述错误相关联的错误率;以及
响应于所述错误率高于预定义阈值,动态地调整输入至所述计算装置的电压。
17.根据权利要求10所述的方法,还包括:
响应于检测到所述错误来重复所述第一矩阵和所述第二矩阵的相乘。
18.根据权利要求10所述的方法,还包括,响应于检测到所述错误:
对所述第一矩阵中的第一组元素以及所述第二矩阵中的第二组元素进行置换;
通过所述计算装置将经置换的第一矩阵和经置换的第二矩阵相乘以获得置换的得到的矩阵;以及
对所述置换的得到的矩阵中的一组元素进行置换以获得所述得到的矩阵。
19.一种设备,包括:
计算装置,其将第一矩阵和第二矩阵相乘以获得得到的矩阵;以及
错误校正电路,其通过执行多个乘法计算来检测所述得到的矩阵中的错误的位置和量值,其中,所述乘法计算的数量少于将所述第一矩阵和所述第二矩阵相乘涉及的乘法计算的数量,
所述错误校正电路基于所述错误的所述位置和所述量值来校正所述得到的矩阵中的所述错误。
20.根据权利要求19所述的设备,其中,所述错误校正电路通过以下操作来检测所述错误的所述量值和所述位置:
针对所述得到的矩阵的多个项,基于所述第一矩阵的相应多个项和所述第二矩阵的相应多个项来计算多个预期结果;
基于所述得到的矩阵来计算针对所述得到的矩阵的所述多个项的多个实际结果;以及
响应于所述多个预期结果中的预期结果与所述多个实际结果中的相应实际结果不同,检测所述错误的所述位置和所述量值。
CN201880006508.9A 2017-01-11 2018-01-10 计算中的错误校正 Active CN110291501B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762444950P 2017-01-11 2017-01-11
US62/444,950 2017-01-11
PCT/US2018/013119 WO2018132444A1 (en) 2017-01-11 2018-01-10 Error correction in computation

Publications (2)

Publication Number Publication Date
CN110291501A true CN110291501A (zh) 2019-09-27
CN110291501B CN110291501B (zh) 2024-01-12

Family

ID=62840561

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880006508.9A Active CN110291501B (zh) 2017-01-11 2018-01-10 计算中的错误校正

Country Status (6)

Country Link
US (2) US11461433B2 (zh)
EP (1) EP3568749A4 (zh)
JP (1) JP7144423B2 (zh)
KR (1) KR102478930B1 (zh)
CN (1) CN110291501B (zh)
WO (1) WO2018132444A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112579337A (zh) * 2021-01-05 2021-03-30 株洲中车时代电气股份有限公司 一种表决错误信息的定位方法、系统及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11080131B2 (en) * 2017-06-19 2021-08-03 Yissum Research Development Company Of The Hebrew University Of Jerusalem Ltd. High performance method and system for performing fault tolerant matrix multiplication
US10545821B2 (en) 2017-07-31 2020-01-28 Hewlett Packard Enterprise Development Lp Fault-tolerant dot product engine
US10540228B2 (en) * 2018-03-07 2020-01-21 Micron Technology, Inc. Providing data of a memory system based on an adjustable error rate
US11316537B2 (en) 2019-06-03 2022-04-26 Hewlett Packard Enterprise Development Lp Fault-tolerant analog computing
US11321619B2 (en) 2019-08-14 2022-05-03 International Business Machines Corporation State dependent calibration of qubit measurements

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050661A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Adjusting a processor operating parameter based on a performance criterion
US20110276854A1 (en) * 2010-05-10 2011-11-10 Ternarylogic Llc Methods and Systems for Rapid Error Correction by Forward and Reverse Determination of Coding States
US20120005513A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Performance control of frequency-adapting processors by voltage domain adjustment
WO2014069464A1 (ja) * 2012-11-05 2014-05-08 三菱電機株式会社 誤り訂正符号化方法および誤り訂正符号化装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004135013A (ja) * 2002-10-10 2004-04-30 Matsushita Electric Ind Co Ltd 伝送装置及び伝送方法
US8352847B2 (en) * 2009-12-02 2013-01-08 Lsi Corporation Matrix vector multiplication for error-correction encoding and the like

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050661A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Adjusting a processor operating parameter based on a performance criterion
US20110276854A1 (en) * 2010-05-10 2011-11-10 Ternarylogic Llc Methods and Systems for Rapid Error Correction by Forward and Reverse Determination of Coding States
US20120005513A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Performance control of frequency-adapting processors by voltage domain adjustment
WO2014069464A1 (ja) * 2012-11-05 2014-05-08 三菱電機株式会社 誤り訂正符号化方法および誤り訂正符号化装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHONG DING ET AL.: "Matrix Multiplication on GPUs with On-line Fault Tolerance", 《NINTH IEEE INTERNATIONAL SYMPOSIUM ON PARALLEL AND DISTRIBUTED PROCESSING WITH APPLICATIONS》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112579337A (zh) * 2021-01-05 2021-03-30 株洲中车时代电气股份有限公司 一种表决错误信息的定位方法、系统及存储介质

Also Published As

Publication number Publication date
US11461433B2 (en) 2022-10-04
US20220414185A1 (en) 2022-12-29
EP3568749A4 (en) 2020-08-26
KR20190104192A (ko) 2019-09-06
JP2020512712A (ja) 2020-04-23
WO2018132444A1 (en) 2018-07-19
JP7144423B2 (ja) 2022-09-29
CN110291501B (zh) 2024-01-12
US20190332467A1 (en) 2019-10-31
EP3568749A1 (en) 2019-11-20
KR102478930B1 (ko) 2022-12-19

Similar Documents

Publication Publication Date Title
CN110291501A (zh) 计算中的错误校正
US10633248B2 (en) Syndrome of degraded quantum redundancy coded states
US10074051B2 (en) Vector computation unit in a neural network processor
CN105528560B (zh) 将数据写入存储器和从其读取数据的方法、编解码模块
CN106663093A (zh) 用于为机器翻译自动地交换语言和/或内容的技术
US20200167158A1 (en) Compound instruction set architecture for a neural inference chip
US9891988B2 (en) Device and method for storing data in a plurality of multi-level cell memory chips
US9715420B2 (en) String dataflow error detection
KR20210084951A (ko) 양자회로 에러 보정 방법 및 그 장치
US11016602B2 (en) Method for locating at least one movable magnetic object and associated system
RU2557444C1 (ru) Устройство для сравнения чисел в системе остаточных классов на основе интервально-позиционных характеристик
CN107665169A (zh) 处理器程序的测试方法和装置
US10083080B2 (en) Ultra-low power processor-in-memory architecture
CN114596909A (zh) 测试记忆体的方法及内建自我测试电路
JPWO2016056503A1 (ja) 部分文字列位置検出装置、部分文字列位置検出方法及びプログラム
CN111047185B (zh) 贮存环境因素对弹药贮存可靠性影响的确定方法及装置
Erskine et al. On the upper embedding of symmetric configurations with block size 3
US10430326B2 (en) Precision data access using differential data
EP3991105A1 (en) Quantum computing device in a support vector machine algorithm
Song et al. QNNRepair: Quantized Neural Network Repair
Brignall et al. A framework for minimal hereditary classes of graphs of unbounded clique-width
EP4089524A1 (en) Apparatus and method with multiply-accumulate operation
Freivalds et al. Active learning of recursive functions by ultrametric algorithms
Hahanov et al. Metrics of vector logic algebra for cyber space
Möller An Efficient Reliable Algorithm for the Approximation of All Polynomial Roots Based on the Method of D. Bernoulli

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant