CN101438232B - 不同浮点格式的浮点加法 - Google Patents

不同浮点格式的浮点加法 Download PDF

Info

Publication number
CN101438232B
CN101438232B CN200680054583.XA CN200680054583A CN101438232B CN 101438232 B CN101438232 B CN 101438232B CN 200680054583 A CN200680054583 A CN 200680054583A CN 101438232 B CN101438232 B CN 101438232B
Authority
CN
China
Prior art keywords
operand
paths
assembly
precision
floating
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.)
Expired - Fee Related
Application number
CN200680054583.XA
Other languages
English (en)
Other versions
CN101438232A (zh
Inventor
A·Y·西夫特索夫
V·Y·戈什泰因
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN101438232A publication Critical patent/CN101438232A/zh
Application granted granted Critical
Publication of CN101438232B publication Critical patent/CN101438232B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Nonlinear Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

描述用于执行浮点加法的方法和设备。在一个实施例中,将多个操作数(306,308)格式转换(310)为共有格式(602,630,650)并进行组合(例如,相加或相减)。

Description

不同浮点格式的浮点加法
技术领域
一般来说,本公开涉及电子领域。更具体来说,本发明的一个实施例涉及用于在计算机***中执行浮点加法的技术。
背景技术
在对实数执行算术运算时,数值的浮点表示可用来提供效率。根据精度要求,可利用不同的浮点表示格式。例如,可将实数表示为单精度浮点数、双精度浮点数或扩展双精度浮点数。为了提高计算效率,一些处理器或计算机***可包括一个以上浮点加法器以便对具有不同浮点格式的数值进行运算。具有用于不同浮点格式的不同浮点加法器会导致在处理器上耗用更多管芯面积以及附加功率。
附图说明
参照附图来提供详细描述。附图中,附图标记最左边的数字标识首次出现该附图标记的附图。不同附图中使用相同的附图标记来表示相似或相同的项。
图1、图8和图9示出可用来实现本文论述的各种实施例的计算***的实施例的框图。
图2示出根据本发明的一个实施例的处理器核的部分的框图。
图3a-b和图4示出根据本发明的各种实施例的浮点加法器的部分的框图。
图5和图6示出根据本发明的各种实施例的操作数格式。
图7示出根据本发明的一个实施例的方法的一个实施例的流程图。
具体实施方式
在以下描述中,阐明大量具体细节,以便提供对各种实施例的透彻了解。但是,即使没有这些具体细节,也可实施一些实施例。在其它情况下,没有详细描述众所周知的方法、过程、组件和电路,以免影响对具体实施例的理解。可使用诸如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)或者硬件和软件的某种组合的各种方式来执行本发明的实施例的各个方面。出于本公开的目的,提到“逻辑”时应表示硬件、软件或者它们的某种组合。
本文论述的一些实施例可提供用于将浮点数相加的有效机制。在一个实施例中,加法和/或减法可使用相同的逻辑。例如,相反符号的浮点数的加法可对应于减法运算。另外,在一个实施例中,用不同的浮点表示格式表示的浮点数(例如,单精度、双精度和/或扩展双精度浮点数)的加法(和/或减法)可使用相同的浮点加法器逻辑。此外,这样一种浮点加法器可在处理器核(例如,参照图1-9论述的处理器核)中使用。更具体来说,图1示出根据本发明的一个实施例的计算***100的框图。***100可包括一个或多个处理器102-1至102-N(本文中一般称作“处理器102”)。处理器102可经由互连或总线104进行通信。每个处理器都可包括各种组件,为了清楚起见,仅参照处理器102-1来论述其中一些组件。因此,其余每个处理器102-2至102-N可包括与参照处理器102-1论述的组件相同或相似的组件。
在一个实施例中,处理器102-1可包括一个或多个处理器核106-1至106-M(本文中称作“核106”)、高速缓存108(在各种实施例中,它可以是共享高速缓存或专用高速缓存)和/或路由器110。处理器核106可在单个集成电路(IC)芯片上实现。另外,该芯片可包括一个或多个共享和/或专用高速缓存(例如高速缓存108)、总线或互连(例如总线或互连112)、存储器控制器(例如,参照图8和图9论述的存储器控制器)或其它组件。
在一个实施例中,路由器110可用于在处理器102-1和/或***100的各个组件之间进行通信。另外,处理器102-1可包括一个以上路由器110。另外,这些路由器(110)可进行通信,以便使得能够在处理器102-1的内部或外部的各个组件之间路由数据。
高速缓存108可存储供处理器102-1的一个或多个组件(如核106)使用的数据(例如,包括指令)。例如,高速缓存108可本地缓存存储在存储器114中的数据,以便由处理器102的组件进行更快速的访问。如图1所示,存储器114可经由互连104与处理器102进行通信。在一个实施例中,高速缓存108(可以被共享)可包括中间级高速缓存和/或最后一级高速缓存(LLC)。并且,每个核106还可包括1级(L1)高速缓存(116-1)(本文中一般称作“L1高速缓存116”)。处理器102-1的各个组件可直接、或通过总线(例如总线112)和/或存储器控制器或集线器来与高速缓存108进行通信。
图2示出根据本发明的一个实施例的处理器核106的部分的框图。在一个实施例中,图2中示出的箭头说明指令在核106中的流向。一个或多个处理器核(例如处理器核106)可在单个集成电路芯片(或管芯)上实现,例如参照图1所论述的。另外,该芯片可包括一个或多个共享和/或专用高速缓存(例如,图1中的高速缓存108)、互连(例如,图1中的互连104和/或112)、存储器控制器或其它组件。
如图2所示,处理器核106可包括用于提取指令以供核106执行的提取单元202。可从诸如存储器114和/或参照图8和图9论述的存储器装置的任何存储装置中提取指令。核106还可包括用于对所提取的指令进行解码的解码单元204。例如,解码单元204可将提取的指令解码为多个μop(微操作)。此外,核106可包括调度单元206。调度单元206可执行与存储解码指令(例如,从解码单元204接收的指令)关联的各种操作,直到指令准备好用于分发为止,例如直到解码指令的所有源值变为可用为止。在一个实施例中,调度单元206可向执行单元208调度和/或发出(或分发)解码指令以用于执行。执行单元208可在指令被解码(例如,由解码单元204解码)和分发(例如,由调度单元206分发)之后执行分发的指令。在一个实施例中,执行单元208可包括一个以上执行单元,例如存储器执行单元、整数执行单元、浮点执行单元或其它执行单元。执行单元208还可执行各种算术运算,例如加法、减法、乘法和/或除法,并且可包括一个或多个算术逻辑单元(ALU)。在一个实施例中,协处理器(未示出)可结合执行单元208来执行各种算术运算。
如图2所示,执行单元208可包括浮点(FP)加法器209,用于对可用不同的浮点表示格式表示的浮点数执行加法、减法、比较和/或格式转换。在一个实施例中,相加和/或相减的浮点数可具有任何格式,例如包括单精度、双精度和/或扩展双精度浮点数格式(例如,参照图5和图6论述的格式)。在一个实施例中,加法器209可响应单指令多数据(SIMD)指令而进行操作。一般来说,SIMD指令可导致同时(例如,并行地)对多个数据片段执行相同操作。另外,根据至少一个指令集架构,SIMD指令可对应于SIMD流技术扩展(SSE)或其它形式的SIMD流技术实现(例如,SIMD流技术扩展2(SSE2))。本文将参照例如图3-7进一步论述与加法器209的各种实施例有关的其它细节。而且,执行单元208可包括一个以上浮点加法器209。另外,执行单元208可无序地执行指令。因此,在一个实施例中,处理器核106可以是无序处理器核。核106还可包括引退(retirement)单元210。引退单元210可在提交执行指令之后引退执行指令。在一个实施例中,执行指令的引退可导致从指令的执行中提交处理器状态、解除对指令所用的物理寄存器的分配等。
此外,核106还可包括跟踪高速缓存或微代码只读存储器(μROM)212,它用于存储所提取(例如由提取单元202提取)的指令的微代码和/或踪迹。存储在μROM212中的微代码可用来配置核106的各种硬件组件。在一个实施例中,可从与处理器核106通信的另一个组件(例如,参照图8和图9论述的计算机可读介质或其它存储装置)中加载存储在μROM212中的微代码。核106还可包括总线单元220,它用于使得能够经由一条或多条总线(例如,总线104和/或112)而在处理器核106的组件与其它组件(例如,参照图1论述的组件)之间进行通信。核106还可包括一个或多个寄存器222,用于存储供核106的各个组件访问的数据。
图3a-b示出根据本发明的一个实施例的浮点加法器(209)的各部分的框图。图3a-b中的浮点加法器209可以与参照图2论述的浮点加法器209相同或相似。根据本发明的一个实施例,加法器209的各种信号通路的宽度如图3a-b所示。而且,如图3a-b所示,加法器209可包括指数(exponent)通路302和尾数通路304,用于执行与两个操作数306和308的加法(或减法)对应的各种运算。
如图3a-b所示,加法器209可包括包含对齐部分305在内的多个部分。对齐部分305可包括操作数格式转换逻辑310,用于例如将操作数306和308中的一个或多个操作数从第一格式(例如,如图5所示的格式)修改为第二格式(例如,如图6所示的格式)。指数通路302可接收与算术运算(例如,加法或减法)对应的操作码312。逻辑314可确定(例如,从包含预定义数据的表或存储单元中查找)与转换指令的操作码312对应的指数。一般来说,转换指令可对单个操作数(例如操作数308)进行运算,而向另一个操作数(例如操作数306)提供零值。因此,在一个实施例中,来自逻辑314的预定义指数可用来计算所得指数,并在需要时对齐数据,这将参照图3a-b进一步论述。为此,复用器316可接收和选择来自逻辑314的指数之一以及与操作数之一(例如操作数306)对应的指数。在一个实施例中,复用器316可根据操作码312来选择它的输入之一。指数差逻辑318可接收和比较来自复用器316的所选指数以及与操作数308对应的指数。逻辑318可根据比较(在一个实施例中,可以是一个或多个减法运算)的结果来生成一个或多个信号,并将生成的信号(例如,减法结果和进位输出)提供给加法器209的各个组件,以便例如提供尾数对齐,例如参照图3a-b所述和所示。
尾数通路304可包括逻辑320和322,它们用于从逻辑310接收格式转换的操作数,并根据例如从逻辑318进行的指数差计算中生成的进位输出信号来交换尾数(或提取尾数的一部分)。使用旋转器(例如逻辑324和326)和掩码生成器(例如掩码生成器336和338)来执行与具有较小指数的操作数对应的尾数的对齐。在一个实施例中,可使用由逻辑318生成的一个或多个信号来确定移位码对齐,以便例如使得能够通过旋转器324和326来将对应于具有较小指数的操作数的尾数向右循环移位。而且,在一个实施例中,逻辑318向逻辑324和326提供的移位码信号可以是五位宽。对于双精度和扩展双精度操作数,在一个实施例中,提供给逻辑324和326的移位码(和/或进位输出)信号可以相同。另外,逻辑320和322可向反相器328和330以及复用器332和334提供具有较大指数的操作数306和308的尾数。另外,掩码生成器336和338可根据来自逻辑318的移位码信号来生成掩码,以便使得能够将逻辑324和326的输出移动一个或多个位。
如图3a-b所示,逻辑324和326的输出可分别通过逻辑340和342向左移一个位。具体来说,操作数分析器344可分析操作数306和308,并且如果操作数之一是不规则的,则生成一个或多个信号以便使得能够在逻辑340和342中移位。逻辑346在逻辑上组合(例如,通过使用“与”运算)掩码生成器336和逻辑340的输出。类似地,逻辑348在逻辑上组合(例如,通过使用“与”运算)掩码生成器338和逻辑342的输出。复用逻辑350接收逻辑346和348的输出,并向加法器209的加法部分355中的每个加法器352和354的输入端之一提供信号。将参照图4进一步论述与逻辑346、348和350的一个实施例有关的其它细节。
如图3a-b所示,加法器352和354还可从复用器332和334接收输入信号。复用器332和334可根据基于操作码(312)和操作数(例如,操作数306和308)的符号生成的信号356(Compl_Hi)和358(Compl_Lo)来选择它们的输入之一,以便由操作码解码器逻辑(未示出)来提供(真正的)减法(例如,相同符号的操作数的减法或者不同符号的操作数的加法)或(真正的)加法(例如,不同符号的操作数的减法或者相同符号的操作数的加法)运算。因此,加法器352和354可分别通过例如复用器332和334来接收对齐和非对齐的尾数,而复用器332和334又可提供通过逻辑320和322选择的非反相或反相(例如通过反相器328和330反相)的尾数。加法器352和354还接收进位输入(carry in)信号。例如,加法器354接收信号358作为进位输入信号,以便例如为真正的减法情况提供全二的补码。加法器352接收通过复用器362根据操作码312的精度格式提供的来自加法器354的进位输出(carry out)信号360或信号356作为其进位输入信号。将加法器352和354的输出提供给反相器364和366以及复用器368和370。复用器368和370可分别根据由加法器352和复用器371生成的选择信号来选择它们的输入信号之一作为输出。在一个实施例中,由于对于真正的减法情况,可对具有较大或相等指数的操作数的尾数进行二的补码,所以加法的结果可以为负,并且可进行二的补码。可通过反演加法器352和354的结果,并使用舍入器硬件(例如逻辑397)将二进制一(“1”)相加,来执行二的补码(two’s complementing)。由于例如加法器209可支持渐进下溢,所以加法部分355的指数通路302还可包括用于生成归一化用的限制器移位值的逻辑372。
将复用器368和370以及逻辑372的输出提供给(加法器209的)归一化部分373,它包括前导零检测(LZD)逻辑374和376。更具体来说,通过例如检测由加法器352和354通过复用器368和370提供的加法结果中的前导零,逻辑374和376可确定用于归一化的移位码。可将来自逻辑374和376的输出信号连同来自复用器368和370的输出信号一起提供给逻辑378和380。逻辑378和380可根据逻辑374和376的输出来执行向左循环移位,以便提供对加法结果的归一化。如图3a-b所示,可将逻辑374和376的输出提供给指数调节逻辑382以及掩码生成器384和386。掩码生成器384和386可根据来自逻辑374和376的移位码信号来生成掩码,以便使得能够分别通过逻辑388和390来对逻辑378和380的输出进行归一化(normalization)。在一个实施例中,逻辑388和390可在逻辑上组合它们的输入(例如,通过利用逻辑“与”运算),例如参照逻辑346和348所论述的。可通过复用逻辑392(例如,在一个实施例中参照逻辑350所论述的)来选择来自逻辑388和390的输出信号,以便将输出提供给加法器209的舍入部分393。根据一个实施例,逻辑392可向舍入部分393提供保护位和/或舍入位。
在一个实施例中,在加法器209的加法部分355中,通过例如在逻辑上组合(例如,通过逻辑“或”运算)由逻辑346和348提供的移位输出位,逻辑394和395可计算粘着位(sticky bit),这将参照图4进一步进行论述。而逻辑396又可组合逻辑394和395的输出,以便为两个单精度操作数提供两个粘着位以及为双精度和扩展双精度操作数提供单个粘着位。将来自逻辑396和392的输出信号提供给舍入器逻辑397,以便对尾数的加法(或减法)执行舍入。此外,逻辑398可接收来自逻辑382的指数,并且通过例如在发生上舍入时添加一来修改(或固定)上舍入情况的指数。另外,逻辑382可根据归一化用的移位码(例如,由逻辑374和376提供)来调节指数(例如,从逻辑318接收的)。在一个实施例中,逻辑382可将由逻辑318提供的较大指数减去从逻辑374和376接收的移位码。因此,在一个实施例中,可对于归一化(例如,通过逻辑382)和上舍入(round up)情况(例如,通过逻辑398)来校正由逻辑318提供的较大指数。
在一个实施例中(例如,如图3a-b所示),尾数通路304可包括两个独立通路,用于处理操作数306和308的最高有效(MS)32位和最低有效(LS)36位。例如,第一MS32位通路(例如,包括逻辑320、324、352和/或378)可对第一组数据(例如,一对单精度浮点尾数,例如参照图6中的操作数602所论述)进行操作,而第二LS36位通路(例如,包括逻辑322、326、354和/或380)可对第二组数据(可以是一对不同的单精度浮点尾数)进行操作。因此,可在这两个通路中单独处理两对单精度尾数。并且,可使用第一和第二通路的组合来对双精度或扩展双精度操作数(例如,图6中的操作数630和/或650)进行操作。如图3a-b所示,逻辑350和392可实现这两个尾数通路之间的信号的组合。
图4示出根据本发明的一个实施例的图3a-b中的加法器209的各部分的其它细节的框图。如图4所示,可将由逻辑318生成的信号402-410提供给复用器412-416。可通过根据操作码312的精度格式生成的信号来选择复用器412-416的输入。分别将复用器412、414和416的输出提供给逻辑320、逻辑336和324、以及逻辑338和326。在各种实施例中,信号402可对应于用于在单精度情况对齐MS32位的移位码;信号404可对应于用于在双精度或扩展双精度情况对齐的移位码;信号406可对应于用于在单精度情况对齐LS36位的移位码;信号408可对应于来自第二对单精度数据的指数差的进位输出信号;以及信号410可对应于来自双精度或扩展双精度数据的指数差的进位输出信号。
如图4所示,在一个实施例中,逻辑346可包括用于将逻辑340和336的输出组合的“与”门424和426。类似地,逻辑348可包括用于将逻辑338和342的输出组合的“与”门428和430。可将门426和430的输入之一反演(invert),例如如图4所示。另外,“或(OR)”门434可将门426和428的输出组合(例如,通过在逻辑上对门426和428的输出进行“或”运算)。此外,逻辑350可包括复用器436-440。如图所示,复用器436-440的输入可通过信号442来选择,信号442由逻辑(例如,根据操作码312的精度格式以及来自图3中的318的信号)生成以指示如何将对齐的尾数与来自存储单元441(在一个实施例中,它可以是硬件寄存器)以及逻辑424、434和428的信号进行组合。此外,复用器436-440可接收来自存储单元441的信号(例如,包含全零),以便对于指数差大于32位的情况采用零来填充逻辑350的输出的前32位,或者对于指数差大于64位的情况采用零来填充逻辑350的输出的前64位。逻辑350可采用68位格式444(在一个实施例中,它包括最高有效(MS)32位部分446、中间32位部分448和最低有效(LS)4位部分450)来将复用器436-440的输出提供给加法器352和354,例如如图4所示。
在各种实施例中,可按照下列情况中的一种或多种情况来提供各部分446、448和450:
-如果操作码312对应于单精度格式,并且第二对单精度操作数(306和308)的指数差(318)小于24,则可由逻辑424通过逻辑436来提供部分446。类似的情况也可适用于第一对操作数(306、308);即,可由逻辑428通过逻辑438来提供部分448。另外,在一个实施例中(例如,参照图5和图6所论述),每个操作数(306和308)可包括两个单精度数(例如,op1={x1,x0},且op2={y1,y0},其中“{}”表示并置)。在这样一个实施例中,第一对可对应于x0和y0,而第二对可对应于x1和y1;
-如果操作码312对应于双精度或扩展双精度格式,并且指数差(318)小于32,则可由逻辑424来提供部分446,并且可由逻辑434来提供部分448;
-如果操作码312对应于双精度或者扩展双精度格式,并且指数差(318)小于64但大于32,则可由存储单元441来提供部分446,并且可由逻辑424来提供部分448;
-如果操作码312对应于双精度或扩展双精度格式,并且指数差(318)大于64,则可从存储单元441来提供部分446,可由存储单元441来提供部分448,并且可由逻辑424来提供部分450。
图5示出根据本发明的一个实施例的图3a-b中的操作数306和308的示例操作数格式500。图6示出在通过图3a-b中的逻辑310格式转换图5中的操作数之后、与图5中的格式500对应的格式转换的浮点加法器操作数格式600。根据本发明的一些实施例来说明图5和图6中示出的操作数的每个字段的宽度。
参照图5,单精度操作数502(在一个实施例中,它可表示两个单精度浮点数)可包括符号字段504和506、指数字段508和510、以及尾数字段512和514。并且,双精度操作数520也可包括符号字段522、指数字段524和尾数字段526。另外,扩展双精度操作数530可包括符号字段532、指数字段534、J字段536(它可指示尾数是否是归一化的)和尾数字段538。一般来说,J位(536)可对应于尾数的整数部分,它在单精度和双精度格式中可隐藏。另外,对于不规则数,可将J位设置为零。
参照图6,单精度操作数602可包括符号字段604(它可对应于符号字段504)、指数字段606和608(在一个实施例中,它们可对应于字段508和510)、零字段610(它可对应于符号字段506)、上溢字段612和614(例如,指示加法器209的通路中的上溢条件)、J字段616和618(例如,指示对应浮点数是规则的)、以及尾数字段620和622(在一个实施例中,它们可对应于字段512和514)。并且,双精度操作数630可包括符号字段632(在一个实施例中,它可对应于字段522)、指数字段634(在一个实施例中,它可对应于字段524)、上溢字段636(例如,指示上溢条件)、J字段638(例如,指示对应浮点数是规则的)、以及尾数字段640(在一个实施例中,它可对应于字段526)。另外,扩展双精度操作数650可包括符号字段652(在一个实施例中,它可对应于字段532)、指数字段654(在一个实施例中,它可对应于字段534)、上溢字段656(例如,指示上溢条件)、J字段658(例如,指示对应浮点数是规则的)、以及尾数字段660(在一个实施例中,它可对应于字段538)。如图6所示,操作数602、630和650的其它字段可以不使用(例如具有全零)。在一个实施例中,逻辑310可分别将操作数502、520和530格式转换为操作数602、630和650。
图7示出根据本发明的一个实施例用于将浮点数相加和/或相减的方法的一个实施例的流程图。在一个实施例中,可用不同的浮点表示格式来表示相加和/或相减的浮点数,例如两个单精度、双精度和/或扩展双精度浮点数(例如,参照图5和图6所论述的浮点数)。在一个实施例中,可利用参照图1-6和图8-9论述的各种组件来执行参照图7论述的一个或多个操作。例如,方法700可用于将由诸如高速缓存108、高速缓存116、存储器114和/或寄存器222的存储单元存储(和/或从其中读取)的浮点数相加和/或相减。
参照图1-7,在操作702,加法器209可接收操作码312和操作数306-308。在操作704,逻辑310可将操作数306-308格式转换,例如参照图3a-b所论述的。在操作706,逻辑318可比较指数,例如参照图3a-b所论述的。在操作708,可通过对齐部分305来对齐格式转换后的操作数的尾数。在操作710,可将对齐的尾数进行组合(例如相加或相减),例如参照图3a-b中的加法部分355所论述的。在操作712,可通过归一化部分373来将加法器209的加法部分355的结果进行归一化。然后,在操作714,可通过例如参照图3a-b论述的舍入部分393来对来自加法器209的归一化部分373的结果进行舍入。
图8示出根据本发明的一个实施例的计算***800的框图。计算***800可包括一个或多个中央处理单元(CPU)802或处理器,它们经由互连网络(或总线)804进行通信。处理器802可包括通用处理器、网络处理器(用于处理通过计算机网络803传递的数据)或其它类型的处理器(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC)处理器)。另外,处理器802可具有单核或多核设计。具有多核设计的处理器802可将不同类型的处理器核集成在同一个集成电路(IC)管芯上。而且,具有多核设计的处理器802可实现为对称或不对称的多处理器。在一个实施例中,其中一个或多个处理器802可以与图1中的处理器102相同或相似。例如,其中一个或多个处理器802可包括一个或多个核106(例如,包括加法器209)和/或高速缓存108。并且,可由***800的一个或多个组件来执行参照图1-7论述的操作。
芯片组806也可与互连网络804进行通信。芯片组806可包括存储器控制器集线器(MCH)808。MCH808可包括与存储器114进行通信的存储器控制器810。存储器114可存储数据,包括供CPU802或计算***800中包含的任何其它装置执行的指令序列。在本发明的一个实施例中,存储器114可包括一个或多个易失性存储(或存储器)装置,例如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其它类型的存储装置。还可使用非易失性存储器,例如硬盘。附加装置可经由互连网络804进行通信,例如多个CPU和/或多个***存储器。
MCH808还可包括与图形加速器816进行通信的图形接口814。在本发明的一个实施例中,图形接口814可经由加速图形端口(AGP)与图形加速器816进行通信。在本发明的一个实施例中,显示器(例如平板显示器)可通过例如信号转换器与图形接口814进行通信,其中信号转换器用于将存储在诸如视频存储器或***存储器的存储装置中的图像的数字表示转换成可由显示器解释和显示的显示信号。由显示装置产生的显示信号可经过各种控制装置,然后由显示器进行解释并且随后在显示器上显示。
集线器接口818可允许MCH808和输入/输出控制器集线器(ICH)820进行通信。ICH820可提供到与计算***800进行通信的I/O装置的接口。ICH820可通过诸如***组件互连(PCI)桥、通用串行总线(USB)控制器或其它类型的***桥或控制器的***桥(或控制器)824来与总线822进行通信。桥824可提供CPU802与***装置之间的数据通路。可使用其它类型的拓扑。而且,多条总线可通过例如多个桥或控制器来与ICH820进行通信。另外,在本发明的各种实施例中,与ICH820进行通信的其它***设备可包括集成驱动电子装置(IDE)或小型计算机***接口(SCSI)硬盘驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持装置(例如数字视频接口(DVI))或其它装置。
总线822可与音频装置826、一个或多个磁盘驱动器828和网络接口装置830(它与计算机网络803通信)进行通信。其它装置可经由总线822进行通信。而且,在本发明的一些实施例中,各种组件(例如网络接口装置830)也可与MCH808进行通信。此外,可将处理器802和MCH808组合以形成单个芯片。另外,在本发明的其它实施例中,图形加速器816可包含在MCH808中。
另外,计算***800可包括易失性和/或非易失性存储器(或存储装置)。例如,非易失性存储器可包括下列存储器中的一种或多种存储器:只读存储器(ROM),可编程ROM(PROM),可擦除PROM(EPROM),电EPROM(EEPROM),磁盘驱动器(例如828),软盘,致密盘ROM(CD-ROM),数字多功能盘(DVD),闪速存储器,磁-光盘,或者能够存储电子数据(例如包括指令)的其它类型的非易失性机器可读介质。
图9示出根据本发明的一个实施例按照点对点(PtP)配置布置的计算***900。具体来说,图9示出其中处理器、存储器和输入/输出装置通过多个点对点接口互连的***。可通过***900的一个或多个组件来执行参照图1-8论述的操作。
如图9所示,***900可包括若干个处理器,为了清楚起见,仅示出其中两个处理器,即处理器902和904。处理器902包括用于实现与存储器910的通信的本地存储器控制器集线器(MCH)906,处理器904包括用于实现与存储器912的通信的本地存储器控制器集线器(MCH)908。存储器910和/或912可存储各种数据,例如参照图8中的存储器114论述的数据。
在一个实施例中,处理器902和904可以是参照图8论述的其中一个处理器802。处理器902和904可分别使用点对点(PtP)接口电路916和918经由PtP接口914来交换数据。并且,处理器902可使用点对点接口电路926、930经由单独PtP接口922来与芯片组920交换数据,处理器904可使用点对点接口电路928、932经由单独PtP接口924来与芯片组920交换数据。芯片组920还可使用例如PtP接口电路937经由高性能图形接口936来与高性能图形电路934交换数据。
可在处理器902和904中提供本发明的至少一个实施例。例如,图1中的一个或多个核106(例如包括加法器209)和/或高速缓存108可设置在处理器902和904中。但是,本发明的其它实施例可存在于图9的***900的其它电路、逻辑单元或装置中。另外,本发明的其它实施例可分布在若干个如图9所示的电路、逻辑单元或装置上。
芯片组920可使用PtP接口电路941来与总线940进行通信。总线940可具有与其通信的一个或多个装置,例如总线桥942和I/O装置943。经由总线944,总线桥943可与诸如键盘/鼠标945、通信装置946(例如,调制解调器、网络接口装置或可与计算机网络803进行通信的其它通信装置)、音频I/O装置和/或数据存储装置948的其它装置进行通信。数据存储装置948可存储可供处理器902和/或904执行的代码949。
在本发明的各种实施例中,本文中参照例如图1-9论述的操作可实现为硬件(例如电路)、软件、固件、微代码或者它们的组合,它们可作为计算机程序产品来提供,包括例如其中存储了用于将计算机编程为执行本文论述的过程的指令(或软件过程)的机器可读或计算机可读介质。并且,举例来说,术语“逻辑”可包括软件、硬件或者软件和硬件的组合。机器可读介质可包括例如针对图1-9论述的存储装置。此外,这类计算机可读介质可作为计算机程序产品来下载,其中,程序可通过在载波或其它传播介质中实施的数据信号、经由通信链路(例如,总线、调制解调器或网络连接)从远程计算机(例如服务器)传递到请求计算机(例如客户机)。因此,在本文中,应将载波视为是包括机器可读介质。
说明书中提到“一个实施例”时表示,结合该实施例描述的特定特征、结构或特性包含在至少一个实现中。在本说明书的各个位置中出现短语“在一个实施例中”时可能或者可能不是全部指同一个实施例。
而且,在本描述和权利要求中,可使用术语“耦合”和“连接”及其派生词。在本发明的一些实施例中,“连接”可用来指示两个或两个以上元件相互直接物理或电接触。“耦合”可表示两个或两个以上元件直接物理或电接触。但是,“耦合”也可表示两个或两个以上元件可能不是相互直接接触,而是可能仍然相互配合或交互。
因此,虽然上文用结构特征和/或方法动作特有的语言描述了本发明的实施例,但是应理解,要求权利的主题可不局限于所描述的特定特征或动作。确切地说,这些特定特征和动作是作为实现要求权利的主题的示例形式来公开的。

Claims (18)

1.一种处理器,包括:
第一组件,用于将第一操作数(306,308)从第一浮点格式(502,520,530)转换成第二不同的浮点格式(602,630,650);以及
尾数通路,其包括第二组件(352,354),所述第二组件(352,354)用于通过加法运算或减法运算将转换后的第一操作数的尾数部分与所述第二不同的浮点格式的第二操作数的尾数部分进行组合,
其中所述尾数通路包括两个通路,这两个通路可操作以单独处理两对单精度操作数或组合以对双精度操作数和扩展双精度操作数进行操作。
2.如权利要求1所述的处理器,还包括第三组件(318),用于将对应于所述第一操作数的第一指数与所述第二操作数的第二指数进行比较。
3.如权利要求1所述的处理器,还包括第三组件,用于将所述第二操作数转换成所述第二不同的浮点格式。
4.如权利要求1所述的处理器,还包括第三组件(397),用于对通过所述第二组件进行的所述组合的结果进行舍入。
5.如权利要求1所述的处理器,还包括第三组件(344),用于分析转换后的第一操作数和所述第二操作数的一部分,以便确定所述第一或第二操作数其中之一是否对应于不规则操作数。
6.如权利要求1所述的处理器,还包括一个或多个处理器核(106),其中所述一个或多个处理器核中的至少一些处理器核包括所述第一组件或所述第二组件中的一个或多个组件,以及其中所述两个通路包括第一最高有效32位通路和第二最低有效36位通路,这两个通路可操作以单独处理两对单精度操作数,以及多个复用器组合第一最高有效32位通路和第二最低有效36位通路以对双精度操作数和扩展双精度操作数进行操作。
7.如权利要求6所述的设备,其中,所述一个或多个处理器核(106)中的至少一个处理器核、所述第一组件和所述第二组件在相同管芯上。
8.一种用于浮点组合的方法,包括:
由包括尾数通路的处理器接收多个操作数,
将所述多个操作数修改(704)成相同浮点格式,其中所述修改包括将所述多个操作数从第一浮点格式(502,520,530)修改成第二不同的浮点格式(602,630,650);以及
通过加法运算或减法运算组合(710)与所修改的多个操作数对应的多个尾数,
其中所述尾数通路包括两个通路,这两个通路单独处理两对单精度操作数或组合以对双精度操作数和扩展双精度操作数进行操作。
9.如权利要求8所述的方法,还包括:比较(706)所修改的多个操作数的指数部分,其中所述两个通路包括第一最高有效32位通路和第二最低有效36位通路,这两个通路可操作以单独处理两对单精度操作数,以及多个复用器组合第一最高有效32位通路和第二最低有效36位通路以对双精度操作数和扩展双精度操作数进行操作。
10.如权利要求8所述的方法,还包括:对齐(708)所述多个操作数的尾数部分。
11.如权利要求8所述的方法,还包括:对所述多个尾数的组合结果进行归一化(712)。
12.如权利要求8所述的方法,还包括:对所述多个尾数的组合结果进行舍入(714)。
13.一种用于处理浮点数的***,包括:
存储器(108,114,116),用于存储数据;
第一组件(202),用于从所述存储器中提取具有操作码(312)的指令、第一操作数(306)和第二操作数(308);
第二组件(310),用于将所述第一操作数和所述第二操作数修改成相同浮点格式,其中所述第二组件要将所述第一操作数和所述第二操作数从第一浮点格式(502,520,530)修改成第二不同的浮点格式(602,630,650);以及
尾数通路,其包括第三组件(324,326),所述第三组件(324,326)用于根据对应于所述第一操作数的第一指数与对应于所述第二操作数的第二指数的比较(318)来对齐所述第一或第二操作数其中之一,
其中所述尾数通路包括两个通路,这两个通路单独处理两对单精度操作数或组合以处理双精度操作数和扩展双精度操作数。
14.如权利要求13所述的***,还包括第四组件(352,354),用于将所述第一操作数的尾数部分与所述第二操作数的尾数部分进行组合。
15.如权利要求13所述的***,还包括第四组件(344),用于分析所述第一操作数的一部分和所述第二操作数的一部分,以便确定所述第一或第二操作数其中之一是否对应于不规则操作数。
16.如权利要求13所述的***,其中,所述存储器包括1级高速缓存、中间级高速缓存或最后一级高速缓存中的一个或多个高速缓存,其中所述两个通路包括第一最高有效32位通路和第二最低有效36位通路,这两个通路可操作以单独处理两对单精度操作数,以及多个复用器组合第一最高有效32位通路和第二最低有效36位通路以对双精度操作数和扩展双精度操作数进行操作。
17.如权利要求13所述的***,还包括用于访问存储在所述存储器中的数据的多个处理器核(106),其中所述两个通路包括第一最高有效32位通路和第二最低有效36位通路,这两个通路可操作以单独处理两对单精度操作数,以及多个复用器组合第一最高有效32位通路和第二最低有效36位通路以对双精度操作数和扩展双精度操作数进行操作。
18.如权利要求13所述的***,还包括音频装置(947),其中所述两个通路包括第一最高有效32位通路和第二最低有效36位通路,这两个通路可操作以单独处理两对单精度操作数,以及多个复用器组合第一最高有效32位通路和第二最低有效36位通路以对双精度操作数和扩展双精度操作数进行操作。
CN200680054583.XA 2006-05-16 2006-05-16 不同浮点格式的浮点加法 Expired - Fee Related CN101438232B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/RU2006/000236 WO2007133101A1 (en) 2006-05-16 2006-05-16 Floating point addition for different floating point formats

Publications (2)

Publication Number Publication Date
CN101438232A CN101438232A (zh) 2009-05-20
CN101438232B true CN101438232B (zh) 2015-10-21

Family

ID=37890158

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680054583.XA Expired - Fee Related CN101438232B (zh) 2006-05-16 2006-05-16 不同浮点格式的浮点加法

Country Status (4)

Country Link
US (1) US20080133895A1 (zh)
CN (1) CN101438232B (zh)
DE (1) DE112006003875T5 (zh)
WO (1) WO2007133101A1 (zh)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
CN101916182B (zh) * 2009-09-09 2014-08-20 威盛电子股份有限公司 使用非架构的数据格式的快速浮点结果的转送
GB201111035D0 (en) * 2011-06-29 2011-08-10 Advanced Risc Mach Ltd Floating point adder
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US9274750B2 (en) * 2012-04-20 2016-03-01 Futurewei Technologies, Inc. System and method for signal processing in digital signal processors
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
KR20160075669A (ko) * 2013-12-23 2016-06-29 인텔 코포레이션 하이브리드 프로세서 코어를 포함하는 시스템-온-칩(soc)
US9582248B2 (en) * 2014-09-26 2017-02-28 Arm Limited Standalone floating-point conversion unit
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
CN106557299B (zh) * 2016-11-30 2019-08-30 上海兆芯集成电路有限公司 浮点操作数计算方法以及使用此方法的装置
US10061579B1 (en) * 2016-12-02 2018-08-28 Intel Corporation Distributed double-precision floating-point addition
US10031752B1 (en) * 2016-12-02 2018-07-24 Intel Corporation Distributed double-precision floating-point addition
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5808926A (en) * 1995-06-01 1998-09-15 Sun Microsystems, Inc. Floating point addition methods and apparatus
US5940311A (en) * 1996-04-30 1999-08-17 Texas Instruments Incorporated Immediate floating-point operand reformatting in a microprocessor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59188740A (ja) * 1983-04-11 1984-10-26 Hitachi Ltd フロ−テイング加算器
US6493817B1 (en) * 1999-05-21 2002-12-10 Hewlett-Packard Company Floating-point unit which utilizes standard MAC units for performing SIMD operations
US6829627B2 (en) * 2001-01-18 2004-12-07 International Business Machines Corporation Floating point unit for multiple data architectures
US6889241B2 (en) * 2001-06-04 2005-05-03 Intel Corporation Floating point adder
US7051060B2 (en) * 2001-09-28 2006-05-23 Intel Corporation Operand conversion optimization

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5808926A (en) * 1995-06-01 1998-09-15 Sun Microsystems, Inc. Floating point addition methods and apparatus
US5940311A (en) * 1996-04-30 1999-08-17 Texas Instruments Incorporated Immediate floating-point operand reformatting in a microprocessor

Also Published As

Publication number Publication date
US20080133895A1 (en) 2008-06-05
DE112006003875T5 (de) 2009-06-18
CN101438232A (zh) 2009-05-20
WO2007133101A1 (en) 2007-11-22

Similar Documents

Publication Publication Date Title
CN101438232B (zh) 不同浮点格式的浮点加法
CN109643228B (zh) 用于浮点乘加运算的低能耗尾数乘法
CN101620589B (zh) 处理器中的有效并行浮点异常处理
US9104474B2 (en) Variable precision floating point multiply-add circuit
CN103988171B (zh) 在数据处理***中用于执行浮点算术运算的方法和装置
US8577948B2 (en) Split path multiply accumulate unit
CN110168493B (zh) 在128位宽的操作数上的融合乘加浮点运算
US7720900B2 (en) Fused multiply add split for multiple precision arithmetic
US10489153B2 (en) Stochastic rounding floating-point add instruction using entropy from a register
JP2015111421A (ja) ベクトル機能ユニット、方法、およびコンピューティングシステム
KR20140056080A (ko) 입력 데이터 값에 따른 결합형 곱셈-덧셈 (fma) 유닛의 전력 소모 절감
US11226791B2 (en) Arithmetic processing device and method of controlling arithmetic processing device that enables suppression of size of device
US10095475B2 (en) Decimal and binary floating point rounding
US10416962B2 (en) Decimal and binary floating point arithmetic calculations
US10445064B2 (en) Implementing logarithmic and antilogarithmic operations based on piecewise linear approximation
Del Barrio et al. Ultra-low-power adder stage design for exascale floating point units
GB2511314A (en) Fast fused-multiply-add pipeline
US20170220343A1 (en) Stochastic rounding floating-point multiply instruction using entropy from a register
WO2014105187A1 (en) Leading change anticipator logic
US20140074902A1 (en) Number representation and memory system for arithmetic
CN113377334B (zh) 一种浮点数据处理方法、装置及存储介质
Chen et al. Haica: A High Performance Computing & Artificial Intelligence Fused Computing Architecture
CN115983360A (zh) 数据处理方法、装置、设备及存储介质
CN115268832A (zh) 浮点数取整的方法、装置以及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20151021

Termination date: 20160516