CN113906386B - 使用计算片块的位串运算 - Google Patents

使用计算片块的位串运算 Download PDF

Info

Publication number
CN113906386B
CN113906386B CN202080031724.6A CN202080031724A CN113906386B CN 113906386 B CN113906386 B CN 113906386B CN 202080031724 A CN202080031724 A CN 202080031724A CN 113906386 B CN113906386 B CN 113906386B
Authority
CN
China
Prior art keywords
format
computing device
bit string
controller
operations
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.)
Active
Application number
CN202080031724.6A
Other languages
English (en)
Other versions
CN113906386A (zh
Inventor
V·S·拉梅什
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.)
Micron Technology Inc
Original Assignee
Micron Technology 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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN113906386A publication Critical patent/CN113906386A/zh
Application granted granted Critical
Publication of CN113906386B publication Critical patent/CN113906386B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/4824Methods 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 using signed-digit representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Abstract

本发明描述涉及使用计算片块进行位串运算的系统、设备及方法。实例设备包含耦合到控制器(例如及“编排控制器”)的多个计算装置(或“片块”)及接口。所述控制器可包含电路系统,其从耦合到所述设备的存储器装置(例如存储器阵列)请求包括具有支持算术运算达到第一精度水平的第一格式的位串的数据且致使所述多个计算装置中的至少一个计算装置的处理单元执行操作,其中将所述位串转换成支持算术运算达到不同于所述第一精度水平的第二精度水平的第二格式。

Description

使用计算片块的位串运算
技术领域
本公开大体上涉及半导体存储器及方法,且更特定来说,涉及使用计算片块进行位串运算的设备、系统及方法。
背景技术
存储器装置通常被提供为计算机或其它电子系统中的内部半导体集成电路。存在许多不同类型的存储器,其包含易失性及非易失性存储器。易失性存储器需要电力来维持其数据(例如主机数据、错误数据等)且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)及晶闸管随机存取存储器(TRAM)等。非易失性存储器可通过在不供电时保持所存储的数据来提供持久性数据且可包含NAND快闪存储器、NOR快闪存储器及电阻可变存储器,例如相变随机存取存储器(PCRAM)、电阻性随机存取存储器(RRAM)及磁阻随机存取存储器(MRAM),例如自旋力矩转移随机存取存储器(STT RAM)等。
发明内容
一方面,本申请案提供一种使用计算片块进行位串运算的设备,其包括:多个计算装置,其彼此耦合且各自包括处理单元及经配置为所述处理单元的高速缓存的存储器阵列;接口,其耦合到所述多个计算装置且可耦合到主机装置;及控制器,其耦合到所述多个计算装置且包括经配置以进行以下的电路系统:从耦合到所述设备的存储器装置请求包括具有支持算术运算达到第一精度水平的第一格式的位串的数据;及致使所述多个计算装置中至少一个计算装置的所述处理单元执行操作,其中将所述位串转换成支持算术运算达到不同于所述第一精度水平的第二精度水平的第二格式。
在另一方面中,本申请案提供一种使用计算片块进行位串运算的系统,其包括:多个计算装置,其各自包括相应存储器资源及相应处理单元,其中所述多个计算装置之中的计算装置经配置以:接收包括一或多个位串的相应数据流;及对所述一或多个位串执行操作以将所述一或多个位串从支持算术运算达到第一精度水平的第一格式转换成支持算术运算达到不同于所述第一精度水平的第二精度水平的第二格式。
在另一方面中,本申请案提供一种使用计算片块进行位串运算的方法,其包括:由耦合到第一控制器的多个计算装置之中的特定计算装置从耦合到所述计算装置的存储器装置接收包括具有支持算术运算达到第一精度水平的第一格式的位串的数据;致使由耦合到所述多个计算装置的第二控制器执行将所述位串转换成支持算术运算达到不同于所述第一精度水平的第二精度水平的第二格式的操作;及使用具有所述第二格式的所述位串执行算术运算、逻辑运算或两者。
在另一方面中,本申请案提供一种使用计算片块进行位串运算的设备,其包括:存储器资源,其耦合到输入缓冲器;及处理单元,其耦合到所述存储器资源、命令队列及输出缓冲器,其中所述处理单元经配置以:经由所述命令队列接收命令以启动将包括具有支持算术运算达到第一精度水平的第一格式的位串的数据转换成具有支持算术运算达到第二精度水平的第二格式的位串的操作;致使第一位串从所述输入缓冲器加载到所述存储器资源中;致使所述存储器资源对所述第一位串执行所述操作;致使第二位串加载到所述输入缓冲器中;致使所述第二位串从所述输入缓冲器加载到所述存储器资源中;及响应于确定对所述第一位串的所述操作完成,致使所述存储器资源对所述第二位串执行所述操作。
附图说明
图1是根据本公开的数个实施例的呈包含包括存储控制器及数个存储器装置的设备的计算系统的形式的功能框图。
图2是根据本公开的数个实施例的呈包含存储控制器的设备的形式的功能框图。
图3是根据本公开的数个实施例的呈包含存储控制器的设备的形式的另一功能框图。
图4A是根据本公开的数个实施例的呈包含存储控制器的设备的形式的功能框图。
图4B是根据本公开的数个实施例的呈包含存储控制器的设备的形式的另一功能框图。
图4C是根据本公开的数个实施例的呈包含存储控制器的设备的形式的又另一功能框图。
图5是根据本公开的数个实施例的呈计算片块的形式的框图。
图6是根据本公开的数个实施例的呈计算片块的形式的另一框图。
图7是具有es指数位的n位柱的实例。
图8A是3位posit的正值的实例。
图8B是使用两个指数位的posit构造的实例。
图9是表示根据本公开的数个实施例的使用计算片块进行位串运算的实例方法的流程图。
具体实施方式
本发明描述涉及使用计算片块进行位串运算的系统、设备及方法。实例设备包含耦合到控制器(例如及“编排控制器”)的多个计算装置(或“片块”)及接口。控制器可包含电路系统,其从耦合到设备的存储器装置(例如存储器阵列)请求包括具有支持算术运算达到第一精度水平的第一格式的位串的数据且致使多个计算装置中至少一个计算装置的处理单元执行操作,其中将位串转换成支持算术运算达到不同于第一精度水平的第二精度水平的第二格式。
计算系统可执行可包含各种计算的各种操作,其需要不同程度的准确度。然而,计算系统具有其中存储将对其执行计算的操作数的有限存储器量。为了促进在由有限存储器资源强加的约束内对由计算系统存储的操作数执行操作,在一些方法中操作数以特定格式存储。一种此格式称为“浮点”格式,或简称为“浮点”(例如IEEE 754浮点格式)。
在浮点标准下,例如二进制数串的位串(例如可表示数字的位串)用三组整数或三组位表示:一组位称为“底数”,一组位称为“指数”,且一组位称为“尾数”(或有效数)。定义存储二进制数串的格式的所述组整数或位在本文中可称为“数字格式”或简称为“格式”。举例来说,定义浮点位串的上述位的三组整数(例如底数、指数及尾数)可称为一格式(例如第一格式)。如下文更详细描述,posit位串可包含四组整数或四组位(例如正负号、机制、指数及尾数),其还可称为“数字格式”或“格式”(例如第二格式)。另外,在浮点标准下,两个无穷大(例如+∞及-∞)及/或两种“NaN”(非数值)(安静NaN及信令NaN)可包含于位串中。
浮点标准已在计算系统中使用多年且定义算术格式、交换格式、舍入规则、操作及由许多计算系统实施的异常计算处理。算术格式可包含二进制及/或十进制浮点数据,其可包含有限数、无穷大及/或特殊NaN值。交换格式可包含可用于交换浮点数据的编码(例如位串)。舍入规则可包含在算术运算及/或转换操作期间将数字舍入时可满足的一组性质。浮点运算可包含算术运算及/或例如三角函数的其它计算操作。异常处理可包含指示异常条件,例如除以零、上溢等。
浮点的替代格式称为“通用数字(unum)”格式。存在若干形式的unum格式:I型unum、II型unum及III型unum,其可称为“posit”及/或“有效”。I型unum是在小数末尾使用“ubit”来指示实数是否为确切浮点数或其是否在邻近浮点数之间的区间中的IEEE 754标准浮点格式的超集。I型unum中的正负号、指数及小数位从IEEE 754浮点格式取得其定义,然而,I型unum的指数及小数字段的长度可从单个位动态改变到最大用户可定义长度。通过从IEEE 754标准浮点格式取得正负号、指数及小数位,I型unum可表现类似于浮点数,然而,展现于I型unum的指数及小数位中的可变位长度需要相较于浮点数的额外管理。
II型unum通常与浮点数不兼容,此准许基于投影实数的干净数学设计。II型unum可包含n个位且可用“u晶格”来描述,其中圆形投影的象限由一组有序的2n-3-1个实数填入。II型unum的值可围绕平分圆形投影的轴反映,使得正值位于圆形投影的右上象限中,而其负对应值位于圆形投影的左上象限中。表示II型unum的圆形投影的下半部可包含位于圆形投影的上半部的值的倒数。II型unum通常依赖于多数操作的查找表。举例来说,在一些情况中,查找表的大小可限制II型unum的功效。然而,II型unum可在一些条件下提供比浮点数改进的计算功能性。
III型unum格式在本文中称为“posit格式”或简称为“posit”。与浮点位串相比,posit可在特定条件下在相同位宽度下允许比浮点数更高的精度(例如更广动态范围及/或更高准确度)。此可允许在使用posit而非用浮点数时由计算系统执行的操作以更高速率(例如更快)执行,此又可通过例如减少用于执行操作的时钟循环数来改进计算系统的性能,借此减少在执行此类操作时消耗的处理时间及/或功率。另外,在计算系统中使用posit可允许比浮点数更高的准确度及/或精度,此可比一些方法(例如依赖于浮点格式位串的方法)进一步改进计算系统的功能。此外,因为posit可允许在相同位宽度下比浮点数更高精度,所以posit需要比浮点数更少的存储空间。
posit的精度及准确度可基于包含于posit中的总位数量及/或整数组或位组的数量高度可变。另外,posit可产生广泛动态范围。posit的准确度、精度及/或动态范围可在特定条件下大于浮点或其它数值格式的准确度、精度及/或动态范围,如本文中更详细描述。posit的可变准确度、精度及/或动态范围可例如基于其中将使用posit的应用来操纵。另外,posit可减小或消除与浮点及其它数值格式相关联的上溢、下溢、NaN及/或其它极端情况。此外,posit的使用可允许数值(例如数字)使用比浮点或其它数值格式更少的位来表示。
在一些实施例中,这些特征可允许posit高度可重新配置,此可提供比依赖于浮点或其它数值格式的方法改进的应用性能。另外,posit的这些特征可在机器学习应用中提供比浮点或其它数值格式改进的性能。举例来说,posit可在其中计算性能是至关重要的机器学习应用中用于以与浮点或其它数值格式相同或更大的准确度及/或精度使用比浮点或其它数值格式更少的位训练网络(例如神经网络)。另外,机器学习背景下的推论操作可使用具有比浮点或其它数值格式更少的位的posit来实现。通过使用比浮点或其它数值格式更少的位来实现相同或增强结果,posit的使用可因此减少此类应用中需要的存储器空间量,此可改进其中采用posit的计算系统的整体功能。
本文中的实施例是针对经配置以对位串执行各种操作以改进计算装置的整体功能的硬件电路系统(例如可包含一或多个处理单元及/或存储器资源的计算片块或计算装置)。举例来说,本文中的实施例是针对经配置以执行转换操作以将位串的格式从第一格式(例如浮点格式)转换成第二格式(例如unum格式、posit格式等)的硬件电路系统。一旦位串已转换成第二格式,则电路系统可经操作以对经转换位串执行操作(例如算术运算、逻辑运算、逐位运算、向量运算等)及/或致使经转换位串转移到其它电路系统以执行此类操作。
在一些实施例中,硬件电路系统可进一步经操作以将操作的结果转换回第一格式(例如浮点格式),此又可转移到计算系统的不同电路系统(例如主机、存储器装置等)。通过以此方式执行操作,硬件电路系统可通过在执行算术及/或逻辑运算之前、期间或之后允许改进所执行操作的准确度及/或精度、改进执行操作的速度及/或减少位串所需的存储空间来促进计算系统的经改进性能。
在本文中描述的各个实施例中,可经操作以执行操作以将位串从一种格式转换成另一格式(及反之亦然)及/或致使对经转换位串执行算术运算及/或逻辑运算的硬件电路系统(例如计算片块或计算装置)可驻留于存储控制器上。如本文中使用,术语“驻留于…上”是指某物物理上定位于特定组件上。举例来说,硬件电路系统(例如计算片块)“驻留于存储控制器上”是指其中包括计算片块的硬件电路系统物理上定位于存储控制器上的条件。术语“驻留于…上”在本文中可与例如“部署于…上”或“定位于…上”的其它术语互换使用。
通过执行将位串从一种格式转换成另一格式及反之亦然的操作及/或使用例如部署于存储控制器中的多个计算装置的硬件电路系统执行算术运算,可比其中此类操作使用未部署于存储控制器中的电路系统执行的方法及/或比依赖于单个处理单元的方法实现上述操作的仅经改进性能。举例来说,在其中将位串从一种格式转换成另一格式及反之亦然的操作使用不同电路架构(例如单处理单元架构等)执行的方法中,需要更多时钟循环数及/或更多时间量来执行此类操作,这是由于例如存储器装置上的处理能力趋于比本文中描述的计算片块的处理能力减弱。
此外,本文中的实施例可允许机器学习应用、图形处理应用、高性能计算应用等的经改进处理性能。举例来说,通过利用本文中描述的计算片块架构,多个计算片块可各自能够对具有范围从8个位到高达64个位的位宽度的位串执行操作,其在机器学习应用、图形处理应用、高性能计算应用等中可为有用的,其中多个位串的并行处理可改进计算性能。
举例来说,如本文中描述,计算片块可提供并行操作性能,此可比一些方法进一步减少执行此类操作所需的时间或处理资源量。在一些实施例中,多个计算片块可各自对位串同时(或近乎同时)执行操作及/或子操作(例如在组合时表示操作的性能的操作的构成部分),此可允许比一些方法减少执行此类操作的时间量。
在本公开的以下详细描述中,参考构成本公开的一部分且通过说明展示可如何实践本公开的一或多个实施例的附图。足够详细地描述这些实施例以使所属领域的一般技术人员能实践本公开的实施例,且应理解,可利用其它实施例且可在不背离本公开的范围的情况下做出过程、电及/或结构变化。
如本文中使用,尤其关于图式中的参考元件符号的例如“A”、“B”、“C”、“D”、“E”、“N”、“M”等的标示符指示可包含如此标示的数个特定特征。还应理解,本文中使用的术语仅用于描述特定实施例,且不意在限制。如本文中使用,单数形式“一(a/an)”及“所述”可包含单数及复数个指涉物两者,除非上下文另外明确指示。另外,“数个”、“至少一个”及“一或多个”(例如数个存储体)可指代一或多个存储体,而“多个”希望指代多于一个此类事物。
此外,单词“可(can/may)”贯穿本申请案用于意指准许(即,有可能、能够)而非强制意义(即,必须)。术语“包含”及其衍生物意味着“包含(但不限于)”。术语“经耦合”及“耦合”意味着直接或间接物理连接或用于存取及移动(传输)命令及/或数据,视上下文而定。术语“位串”、“数据”及“数据值”在本文中可互换使用且可具有相同意义,视上下文而定。
本文中的图遵循编号惯例,其中首位或前几个数字对应于图号且剩余数字识别图中的元件或组件。不同图之间的类似元件或组件可通过使用类似数字来识别。举例来说,110可指代图1中的元件“10”,且类似元件在图2中可称为210。一群组或多个类似元件或组件在本文中一般用单个元件符号指代。举例来说,多个参考元件210-1、210-2、…、210-N通常可称为210。应了解,本文中各个实施例中展示的元件可经添加、交换及/或消除以便提供本公开的数个额外实施例。另外,图中提供的元件的比例及/或相对尺度意在说明本公开的某些实施例,且不应被视为意在限制。
图1是根据本公开的数个实施例的呈包含包括存储控制器104及数个存储器装置116-1、…、116-N的设备的计算系统100的形式的功能框图。如本文中使用,“设备”可指代(但不限于)各种结构或结构组合中的任何者,例如(举例来说)电路或电路系统、一或多个裸片、一或多个模块、一或多个装置或一或多个系统。在图1中说明的实施例中,存储器装置116-1、…、116-N可包含一或多个存储器模块(例如单列直插式存储器模块、双列直插式存储器模块等)。存储器装置161-1、…、116-N可包含易失性存储器及/或非易失性存储器。在数个实施例中,存储器装置116-1、…、116-N可包含多芯片装置。多芯片装置可包含数个不同存储器类型及/或存储器模块。举例来说,存储器系统可包含任何类型的模块上的非易失性或易失性存储器。
存储器装置116-1、…、116-N可提供计算系统100的主存储器或可用作整个计算系统100的额外存储器或存储装置。每一存储器装置116-1、…、116-N可包含一或多个存储器单元阵列,例如易失性及/或非易失性存储器单元。阵列可为例如具有NAND架构的快闪阵列。实施例不限于特定类型的存储器装置。例如,存储器装置116可包含SRAM、RAM、ROM、DRAM、SDRAM、PCRAM、RRAM及快闪存储器等。在一些实施例中,存储器装置116可包含高速缓存、一或多个寄存器、锁存器等。
在其中存储器装置116包含非易失性存储器的实施例中,存储器装置116可为快闪存储器装置,例如NAND或NOR快闪存储器装置。然而,实施例不限于此,且存储器装置116可包含:其它非易失性存储器装置,例如非易失性随机存取存储器装置(例如NVRAM、ReRAM、FeRAM、MRAM、PCM);“新兴”存储器装置,例如3D交叉点(3DXP)存储器装置等;或其组合。3DXP非易失性存储器阵列可连同可堆叠交叉栅格式数据存取阵列执行基于体电阻变化的位存储。另外,与许多基于快闪的存储器相比,3D XP非易失性存储器可执行原位写入操作,其中可在不先擦除非易失性存储器单元的情况下编程非易失性存储器单元。
如图1中说明,主机102可经耦合到存储控制器104,存储控制器104又可经耦合到存储器装置116。在数个实施例中,每一存储器装置116可经由一或多个通道107-1、…、107-N(例如总线、接口、通信路径等)耦合到存储控制器104。在图1中,包含芯片上网络108的存储控制器104经由一或多个通道103(例如总线、接口、通信路径等)耦合到主机102,且编排控制器106经由一或多个通道105(例如总线、接口、通信路径等)耦合到主机102。主机102可为主机系统,例如个人膝上型计算机、桌上型计算机、数码相机、智能电话、存储器读卡器及/或物联网启用装置以及各种其它类型的主机,且可包含存储器存取装置,例如处理器(或处理单元)。所属领域的一般技术人员应了解,“处理器”可意指一或多个处理器,例如并行处理系统、数个协处理器等。
通道103/105/107可用于在存储器装置116、存储控制器104及主机102之间转移数据且可呈标准化接口的形式。举例来说,当存储器装置116在计算系统100中用于数据存储时,通道103/105/107可为串行高级技术附接(SATA)、外围组件互连高速(PCIe)、通用串行总线(USB)或双倍数据速率(DDR)接口以及其它连接器及接口。然而,一般来说,通道103/105/107可提供接口用于在具有用于通道103/105/107的兼容接受器的存储器装置116、存储控制器104及主机102之间传递控制、地址、数据及其它信号。
主机102可包含系统母板及/或背板且可包含数个处理资源(例如一或多个处理器、微处理器或一些其它类型的控制电路系统)。系统100可包含单独集成电路或主机102,存储控制器104、编排控制器106、芯片上网络(NoC)108及/或存储器装置116可在相同集成电路上。系统100可为例如服务器系统及/或高性能计算(HPC)系统及/或其一部分。尽管图1中展示的实例说明具有冯诺依曼(Von Neumann)架构的系统,但本公开的实施例可实施于非冯诺依曼架构中,其可不包含通常与冯诺依曼架构相关联的一或多个组件(例如CPU、ALU等)。
存储控制器104可包含编排控制器106、芯片上网络(NoC)108、多个计算片块110-1、…、110-N(如本文中结合图5及6更详细描述)及媒体控制器112。计算片块110在本文中替代地称为“计算装置”。编排控制器106可包含经配置以在本文中描述的操作的执行期间分配及取消分配资源到计算片块110的电路系统及/或逻辑。在一些实施例中,编排控制器106可为专用集成电路(ASIC)、场可编程门阵列(FPGA)或经配置以编排由计算片块110执行的操作的电路系统及/或逻辑的其它组合。举例来说,编排控制器106可包含控制计算片块110对接收到的位串执行操作以在一或多种格式之间转换位串、对位串执行算术及/或逻辑运算及/或改变位串的精度(例如动态范围、准确度等)的电路系统(例如一或多个处理器或处理单元)及/或逻辑。尽管图1中未明确展示,但在一些实施例中,存储控制器104可驻留于存储器装置116中的一或多者上。
编排控制器106可经配置以从存储器装置116中的一或多者请求位串(例如包括一或多个位串的数据块)且致使计算片块110对位串执行操作(例如在一或多种格式之间转换位串的操作、算术运算、逻辑运算、逐位运算等)。操作可经执行以将位串从第一格式(例如浮点格式)转换成第二格式(例如通用数字或posit格式)。编排控制器106可进一步经配置以致使已对其操作的位串(例如呈posit格式的位串、表示由计算片块110执行的算术及/或逻辑运算的结果的所得位串等)转移到接口(例如通信路径103及/或105)及/或主机102及从接口(例如通信路径103及/或105)及/或主机102转移。
可由计算片块110使用位串执行的算术及/或逻辑运算的非限制性实例可包含使用posit位串的算术运算(例如加法、减法、乘法、除法、融合乘加、乘积累加、点积单位、大于或小于、绝对值(例如FABS())、快速傅里叶变换、逆快速傅里叶变换、S型函数、卷积、平方根、指数及/或对数运算)及/或逻辑运算(例如AND、OR、XOR、NOT等)以及三角函数运算(例如正弦、余弦、正切等)。将了解,前述操作列表不希望是详尽的,且前述操作列表也不希望具限制性,且计算片块110可经配置以执行其它算术及/或逻辑运算(或致使其它算术及/或逻辑运算执行)。
在一些实施例中,编排控制器106可为多个计算片块110中的一者。举例来说,编排控制器106可包含计算片块110包含的相同或类似的电路系统,如本文中结合图4B更详细描述。然而,在一些实施例中,编排控制器106可为与计算片块110相异或分离的组件,且可因此包含不同于计算片块110的电路系统,如图1中展示。
NoC 108可为允许编排控制器106与计算片块110之间通信的通信子系统。NoC 108可包含促进编排控制器106与计算片块110之间通信的电路系统及/或逻辑。在一些实施例中,如本文中结合图2更详细描述,NoC 108可从计算片块110接收输出且将输出从计算片块110转移到编排控制器106、主机102及/或存储器装置116,且反之亦然。举例来说,NoC 108可经配置以在已经受计算片块110的算术运算、逻辑运算等的位串(例如所得位串)转换成posit格式的通用数字之后接收位串且将所得位串转移到编排控制器106、主机102及/或存储器装置116。如本文中使用,“所得位串”通常是指由执行算术及/或逻辑运算产生的位串。举例来说,如果第一位串“Ψ”及第二位串“Ω”用作执行算术及/或逻辑运算的操作数,那么由使用位串操作数“Ψ”及“Ω”执行算术及/或逻辑运算产生的位串“λ”可称为所得位串。
尽管图1中展示NoC 108,但实施例不限于利用NoC 108在编排控制器106与计算片块110之间提供通信路径。举例来说,例如存储控制器交叉开关(XBAR)的其它通信路径可用于促进计算片块110与编排控制器106之间通信。
媒体控制器112可为“标准”或“无声”媒体控制器。举例来说,媒体控制器112可经配置以对存储器装置116执行例如复制、写入、读取、错误校正等的操作。然而,在一些实施例中,媒体控制器112不对与存储器装置116相关联的数据执行处理操作(例如在各种格式之间转换位串的操作、使用经转换位串的算术及/或逻辑运算等)。举例来说,媒体控制器112可致使执行读取及/或写入操作以经由通道107从存储器装置116读取数据或将数据写入到存储器装置116,但媒体控制器112可不执行在各种格式之间转换位串的操作、对经转换位串等、对从存储器装置116读取或写入到存储器装置116的数据的算术及/或逻辑运算。在一些实施例中,媒体控制器112可为非易失性媒体控制器,但实施例不限于此。
图1的实施例可包含未说明以便不模糊本公开的实施例的额外电路系统。举例来说,存储控制器104可包含锁存经由I/O连接通过I/O电路系统提供的地址信号的地址电路系统。地址信号可由行解码器及列解码器接收及解码以存取存储器装置116。所属领域的技术人员应了解,地址输入连接的数目可取决于存储器装置116的密度及架构。
在一些实施例中,计算片块110(例如“计算装置”)可各自包含处理单元(例如本文中图5及6中说明的处理单元536/636)及存储器阵列(例如本文中图5及6中说明的计算片块存储器资源538/638)。接口(例如NoC 108)可经耦合到多个计算装置及主机102。例如编排控制器106的控制器可经耦合到计算片块110且可包括电路系统,所述电路系统经配置以从存储器装置116请求包括具有支持算术运算达到第一精度水平的第一格式的位串的数据且致使多个计算装置中至少一个计算装置的处理单元执行操作,其中将位串转换成支持算术运算达到不同于第一精度水平的第二精度水平的第二格式。
如本文中使用,“第一精度水平”及“第二精度水平”通常指代位串的动态范围及/或表示使用一或多个位串执行的操作的结果的所得位串。举例来说,浮点格式位串在本文中可描述为具有“第一精度水平”,而unum位串(例如posit格式位串)可称为具有“第二精度水平”,因为如本文中更详细描述,例如posit位串的unum位串可提供不同于浮点格式化位串的精度水平。举例来说,在特定条件下,例如posit位串的unum位串可提供比浮点格式化位串更高的精度水平。
在一些实施例中,第一格式或第二格式可包含尾数、底数及指数部分,且第一格式或第二格式中的另一者可包含尾数、正负号、机制及指数部分。举例来说,如果第一格式包含尾数、底数及指数部分,那么第二格式可包含尾数、正负号、机制及指数部分。换句话说,在一些实施例中,第一格式或第二格式可为例如浮点格式的IEEE 754格式,且第一格式及第二格式中的另一者可为例如III型unum或posit的unum格式。
在一些实施例中,至少一个计算装置的处理单元经配置以使用具有第二格式的位串执行算术运算或逻辑运算或两者。如上文描述,可由计算片块110使用位串执行的算术及/或逻辑运算的非限制性实例可包含使用posit位串的算术运算(例如加法、减法、乘法、除法、融合乘加、乘积累加、点积单位、大于或小于、绝对值(例如FABS())、快速傅里叶变换、逆快速傅里叶变换、S型函数、卷积、平方根、指数及/或对数运算)及/或逻辑运算(例如AND、OR、XOR、NOT等)以及三角函数运算(例如正弦、余弦、正切等)。将了解,前述操作列表不希望是详尽的,且前述操作列表也不希望具限制性,且计算片块110可经配置以执行其它算术及/或逻辑运算(或致使其它算术及/或逻辑运算执行)。
然而,实施例不限于执行算术及/或逻辑运算,且在一些实施例中,控制器可进一步经配置以致使多个计算装置中至少一个计算装置的处理装置对数据执行操作,其中排序、重新排序、移除或丢弃至少一些数据,如本文中结合图5及6更详细描述。
另一控制器(例如媒体控制器112)可经耦合到多个计算装置。另一控制器(例如不同于编排控制器106的控制器)可包括电路系统,其经配置以执行与存储器装置相关联的读取操作、与存储器装置相关联的复制操作、与存储器装置相关联的错误校正操作或其组合。然而,在一些实施例中,另一控制器可经配置以不对位串执行转换操作、算术运算及/或逻辑运算。
在一些实施例中,存储器装置116可经耦合到主机102且可至少包含第一计算片块110-1(例如计算装置)及第二计算片块110-2。举例来说,计算片块110及/或存储控制器104可驻留于存储器装置116上。第一计算装置可包含第一处理单元及经配置为第一处理单元的高速缓存的第一存储器阵列,且第二计算装置可包含第二处理单元及经配置为第二处理单元的高速缓存的第二存储器阵列。
控制器(例如编排控制器206)可经耦合到第一计算装置及第二计算装置且可经配置以分配第一计算装置及第二计算装置中的至少一者执行其中将包括具有支持算术运算达到第一精度水平的第一格式的位串的数据转换成支持算术运算达到不同于第一精度水平的第二精度水平的第二格式的操作且致使第一计算装置及第二计算装置中的至少一者执行其中将位串转换成第二格式的操作。在一些实施例中,第一格式及第二格式中的至少一者包括IEEE 754格式,且第一格式及第二格式中的另一者包括III型通用数字格式或posit格式。
第一计算装置或第二计算装置的处理单元可经配置以使用具有第二格式的位串执行算术运算或逻辑运算或两者。在一些实施例中,第一计算装置或第二计算装置的处理单元可经配置以响应于将位串转换成第二格式的操作完成而使用具有第二格式的位串执行算术运算或逻辑运算或两者。举例来说,第一计算装置及第二计算装置中的至少一者经配置以响应于在没有来自主机102的命令的情况下将位串从第一格式转换成第二格式的操作完成而执行算术运算及/或逻辑运算。
如结合图2及3更详细描述,控制器可经配置以致使具有第一格式的位串及具有第二格式的位串中的至少一者转换成逻辑记录作为操作执行的部分。
另一控制器(例如媒体控制器112)可经耦合到存储器装置116。另一控制器(例如不同于编排控制器106的控制器)可包括电路系统,其经配置以执行与存储器装置相关联的读取操作、与存储器装置相关联的复制操作、与存储器装置相关联的错误校正操作或其组合。然而,在一些实施例中,另一控制器可不经配置以使用位串执行转换操作、算术运算及/或逻辑运算。
在一些实施例中,第一计算装置及第二计算装置可经配置使得第一计算装置可存取与第二计算装置相关联的地址空间且第二计算装置可存取与第一计算装置相关联的地址空间,如本文中更详细描述。举例来说,NoC 108可促进计算装置之间的地址可见性以允许计算装置存取存储于其它计算装置中的位串及/或允许使用位串并行执行操作。
图2是根据本公开的数个实施例的呈包含存储控制器204的设备的形式的功能框图。存储控制器204可类似于图1中说明的存储控制器104。如图2中展示,存储控制器204可包含媒体控制器212、多个计算片块210-1、…、210-N、芯片上网络(NoC)208及编排控制器206。
媒体控制器212可经配置以响应于来自编排控制器206的请求而从耦合到存储控制器204的存储器装置(例如图1中说明的存储器装置116-1、…、116-N)检索位串211A-1、…、211A-N、211B-1、…、211B-N、211C-1、…、211C-N、211D-1、…、211D-N、211E-1、…、211E-N。媒体控制器随后可致使位串211A、211B、211C、211D、211E转移到计算片块210及/或编排控制器206。在一些实施例中,位串可包含于一或多个数据块中。数据块可为约4千字节大小且含有多个位串,但实施例不限于此特定大小。类似地,媒体控制器212可经配置以从计算片块210及/或编排控制器206接收位串211A、211B、211C、211D、211E。媒体控制器随后可致使位串211A、211B、211C、211D、211E转移到耦合到存储控制器204的存储器装置。
位串211可由计算片块210响应于由编排控制器206产生的一或多个命令而以串流传输方式处理。举例来说,如本文中结合图5及6更详细描述,因为计算片块210可响应于对前一位串211完成一过程而处理后一位串211,所以位串211可在位串211由计算片块210处理时通过计算片块210连续串流传输。在一些实施例中,位串211可在没有来自编排控制器206的中介命令的情况下以串流传输方式通过计算片块210处理。即,在一些实施例中,编排控制器206可发出致使计算片块210处理接收到其的位串211的命令,且随后由计算片块210接收的位串211可在没有来自编排控制器206的额外命令的情况下处理。如本文中使用,处理位串可包含执行在各种格式之间(例如,在浮点格式与例如posit格式的通用数字格式之间,及反之亦然)转换位串的操作、使用经转换位串执行算术及/或逻辑运算及/或在各种格式之间转换所得位串。
位串211可以各种格式格式化。举例来说,位串211可以IEEE 754格式(例如浮点格式)、通用数字格式(例如posit格式)或其组合格式化。所属领域的一般技术人员应了解,位串211也可以其它格式格式化。
如上文描述,在一些实施例中,处理位串211可包含执行在不同格式之间转换位串211的操作及/或使用位串211作为操作数来执行算术及/或逻辑运算。举例来说,计算片块210可响应于来自编排控制器206的命令而对位串211执行在不同格式之间转换位串211的操作及/或使用位串211作为操作数来执行算术及/或逻辑运算。在一些实施例中,计算片块210可响应于来自编排控制器206的命令而对位串211执行操作,其中排序、重新排序、移除或丢弃至少一些位串211以移除无用数据、提取相关数据或否则解析位串211以减小与其相关联的数据的大小或数量。
在非限制性实例中,位串211可包含一或多个浮点位串。编排控制器206可将致使计算片块210以浮点格式接收位串211的命令发送到计算片块210。响应于以浮点格式接收到位串211,计算片块210可启动将位串211转换成呈例如posit格式的通用数字格式的位串211的操作。
计算片块210可在执行将位串211从浮点格式转换成posit格式的操作之后使用经转换位串211执行算术及/或逻辑运算。在一些实施例中,计算片块210可在没有从编排控制器206接收到命令(例如检索位串211的命令)的情况下启动使用经转换位串211执行算术及/或逻辑运算,然而,实施例不限于此,且计算片块210可响应于来自编排控制器206的一或多个后续命令而启动使用经转换位串211执行算术及/或逻辑运算。在执行算术及/或逻辑运算之后,计算片块210可将算术及/或逻辑运算的结果从计算片块210转移到计算片块210外部的电路系统(例如,转移到编排控制器206、NoC 208及/或主机,例如本文中图1中说明的主机102)。
在一些实施例中,计算片块210(例如多个计算装置)可各自包含相应存储器资源(本文中图5及6中说明的计算片块存储器资源538/638)及相应处理单元(例如本文中图5及6中说明的处理单元538/638)。计算装置可经配置以接收包括一或多个位串211的相应数据流且对一或多个位串执行操作以将一或多个位串从支持算术运算达到第一精度水平的第一格式转换成支持算术运算达到不同于第一精度水平的第二精度水平的第二格式。计算装置可经配置以使用具有第二格式的一或多个位串执行算术运算或逻辑运算或两者。
在一些实施例中,通信子系统(例如NoC 208)可经耦合到多个计算装置。通信子系统可经配置以提供通信路径以允许计算装置中的至少一者存取与不同计算装置相关联的地址空间,如本文中描述。例如编排控制器206的控制器可经耦合到多个计算装置且经配置以分配多个计算装置之中的特定计算装置对一或多个位串执行操作。
计算装置可经配置以响应于接收到启动命令而启动对一或多个位串的操作,及/或计算装置可经配置以接收相应数据流且在启动命令之后在没有命令的情况下对一或多个位串执行操作。举例来说,计算装置可具有足够处理资源以在不妨碍主机(例如图1中说明的主机102)或存储控制器204外部的其它电路系统及/或例如编排控制器206的控制器的情况下执行操作。
计算装置可进一步包含相应直接媒体存取(DMA)组件,例如图5及6中说明的DMA缓冲器539及639。DMA组件可经配置以响应于对先前位串完成操作而在对先前位串执行操作时缓冲作为相应数据流的部分接收的后续位串及/或致使后续位串转移到相应存储器资源,如本文中更详细描述。
在其中从含有三个位串Λ、Π及β的数据块请求两个位串Λ及Π的非限制性实例中,含有所有三个列的数据块可响应于来自编排控制器206的命令而转移到计算片块210。计算片块210可选择性处理数据块以从数据块提取相关位串(例如位串Λ及位串Π),且随后可将经过滤数据(例如相关位串)从计算片块210转移到计算片块210外部的电路系统(例如,转移到编排控制器206、NoC 208、存储器装置(例如图1中说明的存储器装置116)及/或主机(例如图1中说明的主机102))。在一些实施例中,计算片块210可使用经过滤位串执行操作(例如在各种格式之间转换位串的操作、使用位串的算术及/或逻辑运算及/或在各种格式之间转换所得位串的操作)。
编排控制器206可进一步经配置以将分配及/或取消分配计算片块210可用的资源用于使用位串211执行操作的命令发送到计算片块210。在一些实施例中,分配及/或取消分配计算片块210可用的资源可包含选择性启用一些计算片块210同时选择性停用一些计算片块210。举例来说,如果需要少于总数的计算片块210来使用位串211执行操作,那么编排控制器206可发送命令到将用于使用位串211执行操作的计算片块210以仅启用使用位串211执行操作所需的那些计算片块210。
在一些实施例中,分配计算片块210可用的资源可用于在执行操作时需要少于所有计算片块210时节约由计算片块消耗的功率量。相反地,当期望多个操作或子操作时,分配计算片块210可用的资源可允许通过跨多个计算片块210并行执行操作来改进处理速度。
在一些实施例中,编排控制器206可进一步经配置以发送使由计算片块210执行的操作及/或子操作的执行同步的命令。举例来说,编排控制器206可发送致使第一计算片块(例如计算片块210-1)执行第一操作的命令到第一计算片块,且编排控制器206可发送使用第二计算片块(例如计算片块210-2)执行第二操作的命令到第二计算片块。通过编排控制器206使由计算片块210执行的操作的执行同步可进一步包含致使计算片块210在特定时间或按特定顺序执行特定操作。
在非限制性实例中,编排控制器206可发送使用一或多个位串211执行操作的命令到计算片块中的一者(例如计算片块210-1)且发送使用位串211中的一或多者执行操作的不同命令到计算片块中的不同者(例如计算片块210-2)。举例来说,编排控制器206可发送使用位串211中的一或多者执行转换操作、算术运算及/或逻辑运算的命令到计算片块中的一者(例如计算片块210-1)且发送使用位串211中的一或多者执行转换操作、算术运算及/或逻辑运算的不同命令到计算片块中的一者(例如计算片块210-2)。
在另一非限制性实例中,编排控制器206可发送使用一或多个位串211执行子操作的命令到计算片块中的一者(例如计算片块210-1)且发送使用位串211中的一或多者执行另一子操作(作为使用一或多个位串211执行操作的部分)的不同命令到计算片块中的不同者(例如计算片块210-2)。举例来说,编排控制器206可发送使用位串211中的一或多者执行算术运算及/或逻辑运算的一部分的命令到计算片块中的一者(例如计算片块210-1)且发送使用位串211中的一或多者执行算术运算及/或逻辑运算的另一部分的另一命令到计算片块中的一者(例如计算片块210-2)。一旦执行操作的相应部分(例如子操作),则编排控制器206可致使子操作经组合以产生使用一或多个位串执行的所得操作。
在一些实施例中,所得位串211(例如表示转换操作的结果的位串)、算术运算及/或逻辑运算可在由计算片块210使用位串211执行操作之后转换成逻辑记录213-1、…、213-N。逻辑记录213可包括独立于其物理位置的数据记录。举例来说,逻辑记录213可为指向计算片块210中的至少一者中的位置的数据记录,其中存储对应于位串211的物理数据(例如由使用位串211的转换操作、算术运算及/或逻辑运算导致的数据块)。
如本文中结合图5及6更详细描述,所得位串211可在执行转换操作、算术运算及/或逻辑运算之前存储于不同于其中存储位串211的分区的计算片块存储器(例如图5中说明的计算片块存储器538或图6中说明的计算片块存储器638)的分区中。在一些实施例中,逻辑记录213可指向其中存储所得位串的位置,使得所得位串可从计算片块210存取且转移到计算片块210外部的电路系统。
在一些实施例中,编排控制器206可直接从媒体控制器212接收位串211E-1、…、211E-N及/或将位串211E-1、…、211E-N直接发送到媒体控制器212。此可允许编排控制器206通过计算片块210在媒体控制器212与编排控制器206及/或主机(例如图1中说明的主机102)之间转移未被处理的位串211E(例如未经受计算片块210的转换操作、算术运算及/或逻辑运算的位串211)。
举例来说,如果编排控制器206从耦合到存储控制器204的主机(例如图1中说明的主机102)接收将由耦合到存储控制器204的存储器装置(例如图1中说明的存储器装置116)存储的未经处理位串211E,那么编排控制器206可致使未经处理位串211E转移到媒体控制器212,媒体控制器212又可致使未经处理位串211E转移到耦合到存储控制器204的存储器装置。
类似地,如果主机请求未经处理位串或未被计算片块210处理的数据块,那么媒体控制器212可致使未经处理位串211E转移到编排控制器206,编排控制器206随后可将未经处理位串211E转移到主机。
图3是根据本公开的数个实施例的呈包含存储控制器304的设备的形式的另一功能框图。存储控制器304可类似于本文中图1中说明的存储控制器104或图2中说明的存储控制器204。如图3中展示,存储控制器304可包含媒体控制器312、多个计算片块310-1、…、310-N、芯片上网络(NoC)308及编排控制器306。
媒体控制器312可经配置以响应于来自编排控制器306的请求而从耦合到存储控制器304的存储器装置(例如图1中说明的存储器装置116-1、…、116-N)检索位串313A-1、…、313A-N、311B-1、…、313B-N、311C-1、…、311C-N、311D-1、…、311D-N、311E-1、…、311E-N及/或逻辑记录313A-1、…、313A-N、313B-1、…、313B-N、313C-1、…、313C-N、313D-1、…、313D-N、313E-1、…、313E-N。媒体控制器随后可致使位串311A、311B、311C、311D、311E及/或逻辑记录313A、313B、313C、313D、313E转移到计算片块310及/或编排控制器306。
类似地,媒体控制器312可经配置以从计算片块310及/或编排控制器306接收位串311A、311B、311C、311D、311E及/或逻辑记录313A、313B、313C、313D、313E。媒体控制器随后可致使位串311A、311B、311C、311D、311E及/或逻辑记录313A、313B、313C、313D、313E转移到耦合到存储控制器304的存储器装置。
位串311可由计算片块310响应于由编排控制器306产生的一或多个命令而以串流传输方式处理。在一些实施例中,处理位串311可包含使用位串执行各种操作。举例来说,计算片块310可响应于来自编排控制器306的命令而对位串311执行在一或多种不同格式之间转换位串311的操作及/或使用位串311执行算术及/或逻辑运算。举例来说,计算片块310可接收具有第一格式(例如浮点格式)的位串311且转换位串311,使得位串311具有第二格式(例如通用数字格式、posit格式等)。
此外,在一些实施例中,计算片块310-1、…、310-N可响应于来自编排控制器306的命令而对位串311执行操作以移除无用数据、提取相关数据或否则解析位串311以减小与其相关联的数据的大小或数量。在一些实施例中,计算片块310-1、…、310-N可响应于来自编排控制器306的命令而处理位串311、产生逻辑记录313及/或将逻辑记录转移到计算片块310外部的位置。
图4A到4C说明根据本公开的数个实施例的呈包含存储控制器404的设备的形式的功能框图的各个实例。在图4A到4C中,媒体控制器412与多个计算片块410-1、…、410-8、NoC408及编排控制器406通信,编排控制器406与输入/输出(I/O)缓冲器422通信。尽管图4A到4C中展示八(8)个离散计算片块410-1、…、410-8,但应了解,实施例不限于包含八个离散计算片块410的存储控制器404。举例来说,存储控制器404可取决于存储控制器404及/或其中部署存储控制器404的整个系统的特性而包含一或多个计算片块410。
如图4A到4C中展示,媒体控制器412可包含直接存储器存取(DMA)组件418及DMA通信子系统419。DMA 418可独立于主机(例如图1中说明的主机102)的中央处理单元而促进媒体控制器418与耦合到存储控制器404的存储器装置(例如图1中说明的存储器装置116-1、…、116-N)之间通信。DMA通信子系统419可为允许媒体控制器412、耦合到存储控制器404的存储装置及/或计算片块410之间的互连及互操作性的通信子系统,例如交叉开关(“XBAR”)、芯片上网络或其它通信子系统。
在一些实施例中,NoC 408可促进计算片块410的相应地址空间之间的可见性。举例来说,每一计算片块410-1、…、410-8可响应于接收到位串或其它数据(例如文件等)而将数据存储于计算片块410的存储器资源中(例如,存储于本文中图5及6中说明的计算片块存储器548或计算片块存储器638中)。计算片块410可使对应于计算片块410中的位置的地址(例如物理地址)与其中存储位串或数据的存储器资源相关联。另外,计算片块410可将与位串或数据相关联的地址解析成逻辑块。
在一些实施例中,与位串相关联的第0逻辑块可转移到处理单元(例如本文中图5及6中说明的处理单元536或处理单元636)。特定计算片块(例如计算片块410-2)可经配置以认识到一组特定逻辑地址是所述计算片块410-2可存取的,而其它计算片块(例如计算片块410-3、410-4等)可经配置以认识到若干组不同逻辑地址是所述计算片块410可存取的。换句话说,第一计算片块(例如计算片块410-2)可存取与所述计算片块410-2相关联的第一组逻辑地址,且第二计算片块(例如计算片块410-3)可存取与其相关联的第二组逻辑地址,等等。
如果在第一计算片块(例如计算片块410-2)处请求对应于第二组逻辑地址(例如可由第二计算片块410-3存取的逻辑地址)的位串或数据,那么NoC 408可促进第一计算片块与第二计算片块(例如计算片块410-3)之间通信以允许第一计算片块存取对应于第二组逻辑地址(例如可由第二计算片块410-3存取的一组逻辑地址)的位串或数据。即,NoC 408可促进计算片块410之间通信以允许计算片块410的地址空间彼此可见。
在一些实施例中,促进地址可见性的计算片块410之间的通信可包含由第一计算片块的事件队列(例如图5及6中说明的事件队列532及632)接收请求存取对应于第二组逻辑地址的位串或数据的消息、将所请求位串或数据加载到第一计算片块的存储器资源(例如本文中图5及6中说明的计算片块存储器538及638)中及/或将所请求位串或数据转移到消息缓冲器(例如本文中图5及6中说明的消息缓冲器534及634)。一旦位串或数据由消息缓冲器缓冲,则位串或数据可经由NoC 408转移到第二计算片块。
在其它实施例中,请求存储于计算片块410中的位串或数据的应用程序可知道哪些计算片块410包含所请求的位串或数据。举例来说,请求存储于计算片块410中的位串或数据的应用程序可指定其中存储位串或数据的地址作为请求的部分。在此实例中,应用程序可从相关计算片块410请求位串或数据,及/或地址可经加载到多个计算片块410中且由请求位串或数据的应用程序经由NoC 408存取。
如图4A中展示,编排控制器406包括与NoC 408物理分离的离散电路系统。NoC 408可为提供为一或多个集成电路的允许计算片块410、媒体控制器412及/或编排控制器406之间通信的通信子系统。NoC 408的非限制性实例可包含允许控制器406、计算装置块410及/或媒体控制器412互连及/或互操作的XBAR或其它通信子系统。
如上文描述,响应于接收到由编排控制器406及/或NoC 408产生的命令,可实现执行在各种格式之间转换位串的操作、使用位串使用通过计算片块410串流传输的位串执行算术运算及/或逻辑运算。
如图4B中展示,编排控制器406驻留于多个计算片块410-1、…、410-8之中的一个计算片块410-1上。如本文中使用,术语“驻留于…上”是指某物物理上定位于特定组件上。举例来说,编排控制器406“驻留于计算片块410中的一者上”指代其中编排控制器406物理上耦合到特定计算片块的条件。术语“驻留于…上”在本文中可与例如“部署于…上”或“定位于…上”的其它术语互换使用。
如上文描述,响应于接收到由计算片块410-1/编排控制器406及/或NoC 408产生的命令,可实现执行在各种格式之间转换位串的操作、使用位串执行算术运算及/或逻辑运算以及从通过计算片块410串流传输的数据块提取相关数据的操作。
如图4C中展示,编排控制器406驻留于NoC 408上。在一些实施例中,提供编排控制器406作为NoC 408的部分导致编排控制器406与NoC 408紧密耦合,此可导致使用编排控制器406执行操作消耗的时间减少。举例来说,在其中编排控制器406驻留于NoC 408上的实施例中,就在执行例如在各种格式之间转换位串的操作以及使用位串执行算术及/或逻辑运算的操作的操作时消耗的时钟循环数来说,可比其中编排控制器406与NoC 208物理相异的实施例实现可在将数据从编排控制器406转移到NoC 408时引起更少时钟循环。
如上文描述,响应于接收到由编排控制器406及/或NoC 408产生的命令,可实现执行在各种格式之间转换位串的操作以及使用通过计算片块410串流传输的位串执行算术及/或逻辑运算的操作。
图5是根据本公开的数个实施例的呈计算片块510的形式的框图。如图5中展示,计算片块510可包含系统事件队列530、事件队列532及消息缓冲器534。计算片块510可进一步包含例如精简指令集计算(RISC)装置的处理单元536、计算片块存储器538部分及直接存储器存取缓冲器539。在一些实施例中,处理单元536可包含一或多个硬件处理器,例如中央处理单元、微处理器、高级RISC机器(ARM)装置等。在一些实施例中,处理单元536可采用指令集架构(ISA),例如x86 ISA、精简指令集计算机(例如RISC-V)ISA等。然而,实施例不限于这些所枚举实例,且可使用其它处理单元536及/或ISA。
系统事件队列530、事件队列532及消息缓冲器534可与例如图1到3及4A到4C中分别说明的编排控制器106/206/306/406的编排控制器通信。在一些实施例中,系统事件队列530、事件队列532及消息缓冲器534可与编排控制器直接通信,或系统事件队列530、事件队列532及消息缓冲器534可与例如图1到3中分别说明的NoC 108/208/308的芯片上网络通信,芯片上网络可进一步与编排控制器通信。
系统事件队列530、事件队列532及消息缓冲器534可从编排控制器接收消息及/或命令及/或可将消息及/或命令发送到编排控制器以控制计算片块510对由计算片块510处理的位串(例如本文中图2及3中说明的位串211及311)执行操作的操作。在一些实施例中,命令及/或消息可包含在执行操作期间分配或取消分配计算片块510可用的资源的消息及/或命令。另外,命令及/或消息可包含使计算片块510的操作与部署于存储控制器(例如图1到4中分别说明的存储控制器104/204/304/404)中的其它计算片块同步的命令及/或消息。
举例来说,系统事件队列530、事件队列532及消息缓冲器534可促进计算片块510与编排控制器之间通信以致使计算片块510在各种格式之间转换位串以及进行使用位串执行算术及/或逻辑运算的操作。另外,系统事件队列530、事件队列532及消息缓冲器534可促进计算片块510与编排控制器之间通信以致使计算片块510减小与位串或包含位串的数据块相关联的数据的大小及/或数量。在非限制性实例中,系统事件队列530、事件队列532及消息缓冲器534可处理从编排控制器接收的命令及/或消息以致使计算片块510对位串执行操作,其中将位串从第一格式(例如浮点格式)转换成第二格式(例如通用数字或posit格式)。在一些实施例中,系统事件队列530、事件队列532及消息缓冲器534可处理从编排控制器接收的命令及/或消息以致使计算片块510对经转换位串执行算术及/或逻辑运算。
系统事件队列530可从编排控制器或NoC接收中断消息。中断消息可由系统事件队列532处理以致使从编排控制器或NoC发送的命令或消息立即执行。举例来说,中断消息可指示系统事件队列532致使计算片块510中止未决命令或消息的操作且代以执行从编排控制器或NoC接收的新命令或消息。在一些实施例中,新命令或消息可涉及启动使用计算片块510处理一或多个位串以在各种格式之间转换位串的操作及/或通过使用经转换位串执行算术及/或逻辑运算来处理位串的操作的命令或消息。
事件队列532可接收可被串行处理的消息。举例来说,事件队列532可从编排控制器或NoC接收消息及/或命令且可处理以串行方式接收的消息,使得消息按其接收顺序处理。可由事件队列接收且处理的消息的非限制性实例可包含来自编排控制器及/或NoC的启动使用位串执行操作的请求消息(例如对计算片块510的远程程序调用)、来自其它计算片块的提供或更改接收消息请求的计算片块的计算片块存储器538中的特定存储器位置的内容的请求消息(例如在计算片块之间启动远程读取或写入操作的消息)、来自其它计算片块的使计算片块之中的数据块的处理同步的消息请求等。
消息缓冲器534可包括用于缓冲从计算片块510转移到计算片块510外部的例如编排控制器、NoC及/或主机的电路系统的数据的缓冲器区域。在一些实施例中,消息缓冲器534可以串行方式操作,使得数据按其由消息缓冲器534接收的顺序从缓冲器转移出计算片块510。消息缓冲器534可通过控制数据从消息缓冲器534转移出的速率来进一步提供路由控制及/或瓶颈控制。举例来说,消息缓冲器534可经配置以依允许数据从计算片块510转移出且不使编排控制器、NoC及/或主机产生数据瓶颈或路由问题的速率将数据从计算片块510转移出,如本文中图1到3及4A到4C中展示。
处理单元536可与系统事件队列530、事件队列532及消息缓冲器534通信且可处理由系统事件队列530、事件队列532及消息缓冲器534接收的命令及/或消息以促进对由计算片块510接收的位串执行操作。举例来说,处理单元536可包含经配置以处理在各种格式之间转换位串、使用位串执行算术运算及/或使用由计算片块510接收的位串执行逻辑运算的命令及/或消息。处理单元536可包含单个核心或可为多核心处理器。
在一些实施例中,计算片块存储器538可为例如随机存取存储器(例如RAM、SRAM等)的存储器资源。然而,实施例不限于此,且计算片块存储器538可包含各种寄存器、高速缓存、缓冲器及/或存储器阵列(例如1T1C、2T2C、3T等DRAM阵列)。举例来说,计算片块存储器538可包含易失性存储器资源、非易失性存储器资源或易失性与非易失性存储器资源的组合。在一些实施例中,计算片块存储器538可为高速缓存、一或多个寄存器、NVRAM、ReRAM、FeRAM、MRAM、PCM、例如3D交叉点(3D XP)存储器装置等的“新兴”存储器装置或其组合。
计算片块存储器538可经配置以从例如存储器装置(例如本文中图1中说明的存储器装置116-1、…、116-N)接收位串。在一些实施例中,位串可包含于数据块中。在一些实施例中,计算片块存储器538可具有约256千字节(KB)的大小,然而,实施例不限于此特定大小,且计算片块存储器538可具有大于或小于256KB的大小。
计算片块存储器538可经分割成一或多个可寻址存储器区域。如图5中展示,计算片块存储器538可经分割成可寻址存储器区域,使得各种类型的数据可存储于其中。举例来说,一或多个存储器区域可存储由计算片块存储器538使用的指令(“INSTR”)541,一或多个存储器区域可存储位串543-1、…、543-N(例如从存储器装置检索的位串),及/或一或多个存储器区域可用作计算片块存储器538的本地存储器(“LOCAL MEM.”)545部分。尽管图5中展示二十(20)个相异存储器区域,但应了解,计算片块存储器538可经分割成任何数目个相异存储器区域。
如上文论述,位串可响应于由编排控制器(例如本文中图1到4中说明的编排控制器106/206/306/406)产生的消息及/或命令而从存储器装置检索。在一些实施例中,命令及/或消息可由例如图1到4中分别说明的媒体控制器112/212/312/412的媒体控制器处理。一旦位串由计算片块510接收,则其可由DMA缓冲器539缓冲且随后存储于计算片块存储器538中。然而,实施例不限于此,且在一些实施例中,位串可响应于由编排控制器产生的消息及/或命令而从主机(例如图1中说明的主机102)检索。
因此,在一些实施例中,计算片块510可提供对从存储器装置接收的位串或数据的数据驱动操作执行。举例来说,计算片块510可响应于接收到位串或数据而开始对从存储器装置接收的位串执行操作(例如在各种格式之间转换位串的操作、使用位串的算术运算、使用位串的逻辑运算等)。
举例来说,由于数据从存储器装置转移到计算片块510的非确定性(例如,因为一些位串或数据块可由于在位串或数据块转移到计算片块510之前由媒体控制器执行的错误校正操作等而花费较长时间到达计算片块510),所以对位串或数据块的数据驱动操作执行可比不以数据驱动方式运行的方法改进计算性能。
在一些实施例中,编排控制器可发送由计算片块510的系统事件队列530接收的命令或消息。如上文描述,命令或消息可为指示计算片块510请求位串且对位串执行在各种格式之间转换位串的操作、对位串执行算术及/或逻辑运算及/或在各种格式之间转换所得位串的操作等的中断。然而,位串或数据块可由于数据从存储器装置转移到计算片块510的非确定性而不立即准备从存储器装置发送到计算片块510。然而,一旦位串或数据块由计算片块510接收,则计算片块510可立即开始执行在各种格式之间转换位串的操作、对位串执行算术及/或逻辑运算及/或在各种格式之间转换所得位串的操作等。换句话说,计算片块510可响应于接收到数据块而开始对位串或数据块执行操作,无需致使对数据块执行操作的额外命令或消息。
在一些实施例中,操作可通过在计算片块存储器538中选择性四处移动数据以在各种格式之间转换位串、对位串执行算术及/或逻辑运算及/或在各种格式之间转换所得位串的操作等来执行。然而,实施例不限于此,且在一些实施例中,处理单元536可从计算片块存储器538接收位串且执行在各种格式之间转换位串的操作、对位串执行算术及/或逻辑运算及/或在各种格式之间转换所得位串的操作等。在对位串执行操作之后,处理单元536可执行指令以将所得位串转移到计算片块存储器的不同分区(例如,转移到块543-N)。在此阶段,所得位串(例如存储于块543-N中的位串)可转移到消息缓冲器534以转移到计算片块510外部的电路系统。
随着所得位串转移到消息缓冲器534,后续位串或数据块可从DMA缓冲器539转移到计算片块存储器538,且可在计算片块存储器538中启动在各种格式之间转换位串的操作、对位串执行算术及/或逻辑运算及/或在各种格式之间转换所得位串的操作等。通过在对先前位串或数据块完成操作之前使后续位串或数据块缓冲到计算片块510中,位串及/或数据块可在没有来自编排控制器的启动对后续数据块的操作的额外命令或消息的情况下通过计算片块连续串流传输。另外,通过抢先将后续数据块缓冲到DMA缓冲器539中,由于数据从存储器装置转移到计算片块510的非确定性的延迟可由于位串及/或数据块在通过计算片块510串流传输时操作而缓解。
在另一非限制性实例中,包含多个位串的数据块可由计算片块510接收。如果期望从数据块得到特定位串或特定数据,那么数据块可存储于计算片块存储器538的特定分区(例如块543-1)中。处理单元536可执行指令以致使特定位串或特定数据(例如所请求或相关数据)移动到计算片块存储器538的不同分区(例如块543-N)。在此阶段,存储于块543-N中的所得位串可转移到消息缓冲器534以转移到计算片块510外部的电路系统。
随着所得位串转移到消息缓冲器534,后续位串或数据块可从DMA缓冲器539转移到计算片块存储器538,且可在计算片块存储器538中启动在各种格式之间转换位串的操作、对位串执行算术及/或逻辑运算及/或在各种格式之间转换所得位串的操作等。尽管上文在所得位串的背景下描述,但实施例不限于此,且计算片块510可以类似方式执行其它操作,例如其中排序、重新排序、移除或丢弃至少一些数据的操作、对数据块的算术运算及/或逻辑运算。
当所得位串从计算片块510移动到计算片块510外部的电路系统(例如,移动到NoC、编排控制器及/或主机)时,处理单元536可发送命令及/或消息到编排控制器,编排控制器又可发送从计算片块存储器538请求所得位串的命令及/或消息。
响应于请求所得位串的命令及/或消息,计算片块存储器538可将所得位串转移到期望位置(例如,转移到本文中图1到3及4A到4C中说明的NoC、编排片块及/或主机)。举例来说,响应于请求所得位串的命令,所得位串可转移到消息缓冲器534且随后从计算片块510转移出。在一些实施例中,从计算片块存储器538转移到NoC、编排控制器及/或主机的数据可为已对其执行在各种格式之间转换位串的操作、对位串执行算术及/或逻辑运算及/或在各种格式之间转换所得位串的操作等的位串。
在一些实施例中,计算装置(例如计算片块510)可包含处理单元536及经配置为处理单元的高速缓存的存储器资源(例如计算片块存储器资源538)。计算装置可经配置以:接收启动将包括具有支持算术运算达到第一精度水平的第一格式的位串的数据转换成具有支持算术运算达到第二精度水平的第二格式的位串的操作的命令;由存储器资源响应于接收到命令而接收位串;及/或响应于接收到数据而对位串执行将数据从第一格式转换成第二格式的操作。
第一格式及第二格式中的至少一者包括浮点格式,且第一格式及第二格式中的另一者包括通用数字格式。举例来说,第一格式及第二格式中的至少一者可包括IEEE 754格式,且第一格式及第二格式中的另一者可包括III型通用数字格式或posit格式。
在一些实施例中,计算装置可经配置以响应于在没有中介命令的情况下接收到位串而对位串执行将位串转换成第二格式的操作,如上文描述。计算装置可进一步经配置以接收中断消息作为启动操作的命令的部分。
如上文描述,计算装置的处理单元536可经配置以使用具有第二格式的位串执行算术运算或逻辑运算或两者。在一些实施例中,计算装置可经配置以致使表示算术运算或逻辑运算或两者的结果的位串在计算装置没有接收到中介命令的情况下转移到计算装置外部的电路系统。
如图5中展示,计算装置可包含在对位串执行操作期间接收包括不同位串的后续数据的缓冲器539。计算装置可经配置以在没有接收到启动后续操作的中介命令的情况下对后续数据执行将后续位串从第一格式转换成第二格式的后续操作。
在一些实施例中,计算片块510可执行上文列出的操作连同执行一或多个机器学习算法。举例来说,计算片块510可执行与一或多个神经网络相关的操作。神经网络可允许算法随时间训练以基于输入信号确定输出响应。举例来说,随时间推移,神经网络可基本上学会更佳最大化完成特定目标的机会。此可有利于机器学习应用,因为神经网络可随时间用新数据训练以实现完成特定目标的机会的最佳最大化。神经网络可随时间训练以改进特定任务及/或特定目标的操作。然而,在一些方法中,机器学习(例如神经网络训练)可为处理密集型(例如,要消耗大量计算机处理资源)及/或可为时间密集型(例如,需要执行消耗多个循环的漫长计算)。相比之下,通过使用计算片块510执行此类操作,例如,通过对呈posit格式的位串执行此类操作,执行操作时消耗的处理资源量及/或时间量可比其中此类操作使用呈浮点格式的位串执行的方法减少。
在非限制性神经网络训练应用中,计算片块510可接收已由转换组件转换成具有等于零(例如,es=0,如结合图7及8A到8B更详细描述)的指数位部分(或“位子集”)的8位posit的浮点位串。与利用半精度16位浮点位串进行神经网络训练的一些方法相比,具有es=0的8位posit位串可比半精度16位浮点位串快两到四倍提供相当神经网络训练结果。
用于训练神经网络中的常见函数是S型函数f(x)(例如随着x→-∞而渐近地接近零及随着x→∞而渐近地接近1的函数)。可用于神经网络训练应用中的S型函数的实例是
Figure GDA0003322781010000241
其需要超过100个时钟循环来使用半精度16位浮点位串进行计算。然而,使用具有es=0的8位posit,相同函数可由计算片块510通过翻转表示x的posit的第一位及右移两个位(可比使用半精度16位浮点位串的相同函数的评估更少花费至少一量值级时钟信号的操作)来评估。
在此实例中,通过接收已由转换组件转换成具有es=0的8位posit位串的位串及接着随后操作计算片块510执行评估关于8位posit位串的实例S型函数的操作,处理时间、资源消耗及/或存储空间可比不包含经配置以执行此类操作的计算片块510的方法减少。此处理时间、资源消耗及/或存储空间减少可改进计算系统的功能,其中计算片块510通过减少用于执行此类操作的时钟信号数(此可减少由计算装置消耗的功率量及/或执行此类操作的时间量)以及通过释放处理及/或存储器资源用于其它任务及功能来操作。
图6是根据本公开的数个实施例的呈计算片块610的形式的另一框图。如图6中展示,计算片块610可包含系统事件队列630、事件队列632及消息缓冲器634。计算片块610可进一步包含指令高速缓存635、数据高速缓存637、处理单元636或“处理装置”(例如精简指令集计算(RISC)装置)、计算片块存储器638部分及直接存储器存取缓冲器639。图6中展示的计算片块610可类似于图5中说明的计算片块510,然而,图6中说明的计算片块610进一步包含指令高速缓存635及/或数据高速缓存637。
指令高速缓存635及/或数据高速缓存637的大小可小于计算片块存储器638。举例来说,计算片块存储器的大小可为约256KB,而指令高速缓存635及/或数据高速缓存637的大小可为约32KB。然而,实施例不限于这些特定大小,只要指令高速缓存635及/或数据高速缓存637的大小小于计算片块存储器638。
在一些实施例中,指令高速缓存635可存储及/或缓冲在处理单元636到计算片块存储器638之间转移的消息及/或命令,而数据高速缓存637可存储及/或缓冲在计算片块存储器638与处理单元636之间转移的数据。
如图6中展示,计算片块存储器资源638可经耦合到入站缓冲电路系统(例如DMA缓冲器639)。处理单元636可经耦合到计算片块存储器资源638、排队电路系统(例如系统事件队列630、事件队列632等)及出站缓冲电路系统(例如消息缓冲器634)。在一些实施例中,处理单元636可经配置以经由排队电路系统接收命令以启动将包括具有支持算术运算达到第一精度水平的第一格式的位串的数据转换成具有支持算术运算达到第二精度水平的第二格式的位串的操作(例如中断消息)。如上文描述,在一些实施例中,第一格式及第二格式中的至少一者可为IEEE 754格式,且第一格式及第二格式中的另一者可为通用数字格式。
处理单元636可进一步经配置以:致使第一位串从入站缓冲电路系统加载到计算片块存储器资源638中;致使计算片块存储器资源638对第一位串执行操作;致使第二位串加载到入站缓冲电路系统中;致使第二位串从入站缓冲电路系统加载到计算片块存储器资源638中;及响应于确定对第一位串的操作完成而致使计算片块存储器资源638对第二位串执行操作。
在一些实施例中,处理单元636可经配置以:致使第二位串加载到入站缓冲电路系统中、加载到计算片块存储器资源638中;及致使计算片块存储器资源638在没有与启动操作的命令分离的额外命令的情况下对第二位串执行操作。
如上文描述,在一些实施例中,处理单元636可经配置以使用具有第二格式的位串执行算术运算或逻辑运算或两者。在执行算术及/或逻辑运算之后,处理单元636可经配置以致使表示算术运算及/或逻辑运算的结果的位串(例如所得位串)在没有接收到中介命令的情况下转移到出站缓冲电路系统且转移到其中部署处理单元636的计算装置(例如计算片块610)外部的电路系统。
图7是具有es个指数位的n位通用数字或“unum”的实例。在图7的实例中,n位unum是posit位串750。如图7中展示,n位posit 750可包含一组正负号位(例如正负号位751)、一组机制位(例如机制位753)、一组指数位(例如指数位755)及一组尾数位(例如尾数位757)。尾数位757可替代地称为“小数部分”或“小数位”,且可表示在小数点后面的位串(例如数字)的一部分。
正负号位751可针对正数为零(0)及针对负数为一(1)。机制位753结合下表1描述,表1展示(二进制)位串及其相关数值意义k。在表1中,数值意义k由位串的运行长度确定。表1的二进制部分中的字母x指示位值与机制的确定无关,因为(二进制)位串响应于连续位翻转或在到达位串末尾时终止。举例来说,在(二进制)位串0010中,位串响应于零翻转到1及接着返回到零而终止。因此,最后一个0与机制无关且机制要考虑的是前导相同位及终止位串的第一相反位(如果位串包含此类位)。
二进制 0000 0001 001X 01XX 10XX 110X 1110 1111
数值(k) -4 -3 -2 -1 0 1 2 3
表1
在图7中,机制位753r对应于位串中的相同位,而机制位
Figure GDA0003322781010000261
对应于终止位串的相反位。举例来说,针对表1中展示的数值k值-2,机制位r对应于前两个前导零,而机制位
Figure GDA0003322781010000262
对应于1。如上文指出,对应于数值k的由表1中的X表示的最终位与机制无关。
如果m对应于位串中相同位的数目,如果位是零,那么k=-m。如果位是1,那么k=m–1。此在表1中说明,其中例如(二进制)位串10XX具有单个1且k=m–1=1-1=0。类似地,(二进制)位串0001包含三个零,因此k=-m=-3。机制可指示useedk的比例因子,其中
Figure GDA0003322781010000263
useed的若干实例值在下表2中展示。
es 0 1 2 3 4
useed 2 2<sup>2</sup>=4 4<sup>2</sup>=16 16<sup>2</sup>=256 256<sup>2</sup>=65536
表2
指数位755对应于指数e,作为无符号数。与浮点数相比,本文中描述的指数位755可不具有与其相关联的偏差。因此,本文中描述的指数位755可表示按因子2e缩放。如图7中展示,可存在高达es个指数位(e1,e2,e3,…,ees),取决于有多少个位留在n位posit750的机制位753的右边。在一些实施例中,此可允许n位posit 750的渐缩准确度,其中在量值上更接近1的数字具有比非常大或非常小的数字更高的准确度。然而,由于非常大或非常小数字在特定种类的操作中不常用,所以图7中展示的n位posit 750的渐缩准确度行为在各种情况中是可期望的。
尾数位757(或小数位)表示任何额外位,其可为位于指数位755右边的n位posit750的部分。类似于浮点位串,尾数位757表示小数f,其可类似于小数1.f,其中f包含在1后面的小数点右边的一或多个位。然而,与浮点位串相比,在图7中展示n位posit 750中,“隐藏位”(例如1)可始终为1(例如单位),而浮点位串可包含具有零的“隐藏位”次正规数(例如0.f)。
图8A是3位posit 850的正值的实例。在图8A中,只有投影实数的右半部,然而,应了解,对应于图8A中展示的其正对应数的负投影实数可存在于表示围绕图8A中展示的曲线的y轴的变换的曲线上。
在图8A的实例中,es=2,因此
Figure GDA0003322781010000271
posit 850的精度可通过将位附加到位串来提高,如图8B中展示。举例来说,将具有值一(1)的位附加到posit 850-1的位串提高posit 850的准确度,如由图8B中posit 850-2展示。类似地,将具有值1的位附加到图8B中posit 850-2的位串提高posit 850-2的准确度,如由图8B中展示的posit850-3展示。可用于将位附加到图8A中展示的posit 850-1的位串以获得图8B中说明的posit 850-2、850-3的插值规则的实例如下。
如果maxpos是图8B中展示的posit 850-1、850-2、850-3的位串的最大正值且minpos是posit 850-1、850-2、850-3的位串的最小值,那么maxpos可等于useed且minpos可等于
Figure GDA0003322781010000272
在maxpos与±∞之间,新位值可为maxpos*useed,且在零与minpos之间,新位值可为
Figure GDA0003322781010000273
这些新位值可对应于新机制位753。在现存值x=2m与y=2n之间,其中m与n相差超过1,新位值可由几何平均数给定:
Figure GDA0003322781010000274
其对应于新指数位755。如果新位值在现存x值与接近其的y值中间,那么新位值可表示算术平均数
Figure GDA0003322781010000275
其对应于新尾数位757。
图8B是使用两个指数位的posit构造的实例。在图8B中,只有投影实数的右半部,然而,应了解,对应于图8B中展示的其正对应数的负投影实数可存在于表示围绕图8B中展示的曲线的y轴的变换的曲线上。图8B中展示的posit 850-1、850-2、850-3各自仅包含两个异常值:当位串的所有位都是零时的零(0)及当位串是一(1)后接所有零时的±∞。应注意,图8B中展示的posit 850-1、850-2、850-3的数值是精确useedk。即,图8B中展示的posit850-1、850-2、850-3的数值是到由机制(例如上文结合图7描述的机制位753)表示的k值的幂的精确useed。在图8B中,posit 850-1具有es=2,因此
Figure GDA0003322781010000281
Figure GDA0003322781010000282
posit 850-2具有es=3,因此
Figure GDA0003322781010000283
且posit 850-3具有es=4,因此
Figure GDA0003322781010000284
作为将位添加到3位posit 850-1以产生图8B的4位posit 850-2的说明性实例,useed=256,因此对应于useed 256的位串具有附加到其的额外机制位且前者useed 16具有附加到其的终止机制位
Figure GDA0003322781010000285
如上文描述,在现存值之间,对应位串具有附加到其的额外指数位。举例来说,数值1/16、1/4、1及4将具有附加到其的指数位。即,对应于数值4的最后1是指数位,对应于数值1的最后零是指数位,等等。此模式可进一步见于posit850-3中,posit 850-3是根据上文规则从4位posit 850-2产生的5位posit。如果另一位添加到图8B中的posit 850-3以产生6位posit,那么尾数位757将附加到1/16与16之间的数值。
解码posit(例如posit 850)以获得其等效数值的非限制性实例如下。在一些实施例中,对应于posit p的位串是范围从-2n-1到2n-1的无符号整数,k是对应于机制位753的整数,且e是对应于指数位755的无符号整数。如果一组尾数位757表示为{f1f2…ffs}且f是由1.f1f2…ffs表示的值(例如,由1后接小数点后接尾数位757表示),那么p可由下文方程式1给定:
Figure GDA0003322781010000286
解码posit位串的另一说明性实例下文结合下表3中展示的posit位串0000110111011101提供如下。
正负号 机制 指数 尾数
0 0001 101 11011101
表3
在表3中,posit位串0000110111011101分解为其若干组构成位(例如正负号位751、机制位753、指数位755及尾数位757)。由于在表3中展示的posit位串中es=3(例如,因为存在三个指数位),所以useed=256。因为正负号位751是零,所以对应于表3中展示的posit位串的数值表达式的值是正的。机制位753具有对应于值-3的三个连续零的运行(如上文结合表1描述)。因此,由机制位753促成的比例因子是256-3(例如useedk)。指数位755将五(5)表示为无符号整数且因此促成额外比例因子2e=25=32。最后,在表3中给定为11011101的尾数位757将二百二十一(221)表示为无符号整数,因此上文给定为f的尾数位757是
Figure GDA0003322781010000291
使用这些值及方程式1,对应于表3中给定的posit位串的数值是
Figure GDA0003322781010000292
图9是表示根据本公开的数个实施例的使用计算片块进行位串运算的实例方法960的流程图。在框962,方法960可包含由耦合到第一控制器的多个计算装置之中的特定计算装置从耦合到计算装置的存储器装置接收包括具有支持算术运算达到第一精度水平的第一格式的位串的数据。计算装置可类似于本文中图1到3、4A到4C、5及6中说明的计算片块110/210/310/410/510/610。存储器资源可类似于图5及6中说明的计算片块存储器538/638,且第一控制器可类似于图1到3及4A到4C中说明的媒体控制器112/212/312/412。
在框964,方法960可包含致使由耦合到多个计算装置的第二控制器执行将位串转换成支持算术运算达到不同于第一精度水平的第二精度水平的第二格式的操作。第二控制器可类似于本文中图1到3及4A到4C中说明的编排控制器106/206/306/406。在一些实施例中,第一格式可包含尾数、底数及指数,且第二格式可包含尾数、机制、正负号及指数。如上文描述,第一格式可为浮点格式且第二格式可为posit格式。在一些实施例中,方法960可包含响应于在没有中介主机命令的情况下接收到具有第一格式的位串而执行将具有第一格式的位串转换成具有第二格式的位串的操作,如上文描述。即,在一些实施例中,方法960可包含在没有从可耦合到多个计算装置的主机接收到主机命令的情况下执行将位串转换成第二格式的操作、算术运算、逻辑运算或其组合。
在框966,方法960可包含使用具有第二格式的位串执行算术运算、逻辑运算或两者。在一些实施例中,方法960可包含由第二控制器分配对应于多个计算装置之中的相应计算装置的资源来执行算术运算、逻辑运算或两者。
在一些实施例中,方法960可包含使用具有第二格式的位串作为用于算术运算及/或逻辑运算的操作数来执行算术运算及/或逻辑运算。举例来说,方法960可包含由主机外部的电路系统使用具有第二格式的位串执行操作。在一些实施例中,操作可为逐位运算、向量运算或其它算术运算及/或逻辑运算,如上文更详细描述。在一些实施例中,操作可为用作训练神经网络的部分的操作。举例来说,操作可为卷积运算、S型函数运算等。
在一些实施例中,方法960可进一步包含确定将执行至少一个子操作作为算术运算、逻辑运算或两者的部分。方法960还可包含:将命令发送到不同于特定计算装置的计算装置以致使子操作执行;及/或使用不同于特定计算装置的计算装置执行子操作作为算术运算、逻辑运算或两者的部分。
方法960可包含由处理单元执行将具有第二格式的位串转换成具有第一格式的第二位串的后续操作。举例来说,方法960可包含以posit格式接收所得位串及使用处理单元执行第二转换操作以将操作的结果转换成浮点格式。
尽管本文中已说明及描述特定实施例,但所属领域的一般技术人员将了解,经计算以实现相同结果的布置可代替所展示的特定实施例。本公开希望涵盖本公开的一或多个实施例的调适或变化。应理解,以说明性方式而非限制性方式进行上文描述。所属领域的技术人员将检阅上文描述之后明白上文实施例的组合及本文中未明确描述的其它实施例。本公开的一或多个实施例的范围包含其中使用上文结构及过程的其它应用。因此,应参考所附权利要求书以及此权利要求书有权获得的等效物的全范围来确定本公开的一或多个实施例的范围。
在前述具体实施方式中,为了简化本公开,将一些特征一起分组在单个实施例中。本公开的方法不应被解译为反映本公开的所公开实施例必须使用比每一权利要求中明确所述的特征更多的特征的意图。实情是,如所附权利要求书反映,发明标的物在于少于所公开单个实施例的所有特征。因此,所附权利要求特此并入到具体实施方式中,其中每个权利要求独立作为单独实施例。

Claims (26)

1.一种设备,其包括:
驻留在存储控制器上的多个计算装置,所述存储控制器驻留在存储器装置上,其中所述多个计算装置彼此耦合,且其中所述计算装置中的各者包括处理单元及经配置为所述处理单元的高速缓存的存储器阵列;
接口,其驻留在所述存储控制器上并耦合到所述多个计算装置且能够耦合到主机装置;及
控制器,其驻留在所述存储控制器上,其中所述控制器耦合到所述多个计算装置且包括经配置以进行以下操作的电路系统:
从耦合到所述设备的存储器装置请求包括具有支持算术运算达到第一精度水平的第一格式的位串的数据;
将所述数据写入至与所述多个计算装置中的第一计算装置相关联的第一存储器阵列;
通过所述多个计算装置中的第二计算装置确定将使用所述第二计算装置执行其中将所述位串转换成支持算术运算达到不同于所述第一精度水平的第二精度水平的第二格式的操作;
响应于所述确定,将来自与所述第一计算装置相关联的所述第一存储器阵列的所述数据写入至与所述第二计算装置相关联的第二存储器阵列;及
致使所述多个计算装置中的所述第二计算装置的所述处理单元执行其中将所述位串转换成支持算术运算达到不同于所述第一精度水平的所述第二精度水平的所述第二格式的所述操作。
2.根据权利要求1所述的设备,其中所述多个计算装置中的至少一个计算装置的所述处理单元经配置以使用具有所述第二格式的所述位串执行算术运算或逻辑运算或两者。
3.根据权利要求1所述的设备,其中所述第一格式或所述第二格式中的至少一者包括浮点格式,且所述第一格式及所述第二格式中的另一者包括通用数字格式。
4.根据权利要求1所述的设备,其中所述第一格式或所述第二格式中的至少一者包括IEEE 754格式,且所述第一格式及所述第二格式中的另一者包括III型通用数字格式或posit格式。
5.根据权利要求1所述的设备,其进一步包括驻留在所述存储控制器上的另一控制器,其中所述另一控制器耦合到所述多个计算装置且包括经配置以执行与所述存储器装置相关联的读取操作、与所述存储器装置相关联的复制操作、与所述存储器装置相关联的错误校正操作或其组合的电路系统。
6.根据权利要求1所述的设备,其中所述控制器进一步经配置以致使所述多个计算装置中的至少一个计算装置的处理装置对所述数据执行操作,其中排序、重新排序、移除或丢弃或其组合至少一些所述数据。
7.根据权利要求1所述的设备,其中每一计算装置的所述处理单元经配置有精简指令集架构。
8.一种系统,其包括:
主机;
耦合到所述主机且包括存储控制器的存储器装置,所述存储控制器具有驻留于其上的第一计算装置和第二计算装置,其中:
所述第一计算装置包括第一处理单元及经配置为所述第一处理单元的高速缓存的第一存储器阵列;
所述第二计算装置包括第二处理单元及经配置为所述第二处理单元的高速缓存的第二存储器阵列,且所述第二计算装置耦合到所述第一计算装置;及
其中所述存储控制器包括耦合到所述第一计算装置和所述第二计算装置的控制器,且其中所述控制器经配置以:
分配所述第一计算装置和所述第二计算装置中的至少一者执行其中将包括具有支持算术运算达到第一精度水平的第一格式的位串的数据转换成支持算术运算达到不同于所述第一精度水平的第二精度水平的第二格式的操作;
将所述数据写入至所述第一计算装置的所述第一存储器阵列或所述第二计算装置的所述第二存储器阵列中的至少一者;
确定将通过不同于所述数据所写入的计算装置的所述第一计算装置或所述第二计算装置中的另一者执行所述操作;
响应于所述确定将来自所述第一存储器阵列或所述第二存储器阵列的所述数据写入至所述第一存储器阵列的所述另一者;及
致使所述第一计算装置和所述第二计算装置中的所述至少一者执行其中将所述位串转换成所述第二格式的操作。
9.根据权利要求8所述的系统,其中所述存储控制器包括另一控制器,所述另一控制器耦合到所述存储器装置且经配置以执行针对所述存储器装置的复制、读取、写入和错误校正操作。
10.根据权利要求8所述的系统,其中所述控制器进一步经配置以,作为所述操作的执行的一部分,致使具有所述第一格式的所述位串和具有所述第二格式的所述位串中的至少一者被转换成逻辑记录。
11.根据权利要求8所述的系统,其中所述第一格式及所述第二格式中的至少一者包括IEEE 754格式,且所述第一格式及所述第二格式中的另一者包括III型通用数字格式或posit格式。
12.根据权利要求8所述的系统,其中所述第一计算装置和所述第二计算装置经配置以使得:
所述第一计算装置能够存取与所述第二计算装置相关联的地址空间;及
所述第二计算装置能够存取与所述第一计算装置相关联的地址空间。
13.根据权利要求8所述的系统,其中所述第一计算装置或所述第二计算装置的所述处理单元经配置以使用具有所述第二格式的所述位串执行算术运算或逻辑运算或两者。
14.根据权利要求8所述的系统,其中所述第一计算装置或所述第二计算装置的所述处理单元经配置以响应于将所述位串转换成所述第二格式的所述操作的完成而使用具有所述第二格式的所述位串执行算术运算或逻辑运算或两者。
15.根据权利要求8所述的系统,其中所述第一计算装置和所述第二计算装置中的至少一者经配置以在缺少来自所述主机的命令的情况下执行其中将所述位串转换成所述第二格式的所述操作。
16.一种系统,其包括:
驻留在存储控制器上的多个计算装置,所述存储控制器驻留在耦合到主机的存储器装置上,其中所述多个计算装置中的每个计算装置包括相应存储器资源及相应处理单元,其中所述多个计算装置之中的计算装置经配置以:
接收包括一或多个位串的相应数据流;及
对所述一或多个位串执行操作以将所述一或多个位串从支持算术运算达到第一精度水平的第一格式转换成支持算术运算达到不同于所述第一精度水平的第二精度水平的第二格式。
17.根据权利要求16所述的系统,其进一步包括耦合到所述多个计算装置的通信子系统,其中所述通信子系统经配置以提供通信路径来允许至少一个计算装置存取与不同计算装置相关联的地址空间。
18.根据权利要求16所述的系统,其进一步包括驻留在所述存储控制器上且耦合到所述计算装置的控制器,其中所述控制器经配置以分配所述多个计算装置之中的特定计算装置来对所述一或多个位串执行所述操作。
19.根据权利要求16所述的系统,其中所述计算装置经配置以响应于接收到启动命令而启动对所述一或多个位串的所述操作,且其中所述计算装置经配置以接收所述相应数据流且在所述启动命令之后在没有命令的情况下对所述一或多个位串执行所述操作。
20.根据权利要求16所述的系统,其中所述计算装置经配置以使用具有所述第二格式的一或多个位串执行算术运算或逻辑运算或两者。
21.根据权利要求16所述的系统,其中所述计算装置进一步包括经配置以进行以下操作的相应直接媒体存取(DMA)缓冲组件:
在对先前位串执行所述操作时缓冲作为所述相应数据流的部分接收的后续位串;及
响应于对所述先前位串完成所述操作而致使所述后续位串转移到所述相应存储器资源。
22.一种方法,其包括:
由驻留在存储控制器上的多个计算装置之中的特定计算装置从耦合到所述计算装置的存储器装置接收包括具有支持算术运算达到第一精度水平的第一格式的位串的数据,所述存储控制器驻留在耦合到主机且耦合到第一控制器的存储器装置上,所述第一控制器驻留在所述存储控制器上;
通过耦合到所述多个计算装置的第二控制器致使执行将所述位串转换成支持算术运算达到不同于所述第一精度水平的第二精度水平的第二格式的操作,所述第二控制器驻留在所述存储控制器上;及
使用具有所述第二格式的所述位串执行算术运算、逻辑运算或两者。
23.根据权利要求22所述的方法,其进一步包括:
确定执行至少一个子操作作为所述算术运算、所述逻辑运算或两者的部分;
发送命令到不同于所述特定计算装置的计算装置以致使执行所述子操作;及
使用不同于所述特定计算装置的所述计算装置执行所述子操作作为执行所述算术运算、所述逻辑运算或两者的部分。
24.根据权利要求22所述的方法,其进一步包括由所述第二控制器分配对应于所述多个计算装置之中的相应计算装置的资源来执行所述算术运算、所述逻辑运算或两者。
25.根据权利要求22所述的方法,其进一步包括在没有从能够耦合到所述多个计算装置的主机接收到主机命令的情况下执行将所述位串转换成所述第二格式的所述操作、所述算术运算、所述逻辑运算或其组合。
26.根据权利要求22所述的方法,其进一步包括将所述位串从浮点格式转换成通用数字格式或将所述位串从所述通用数字格式转换成所述浮点格式。
CN202080031724.6A 2019-04-29 2020-03-05 使用计算片块的位串运算 Active CN113906386B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/397,084 US10990389B2 (en) 2019-04-29 2019-04-29 Bit string operations using a computing tile
US16/397,084 2019-04-29
PCT/US2020/021111 WO2020222910A1 (en) 2019-04-29 2020-03-05 Bit sting operations using a computing tile

Publications (2)

Publication Number Publication Date
CN113906386A CN113906386A (zh) 2022-01-07
CN113906386B true CN113906386B (zh) 2023-02-21

Family

ID=72921649

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080031724.6A Active CN113906386B (zh) 2019-04-29 2020-03-05 使用计算片块的位串运算

Country Status (5)

Country Link
US (2) US10990389B2 (zh)
KR (1) KR20210143929A (zh)
CN (1) CN113906386B (zh)
DE (1) DE112020002174T5 (zh)
WO (1) WO2020222910A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220030106A (ko) * 2020-09-02 2022-03-10 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치
CN114625035A (zh) * 2020-12-14 2022-06-14 北京晶视智能科技有限公司 混合精度的人工智能处理器及其操作方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US4758972A (en) 1986-06-02 1988-07-19 Raytheon Company Precision rounding in a floating point arithmetic unit
US5878266A (en) 1995-09-26 1999-03-02 Advanced Micro Devices, Inc. Reservation station for a floating point processing unit
US6055554A (en) 1998-03-04 2000-04-25 Internatinal Business Machines Corporation Floating point binary quad word format multiply instruction unit
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
JP2000222208A (ja) * 1999-01-29 2000-08-11 Mitsubishi Electric Corp 情報処理装置、命令割当て制御方法、命令割当て制御装置および命令割当て制御プログラムを記録したコンピュータで読取り可能な記録媒体
JP2000293494A (ja) 1999-04-09 2000-10-20 Fuji Xerox Co Ltd 並列計算装置および並列計算方法
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic device
US8106914B2 (en) * 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US20100017649A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm
US8214417B2 (en) 2008-08-14 2012-07-03 Oracle America, Inc. Subnormal number handling in floating point adder without detection of subnormal numbers before exponent subtraction
US8438455B2 (en) 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US20110004644A1 (en) * 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US8745111B2 (en) * 2010-11-16 2014-06-03 Apple Inc. Methods and apparatuses for converting floating point representations
US9104515B2 (en) * 2012-12-14 2015-08-11 Fujitsu Limited Floating-point error detection and correction
JP6219631B2 (ja) 2013-07-29 2017-10-25 学校法人明星学苑 論理演算装置
US9009171B1 (en) 2014-05-02 2015-04-14 Palantir Technologies Inc. Systems and methods for active column filtering
US9477295B2 (en) 2014-05-15 2016-10-25 Dell Products, L.P. Non-volatile memory express (NVMe) device power management
US20150371684A1 (en) 2014-06-18 2015-12-24 NXGN Data, Inc. Ultra high capacity ssd
JP6350296B2 (ja) 2015-01-19 2018-07-04 富士通株式会社 処理プログラム、処理装置および処理方法
US10140093B2 (en) * 2017-03-30 2018-11-27 Arm Limited Apparatus and method for estimating a shift amount when performing floating-point subtraction
US10853067B2 (en) * 2018-09-27 2020-12-01 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations

Also Published As

Publication number Publication date
KR20210143929A (ko) 2021-11-29
WO2020222910A1 (en) 2020-11-05
CN113906386A (zh) 2022-01-07
US20210208887A1 (en) 2021-07-08
US20200341761A1 (en) 2020-10-29
US10990389B2 (en) 2021-04-27
DE112020002174T5 (de) 2022-04-07

Similar Documents

Publication Publication Date Title
CN111724832B (zh) 用于存储器阵列数据结构正数运算的设备、系统及方法
CN112420092B (zh) 位串转换
CN111625183A (zh) 涉及加速电路系统的系统、设备和方法
CN111696610A (zh) 用于位串转换的设备和方法
CN113965205A (zh) 位串压缩
CN113906386B (zh) 使用计算片块的位串运算
CN113805974A (zh) 基于应用程序的数据类型选择
US11016765B2 (en) Bit string operations using a computing tile
CN113918117B (zh) 动态精确度位串累加
CN113553278A (zh) 用于posit运算的加速电路系统
CN114096948B (zh) 位串查找数据结构
CN113454612A (zh) 存储装置操作编排
CN113641602B (zh) 用于posit运算的加速电路系统
CN113454916B (zh) 基于主机的位串转换
CN113924622B (zh) 存储器阵列外围中的位串累加
CN113508363B (zh) 多用户网络中的算术和逻辑运算
CN111694762A (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
GR01 Patent grant
GR01 Patent grant