CN100456230C - 超长指令字与单指令流多数据流融合的计算群单元 - Google Patents

超长指令字与单指令流多数据流融合的计算群单元 Download PDF

Info

Publication number
CN100456230C
CN100456230C CNB2007100345670A CN200710034567A CN100456230C CN 100456230 C CN100456230 C CN 100456230C CN B2007100345670 A CNB2007100345670 A CN B2007100345670A CN 200710034567 A CN200710034567 A CN 200710034567A CN 100456230 C CN100456230 C CN 100456230C
Authority
CN
China
Prior art keywords
data
instruction
simd
microcontroller
group
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
CNB2007100345670A
Other languages
English (en)
Other versions
CN101021778A (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CNB2007100345670A priority Critical patent/CN100456230C/zh
Publication of CN101021778A publication Critical patent/CN101021778A/zh
Application granted granted Critical
Publication of CN100456230C publication Critical patent/CN100456230C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种超长指令字与单指令流多数据流融合的计算群结构,它包括与主控制器相连的数据缓冲和微控制器,以及连接它们的计算群。主控制器负责指令和数据的移动,指令载入微控制器,数据载入数据缓冲并接收其输出;数据缓冲接收主控制器数据,为计算群提供操作数并接收其计算结果,最后输出到主控制器;微控制器接收主控制器的超长指令字序列,译码后广播到计算群每个处理单元并行执行;计算群是多个相同的处理单元,分别有多种处理部件,处理的指令序列相同,数据则取自数据缓冲的不同单元。本发明能够支持数据级并行和指令级并行同时开发,能结合超长指令字、单指令流多数据流和软件流水技术,从多种途径改善计算密集型应用的处理性能。

Description

超长指令字与单指令流多数据流融合的计算群单元
技术领域
本发明主要涉及到微处理器设计中的指令处理技术,尤其是应用于面向计算密集型计算的处理器中,特指一种超长指令字与单指令流多数据流融合的计算群单元。
背景技术
指令级并行(Instruction Level Parallelism,简称ILP)是微处理器设计中并行性开发的主要途径,不相关的指令之间可以并行执行,以此提高处理器执行的效率,如超标量技术和超长指令字技术(Very Long Instruction Word,简称VLIW)。VLIW技术在硬件上配置多个功能部件,它们可以并行执行指令,编译器负责将程序组织成超长指令字序列,每个新的指令字包含多条可以并行执行的原始指令,执行时可以直接映射到功能部件上处理,从而达到开发指令级并行的目的,没有复杂的硬件检测相关和发射逻辑。而多媒体和科学计算等计算密集型应用中同时还存在有大量的数据级并行(DataLevel Parallelism,简称为DLP),相同类型或结构的数据往往需要执行相同的一个或一串操作。采用特殊的指令处理技术可以有效地开发此类程序中的数据级并行性,从而提升处理器的执行性能。
首先数据级并行性开发可以转化为指令级并行性开发。软件流水是开发指令级并行性的一种有效的编译调度方法,编译器通过循环展开将不存在数据相关的来自不同循环周期的指令重新调度,组成新的循环体,以此来增加处理器中可以并行执行的指令条数,解决数据相关。含有大量数据级并行的程序中指令间的数据相关性主要是存储与计算之间的相关,软件流水技术可以比较容易地化解这种相关。软件流水技术可以与超标量或VLIW技术同时使用来开发ILP。
向量处理技术是一种提高处理器成批数据处理性能的有效方法,利用时间重叠的思想,将数据并行转化为指令并行,通过将用于处理相同操作的循环语句向量化,不仅可以减少程序的代码量,还能将循环迭代之间的控制相关性隐藏到向量指令中,提高硬件的执行效率。向量的链接技术可以在向量处理的基础上有效减少中间结果的存储量,缓解向量寄存器的分配压力。
单指令流多数据流(Single Instruction,Multiple Data,简称SIMD)技术是一种资源重复技术,通过配置多个并行的处理单元或将一个处理单元分割为多条数据通路来开发数据级并行。一条指令的控制信号可以控制多个运算部件同时工作,但加工的数据来自多个数据流。Intel的IA-32指令集和IA-64指令集都有针对SIMD的指令扩展,可以提高数值计算应用的性能。
可见,当前对于多媒体和科学计算等计算密集型应用的并行性开发以独立的指令级并行或数据级并行开发为主,在应用规模持续扩大以及复杂度日益增加的情况下,利用上述方法并行化的难度变大,所获得的性能增益也不断减小。如何在硬件结构上支持数据级并行和指令级并行的同时开发是一个解决此类问题的新思路。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的问题,本发明提供一种能够同时支持数据级并行性和指令级并行性开发,能结合超长指令字技术、单指令流多数据流技术和软件流水技术,从多种途径进一步改善计算密集型应用程序在处理器上执行性能的超长指令字与单指令流多数据流融合的计算群单元。
为解决上述技术问题,本发明提出的解决方案为:一种超长指令字与单指令流多数据流融合的计算群单元,其特征在于:它包括主控制器、数据缓冲、SIMD计算群以及微控制器,数据缓冲和微控制器分别与主控制器相连,数据缓冲和微控制器之间通过SIMD计算群相连,主控制器负责指令和数据的准备,将需要SIMD计算群执行的指令调入微控制器中的存储部件,主控制器控制SIMD计算群的启动和暂停,所需源操作数据调入数据缓冲,主控制器同时接收数据缓冲中最终计算结果;数据缓冲部件接收从主控制器传来的数据,并按固定索引地址进行存储,为SIMD计算群提供计算所需源操作数,计算结束后接收计算群的输出结果,最终结果输出到主控制器;微控制器部件接收主控制器提供的超长指令字序列,进行译码后,以广播的形式将每个操作分派、映射到SIMD计算群的每个处理单元的对应处理部件F并行执行;SIMD计算群是以SIMD形式组织的多个并行处理单元PE,每个处理单元包括多个处理部件,所执行的指令序列都来自于微控制器,但所需计算数据来自数据缓冲的不同位置。
所述SIMD计算群是结构相同的多个并行处理单元PE,所有PE的结构均完全相同,以SIMD的方式同时执行来自微控制器的同一条指令或指令序列;每个PE包含多个算术逻辑运算处理部件Fn和局部的寄存器文件,算术逻辑运算处理部件Fn支持超长指令字执行,可以同时并行处理多个不同类型的操作,每个算术逻辑运算处理部件Fn都有单独的局部寄存器文件,直接为处理部件提供操作数并保存计算结果。
与现有技术相比,由于多媒体和科学计算等计算密集型应用程序中数据计算量较大,且相同类型或结构的数据往往需要执行相同的一个或一串操作。因此在面向此类应用的微处理器中,通过配置本发明所提出的硬件结构具有以下优点:
(1)本发明所提出的超长指令字技术与单指令流多数据流技术融合的计算群结构通过在PE内部配置局部寄存器、在系统中配置数据缓冲保存程序运算的中间结果,避免了存储带宽浪费,利用资源重复和编译调度的策略同时开发数据级并行性和指令级并行性,能够提高应用程序在处理器上的执行效率;
(2)同时开发DLP和ILP。由于支持VLIW程序以SIMD的方式执行,协同开发程序中的指令级并行性和数据级并行性,大大提高了处理器执行此类应用程序的吞吐率;
(3)硬件效率高。多个PE共用一套指令控制逻辑,取指、译码、分派、映射,而操作数来自不同的数据流,这种SIMD的执行方式利用一条指令的控制通路实现了多处理器系统才能实现的数据吞吐率,提高了硬件效率;
(4)硬件实现复杂度低。由于编译可以确定各种指令的操作延时,并行性开发的工作完全由编译器来完成,避免了复杂的硬件检测逻辑和流水线互锁逻辑,降低了硬件实现的复杂度;
(5)缓解了存储带宽瓶颈。由于使用了PE内部的局部寄存器,指令操作产生的中间结果不需要占有外部的数据缓冲,缓解了外部存储的带宽压力,并加快了操作数读取的速度;
综上所述,本发明所提出的硬件结构结合了VLIW和SIMD开发程序并行性的优势,适合应用于面向计算密集型应用的处理器中,但不局限于此种处理器,其他需要同时开发多种并行性的处理器也可以采用。
附图说明
图1是本发明的框架结构示意图;
图2是本发明中VLIW与SIMD融合的计算群结构示意图;
图3是本发明指令处理的流程示意图。
具体实施方式
以下将结合附图和具体实施例对本发明做进一步详细说明。
参见图1所示,本发明的超长指令字与单指令流多数据流融合的计算群单元,它包括主控制器、数据缓冲、SIMD计算群以及微控制器。其中主控制器负责指令和数据的准备,将需要SIMD计算群执行的指令调入微控制器中的存储部件,控制SIMD计算群的启动和暂停,所需源操作数据调入数据缓冲,并接收数据缓冲中最终计算结果;数据缓冲部件接收从主控制器传来的数据,并以特定的组织方式进行存储,为SIMD计算群提供计算所需源操作数,计算结束后接收计算群的输出结果,最终结果输出到主控制器;微控制器部件接收主控制器提供的超长指令字序列,进行译码后,以广播的形式将每个操作分派、映射到SIMD计算群的每个处理单元(Processing Element,简称PE)的对应处理部件F并行执行;SIMD计算群是以SIMD形式组织的多个并行处理单元,每个处理单元结构相同,并配置多个处理部件,所执行的指令序列都来自于微控制器,但所需计算数据来自数据缓冲的不同位置。
图2是VLIW与SIMD融合的计算群结构图。SIMD计算群是结构相同的一组处理单元PE(PE0、PE1、……、PEN)。所有PE的结构均完全相同,以SIMD的方式同时执行来自微控制器的同一条指令或指令序列。每个PE包含多个算术、逻辑运算处理部件(F1、F2、……、Fn)和局部的寄存器文件。处理部件F1、F2、……、Fn支持超长指令字执行,可以同时并行处理多个不同类型的操作(如加法、乘法、乘加、逻辑运算等)。每个处理部件都有单独的局部寄存器文件,直接为处理部件提供操作数并保存计算结果。操作数首先从数据缓冲读入局部寄存器,由于主控制器在启动微控制器进行译码、分派、映射执行之前已经把操作数调入了数据缓冲,操作数从数据缓冲调入PE局部寄存器的延时是固定的。处理单元内部每个局部寄存器文件之间有网络相连,可以交换计算生成的中间临时数据,每个处理部件的操作数都直接从自己的局部寄存器读取,所以处理部件在执行指令操作时不存在因数据未就绪而导致的不可预期的停顿。因此,超长指令字在所有PE上执行任何操作所需的延时都是一致的、可知的,编译器可以完全开发指令级并行性,生成超长指令字指令序列,并利用软件流水技术重组程序中的循环,化解超长指令字之间的数据相关性,无需硬件干预。同时PE之间也存在互连网络,可以进行必要的同步和数据交换。
以如下伪码程序为例:
//数据准备
load(data1[m],mem1);
load(data2[m],mem2);
//数据处理
for(i from l to m)
func(data1[i],data2[i],data3[i],data4[i]);
func(data3[i],data4[i],data5[i],data6[i]);
//数据写回到外存或网络接口
send(data5[m],mem3);
send(data6[m],chan0);
//数据处理函数定义,输入in_a和in_b,输出out_c和out_d
func(in_a,in_b,out_c,out_d){
//第一条超长指令字指令I1
OP11//执行部件为F1
OP12//执行部件为F2
OP1n;;//执行部件为Fn,;;为超长指令字边界标识
//第二条超长指令字指令I2
OP21
OP22
OP2n;;
}
该程序描述一连串相同结构的数据(data1、data2)顺序执行一系列操作(两个func函数),并生产新的一连串数据(data5、data6)的过程,主体为一个for循环。其中for循环的第二个func函数同第一个func函数之间存在写后读的数据相关,在传统指令处理技术中,程序执行效率即并行性受限于这个相关,而且两次调用之间将产生大量的临时数据(data3、data4),如果寄存器资源不足,则要换出到存储器进行保存,需要时再读入到寄存器中,浪费了存储带宽。采用本发明提出的硬件结构可以有效避免这些瓶颈,该程序在本发明上的执行过程是:
1.执行load指令,主控制器控制数据流的流动,启动数据缓冲从外部存储器调入程序执行所需数据序列data1和data2,并按固定索引地址存放在数据缓冲内;
2.主控制器将程序中的超长指令字序列(第一个func函数)发射到微控制器中的指令缓存部件;
3.微控制器对超长指令字指令I1,I2等进行译码,每拍译出n个微操作(OPi1,OPi2,…,OPin),并行分派到N个PE的n个处理部件上执行:
(a)数据载入操作控制数据(in_a,in_b)从数据缓冲读入到PE的局部寄存器;
(b)数据写回操作控制数据(out_c,out_d)从PE的局部寄存器写回数据缓冲;
(c)算术逻辑操作的源操作数取自各自的局部寄存器,执行结果写回各自的局部寄存器;
(d)数据可以通过PE内部的互连网络在局部寄存器之间移动,也可以通过PE间的互连网络跨PE移动;
4.执行第二个func函数,重复2、3步;
5.执行send指令,主控制器控制数据流的流动,启动数据缓冲将数据序列data5和data6写回到外部存储器或指定的网络端口;
每个微操作都具有固定的、可预知的执行延时,所有PE同时开始执行、同时结束,PE之间是SIMD方式,PE内部的并行采用VLIW方式。
图3是本发明指令处理的流程。指令在主控制器译码后,判断是数据准备指令还是数据处理指令。如果是数据准备指令,则发射到数据缓冲执行,数据缓冲判断是写指令还是读指令。读指令根据指令给出的数据地址和取数长度从外部存储器读入一整块数据,并按固定索引地址存放在数据缓冲中;写指令将数据缓冲中的指定数据块输出到指定位置(外部存储器或网络端口)。如果是数据处理指令,则从外部存储器取相应的一段超长指令字指令序列到微控制器中,微控制器逐条指令进行译码、分派和执行。每条超长指令字指令译出的微操作同时分派到N个PE,映射到对应的处理部件F,所需数据来自数据缓冲,PE之间以SIMD的方式执行。一条超长指令字指令处理完毕,微控制器启动下一条指令的译码和分派;一段指令序列执行完毕,主控制器启动下一个序列的读入和处理。

Claims (2)

1、一种超长指令字与单指令流多数据流融合的计算群单元,其特征在于:它包括主控制器、数据缓冲、SIMD计算群以及微控制器,数据缓冲和微控制器分别与主控制器相连,数据缓冲和微控制器之间通过SIMD计算群相连,主控制器负责指令和数据的准备,将需要SIMD计算群执行的指令调入微控制器中的存储部件,主控制器控制SIMD计算群的启动和暂停,所需源操作数据调入数据缓冲,主控制器同时接收数据缓冲中最终计算结果;数据缓冲件接收从主控制器传来的数据,并按固定索引地址进行存储,为SIMD计算群提供计算所需源操作数,计算结束后接收计算群的输出结果,最终结果输出到主控制器;微控制器接收主控制器提供的超长指令字序列,进行译码后,以广播的形式将每个操作分派、映射到SIMD计算群的每个处理单元的对应处理部件并行执行;SIMD计算群是结构相同的多个并行处理单元PE,每个处理单元包含多个处理部件,所执行的指令序列都来自于微控制器,但所需计算数据来自数据缓冲的不同位置。
2、根据权利要求1所述的超长指令字与单指令流多数据流融合的计算群单元,其特征在于:所述SIMD计算群是结构相同的多个并行处理单元PE,所有PE的结构均完全相同,以SIMD的方式同时执行来自微控制器的同一条指令或指令序列;每个PE包含多个算术逻辑运算处理部件Fn和局部的寄存器文件,算术逻辑运算处理部件Fn支持超长指令字执行,可以同时并行处理多个不同类型的操作,每个算术逻辑运算处理部件Fn都有单独的局部寄存器文件,直接为处理部件提供操作数并保存计算结果。
CNB2007100345670A 2007-03-19 2007-03-19 超长指令字与单指令流多数据流融合的计算群单元 Expired - Fee Related CN100456230C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007100345670A CN100456230C (zh) 2007-03-19 2007-03-19 超长指令字与单指令流多数据流融合的计算群单元

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007100345670A CN100456230C (zh) 2007-03-19 2007-03-19 超长指令字与单指令流多数据流融合的计算群单元

Publications (2)

Publication Number Publication Date
CN101021778A CN101021778A (zh) 2007-08-22
CN100456230C true CN100456230C (zh) 2009-01-28

Family

ID=38709553

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100345670A Expired - Fee Related CN100456230C (zh) 2007-03-19 2007-03-19 超长指令字与单指令流多数据流融合的计算群单元

Country Status (1)

Country Link
CN (1) CN100456230C (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452394B (zh) * 2007-11-28 2012-05-23 无锡江南计算技术研究所 编译方法和编译器
CN102970049B (zh) * 2012-10-26 2016-01-20 北京邮电大学 基于钱搜索算法和福尼算法的并行电路及rs译码电路
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9665372B2 (en) * 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
CN108475347A (zh) * 2017-11-30 2018-08-31 深圳市大疆创新科技有限公司 神经网络处理的方法、装置、加速器、系统和可移动设备
CN112860318A (zh) * 2021-01-29 2021-05-28 成都商汤科技有限公司 一种数据传输方法、芯片、设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175618A (ja) * 1999-12-17 2001-06-29 Nec Eng Ltd 並列計算機システム
US20050010743A1 (en) * 1998-12-03 2005-01-13 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
WO2005036384A2 (en) * 2003-10-14 2005-04-21 Koninklijke Philips Electronics N.V. Instruction encoding for vliw processors
WO2005096141A2 (en) * 2004-03-31 2005-10-13 Icera Inc. Apparatus and method for asymmetric dual path processing
WO2005096140A2 (en) * 2004-03-31 2005-10-13 Icera Inc. Apparatus and method for control processing in dual path processor
CN1885283A (zh) * 2006-06-05 2006-12-27 中国人民解放军国防科学技术大学 流处理器中降低数据访问延迟的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050010743A1 (en) * 1998-12-03 2005-01-13 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
JP2001175618A (ja) * 1999-12-17 2001-06-29 Nec Eng Ltd 並列計算機システム
WO2005036384A2 (en) * 2003-10-14 2005-04-21 Koninklijke Philips Electronics N.V. Instruction encoding for vliw processors
WO2005096141A2 (en) * 2004-03-31 2005-10-13 Icera Inc. Apparatus and method for asymmetric dual path processing
WO2005096140A2 (en) * 2004-03-31 2005-10-13 Icera Inc. Apparatus and method for control processing in dual path processor
CN1885283A (zh) * 2006-06-05 2006-12-27 中国人民解放军国防科学技术大学 流处理器中降低数据访问延迟的方法

Also Published As

Publication number Publication date
CN101021778A (zh) 2007-08-22

Similar Documents

Publication Publication Date Title
CN100456230C (zh) 超长指令字与单指令流多数据流融合的计算群单元
CN108268278B (zh) 具有可配置空间加速器的处理器、方法和系统
JP6525286B2 (ja) プロセッサコア及びプロセッサシステム
Udupa et al. Software pipelined execution of stream programs on GPUs
US10409606B2 (en) Verifying branch targets
US20170083320A1 (en) Predicated read instructions
US20220100680A1 (en) Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
JP2018519602A (ja) 連続ブロックの並列実行を有するブロックベースアーキテクチャ
Lu et al. Mrphi: An optimized mapreduce framework on intel xeon phi coprocessors
CN100489830C (zh) 面向科学计算的64位流处理器芯片
US20200409709A1 (en) Apparatuses, methods, and systems for time-multiplexing in a configurable spatial accelerator
Karim et al. A multilevel computing architecture for embedded multimedia applications
Lisper Towards parallel programming models for predictability
Tan et al. Optimizing the LINPACK algorithm for large-scale PCIe-based CPU-GPU heterogeneous systems
US11907713B2 (en) Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
Krashinsky Vector-thread architecture and implementation
Han et al. Multi-core architectures with dynamically reconfigurable array processors for the WIMAX physical layer
Sandokji et al. Task scheduling frameworks for heterogeneous computing toward exascale
Dey et al. Embedded support vector machine: Architectural enhancements and evaluation
Thuerck Supporting irregularity in throughput-oriented computing by SIMT-SIMD integration
Zaykov et al. Architectural support for multithreading on reconfigurable hardware
US20230281144A1 (en) External Exchange Connectivity
Zaykov et al. Multithreading on reconfigurable hardware: An architectural approach
Rutzig Multicore platforms: Processors, communication and memories
Luo et al. HAD: A Prototype Of Dataflow Compute Architecture

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090128

Termination date: 20110319