CN104731524B - 设置缓存器容量的方法 - Google Patents
设置缓存器容量的方法 Download PDFInfo
- Publication number
- CN104731524B CN104731524B CN201410858437.9A CN201410858437A CN104731524B CN 104731524 B CN104731524 B CN 104731524B CN 201410858437 A CN201410858437 A CN 201410858437A CN 104731524 B CN104731524 B CN 104731524B
- Authority
- CN
- China
- Prior art keywords
- capacity
- buffer
- setting
- sub
- multiple sub
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Communication Control (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
Abstract
本公开涉及一种设置缓存器容量的方法,该方法包括:初始化步骤,当通过判断容量设置程序是否是第一次执行而确定容量设置程序是第一次执行时,初始化构成主缓存器的多个子缓存器;比较数据接收步骤,当确定容量设置程序不是第一次执行时,从多个子缓存器接收存储频率和剩余容量;数据比较步骤,通过比较多个子缓存器的当前存储频率和在前存储频率,来判断多个子缓存器的当前存储频率和在前存储频率是否相同;设置容量计算步骤,在多个子缓存器的当前存储频率和在前存储频率不相同时,计算多个子缓存器的分配容量;以及容量重设置步骤,使用通过设置容量计算步骤计算的分配容量来重设置多个子缓存器的容量。
Description
技术领域
根据本公开的示例性实施例的教导总地涉及设置缓存器容量的方法,具体来说涉及一种配置为通过响应于使用环境预先设置缓存器容量来高效地使用缓存器的设置缓存器容量的方法。
背景技术
通信系统使用缓存器以防止在CPU处理发送/接收消息时产生的发送/接收消息的丢失。
图1为示出了根据现有技术的通信系统中的缓存器使用状态的示意图。
参考图1,传统通信系统中具有缓存器1用于通信(下文被称为‘通信缓存器’)。通信缓存器1可以包括发送缓存器2和接收缓存器3,其中发送缓存器2的容量和接收缓存器3的容量的总和为通信缓存器1的总量。因此,当发送缓存器2的容量和接收缓存器3的容量相加时,加和占据整个通信缓存器1的100%。
此时,发送/接收消息的生成频率根据使用的通信系统的环境而改变,通信设备研发者或用户必须根据消息生成频率设置电阻或参数来确定发送缓存器容量和接收缓存器容量。
一般来说,配置通信系统使得当发送缓存器和接收缓存器中的一个缓存器的容量满载时,即使另一个缓存器仍然留有容量,也设置消息以便从消息接收功能或发送消息生成功能中对消息进行处置。虽然因为当研发者或用户设置缓存器容量时,由于容量可以被适当的设置和改变,所以能够解决删除消息的问题,但问题是由于发送/接收消息的频率时时变化,用户必须改变缓存器的大小。此外,当用户无法通过设置参数改变缓存器的容量时,没有解决方案。
发明内容
提供本公开来解决之前提到的现有问题,本公开提供了一种设置缓存器容量的方法(下称“缓存器容量设置方法,或简称为方法”),所述方法配置为通过响应于使用环境预先(proactively)设置缓存器容量来高效地使用缓存器,并且该方法用于设置通信系统中的发送缓存器容量和接收缓存器容量。
在本公开的一个总的方案中,提供了一种设置配置为存储发送消息或接收消息的缓存器的容量的方法,该方法包括:
当通过判断容量设置程序是否是第一次执行而确定所述容量设置程序是第一次执行时,初始化构成主缓存器的多个子缓存器(初始化步骤);
当确定所述容量设置程序不是第一次执行时,从所述多个子缓存器接收存储频率和剩余容量(比较数据接收步骤);
通过比较所述多个子缓存器的当前存储频率和在前存储频率,来判断所述多个子缓存器的当前存储频率和在前存储频率是否相同(数据比较步骤);
当所述多个子缓存器的当前存储频率和在前存储频率不相同时,计算所述多个子缓存器的分配容量(设置容量计算步骤);以及
使用通过设置容量计算步骤计算的分配容量来重设置所述多个子缓存器的容量(容量重设置步骤)。
优选的,但不是必需的,所述初始化步骤可以包括通过将所述多个子缓存器中的每一个的容量设置为相同来初始化所述多个子缓存器。
优选的,但不是必需的,所述初始化步骤可以包括在初始化所述多个子缓存器之后确定所述容量设置程序是否是第一次执行。
优选的,但不是必需的,该方法可以进一步包括在所述设置容量计算步骤完成后将所述多个子缓存器的当前存储频率设置为在前存储频率。
优选的,但不是必需的,可以通过以下过程来实现所述设置容量计算步骤:计算所述多个子缓存器当前使用率,计算所述多个子缓存器的累计使用率,计算所述主缓存器的估计使用容量和估计剩余容量,以及计算所述多个子缓存器的新的设置容量。
优选的,但不是必需的,所述数据比较步骤可以包括在当前存储频率和在前存储频率相等时确定数据没有变化来结束缓存器容量设置操作。
优选的,但不是必需的,所述主缓存器可以是用于通信系统的通信缓存器,所述多个子缓存器可以包括用于发送消息的发送缓存器和用于接收消息的接收缓存器。
有益效果
根据本公开的示例性实施例的设置缓存器容量的方法的有益效果在于,通过响应于使用环境预先设置缓存器容量,缓存器能够被高效地使用。
另外一个有益效果在于,可以响应于使用率和使用频率主动地设置缓存器以防止在使用固定缓存器容量时产生的数据丢失。
附图说明
图1为示出了根据现有技术的通信系统中的缓存器使用状态的示意图。
图2为示出了根据本公开的示例性实施例的通信系统中消息发送/接收结构的框图。
图3为示出了根据本公开的示例性实施例的在通信系统中设置缓存器容量的方法的流程图。
图4为示出了根据本公开的示例性实施例的在设置缓存器容量的方法中设置容量计算步骤的详细流程图。
具体实施方式
通过以下附图和详细描述,示例性实施例的特征和优点对于本领域技术人员来说是显而易见的。在对本公开的描述中,出于清楚和方便的原因,特定的层、大小、形状、元件或特征可以被放大。因此,在说明书和权利要求中使用的特定术语或词组的含义不应该被限制于文字或通常使用的理解,而应该根据用户或操作者的意图和习惯用法被解释或者区分。因此,特定术语或词组的定义应该基于说明书的内容。
虽然根据本公开的示例性实施例的设置缓存器容量的方法已经使用设置通信系统中的发送/接收的发送缓存器容量和接收缓存器容量的案例进行了解释,但是本公开可以用于附加至通信系统的使用缓存器的全部设备,即使缓存器的数量增加,仍然可以通过部分改正以下解释的下述公式来使用该方法。
图2为示出了通信系统中根据本发明示例性实施例的消息发送/接收结构的框图。
接下来,将参考图2描述根据本公开的示例性实施例的通信系统中的消息发送/接收操作。此时,尽管图2已经示出了配置为发送/接收彼此消息的两个通信系统(通信系统100,通信系统200),但只针对一个通信系统100进行解释,这是因为在使用两个通信系统(通信系统100,通信系统200)和使用一个通信系统100之间,配置和功能是相同的。此外,图2中的模块可以限定设备,还可以限定通过嵌入设备中而执行功能的功能(程序)。
首先,通过以下步骤实现根据本公开的示例性实施例的通信系统中的消息发送。
当通信系统100的处理器110,例如CPU,指示操作管理器120生成发送消息以将数据发送到其它通信系统200时,操作管理器120响应处理器110的命令使用消息生成器130生成发送消息。此时,消息生成器130存储有发送消息生成功能。
将由消息生成器130生成的发送消息存储在发送缓存器140中,操作管理器120通过发送器150将存储在发送缓存器140中的发送消息发送给另一个通信系统200。此时,发送器150(其是与另一个通信系统200进行发送和接收的通信模块)遵从通信协议处理发送消息,并将该发送消息发送给另一个通信系统200。
此外,根据本公开的示例性实施例的通信系统100可以包括缓存器容量设置单元160,其配置为响应于存储在发送缓存器140中的发送消息的量来改变发送缓存器140的容量。无论何时发送消息被存储,发送缓存器140累计存储频率。
接下来,通过以下步骤实现根据本公开的示例性实施例的通信系统中的消息接收。
通信系统100通过接收器170接收由另一通信系统200发送的消息,并且操作管理器120在接收缓存器180中存储接收的消息(‘接收消息’)。将存储在接收缓存器180中的接收消息发送到消息分析器190,消息分析器190使用用于分析接收消息的分析功能仅分类必要数据,分类后的消息通过操作管理器120发送到处理器110。此外,缓存器容量设置单元160可以响应于存储在接收缓存器180中的接收消息的量来改变接收缓存器180的容量。此外,无论何时接收消息被存储,接收缓存器180都可以累计存储频率。
也就是说,根据本公开的示例性实施例的通信系统100的缓存器容量设置单元160能够响应于存储在发送缓存器140的发送消息和存储在接收缓存器180的接收消息的量来改变发送缓存器140的容量和接收缓存器180的容量。
图3为示出了根据本公开的示例性实施例的在通信系统中设置缓存器容量的方法的流程图,其中发送和接收缓存器的容量设置由缓存器容量设置单元160实现。
参考图3,缓存器容量设置单元160确定容量设置程序是否已经被第一次执行,以实现初始化发送缓存器和接收缓存器的初始化步骤(S100)。
此时,初始化步骤(S100)可以包括确定步骤(S110),其检查设置程序是否是第一次执行,以及容量分配步骤(S120),其当设置程序第一次执行时(S100-是),将总缓存器容量的50%分别分配给发送缓存器和接收缓存器。
当容量分配步骤(S120)完成时,返回到确定步骤S110来检查设置程序是否已经被第一次执行。因此,发送缓存器140和接收缓存器180可以被设置为具有相同的容量以分别占据总的缓存器容量的50%。
接着,如果S100确定设置程序还未被第一次执行,则实现从发送缓存器140和接收缓存器180接收剩余容量和存储频率的比较数据接收步骤(S200)。接下来,通过比较和确定当前接收的发送缓存器140和接收缓存器180的存储频率是否与在前接收的发送缓存器140和接收缓存器180的存储频率相同,来实现数据比较步骤(S300)。
因此,缓存器容量设置单元160可以包括控制器161,其用于将当前接收的发送缓存器140和接收缓存器180的存储频率与在前接收的发送缓存器140和接收缓存器180的存储频率进行比较。缓存器容量设置单元160可以包括存储单元163,其用于存储从发送缓存器140和接收缓存器180接收的剩余容量和存储频率。
此时,控制器161可以通过将数据请求信号发送到发送缓存器140和接收缓存器180来接收来自从发送缓存器140和接收缓存器180的剩余容量和存储频率。通过将数据请求信号发送给存储单元163,控制器161还可以从存储单元163接收存储在存储单元163中的发送缓存器140和接收缓存器180的在前存储频率。
如果在数据比较步骤S300确定当前接收的发送缓存器140和接收缓存器180的存储频率与在前接收的发送缓存器140和接收缓存器180的存储频率相同,即确定数据没有变化,涉及通信容量的容量设置操作完成。
如果在数据比较步骤S300确定当前接收的发送缓存器140和接收缓存器180的存储频率与在前接收的发送缓存器140和接收缓存器180的存储频率不同,实现设置容量计算步骤(S400)以计算发送缓存器140和接收缓存器180的分配容量,此时,当设置容量计算步骤S400完成时,当前存储的发送缓存器和接收缓存器的存储频率转换成在前值,其在程序重启时使用。
接着,当设置容量计算步骤S400完成时,实现容量重设置步骤S500以使用在设置容量计算步骤S400计算的发送缓存器140和接收缓存器180的分配容量来重设置发送缓存器140和接收缓存器180的容量。此时,在设置容量计算步骤S400中的发送缓存器140和接收缓存器180的新分配容量可以由以下等式1确定。等式1是计算发送缓存器和接收缓存器的新设置容量的等式,使用百分比值进行计算的等式2至5是用于转换到实际使用单元的缓存器容量值的等式。
<等式1>
其中,SbTX是新设置的发送缓存器容量,TbTX是发送缓存器的总容量,RbTX是剩余的发送缓存器容量,NRrTb是累计的发送/接收缓存器总平均剩余量,ArTX是累计的发送缓存器使用率,ArRX是累计的接收缓存器使用率,SbRX是新设置的接收缓存器容量,TbRX是接收缓存器的总容量,RbRX是剩余的接收缓存器容量。
同时,等式1的累计的发送/接收缓存器总平均剩余量(NRrTb)可以由下述等式2确定。
<等式2>
NRrTb=TbTRx-(NRTx+NRRx)
其中,TbTRX是发送/接收缓存器的总容量,NRTX是累计的发送缓存器平均使用值,NRRX是累计的接收缓存器平均使用值,其中累计的发送缓存器平均使用量(NRTX)和累计的接收缓存器平均使用量(NRRX)可以由下述公式3获得。
<等式3>
NRTx=TbTx-(TbTx×ArTx)
NRRx=TbRx-(TbRx×ArRx)
其中,TbTX是发送缓存器的总容量,ArTX是累计的发送缓存器使用率,TbRX是接收缓存器的总容量,ArRX是累计的接收缓存器使用率。
等式2和3用于生成设置发送/接收缓存器容量的信息,其中缓存器的估计使用容量由发送/接收缓存器的累计使用率计算得出,期望剩余的容量通过从总缓存器大小中减去缓存器使用容量来计算。
同时,累计的发送缓存器使用率(ArTX)和累计的接收缓存器使用率(ArRX)可以由以下等式4确定。等式4计算发送/接收缓存器累计使用率,其中通过在等式5中计算的发送/接收缓存器的使用容量百分比转换值相加进行所述累计,并且用累计值除以平均累计频率。
等式4获得除以2的值,这是由于使用一个在前使用容量百分比转换值和一个当前使用容量百分比转换值,其中除数由使用多少个在前使用容量百分比转换值确定。
如果除数增加,当发送缓存器和接收缓存器使用率反转时,对缓存器容量改变的响应会变延迟。然而,当数据临时增加时,缓慢改变分配到每个缓存器的容量。
相反的,如果除数减小,当发送缓存器和接收缓存器使用率反转时,对缓存器容量改变的响应会变快。然而,当数据临时增加时,快速改变分配到每个缓存器的容量。
<等式4>
其中,RTX是发送缓存器使用率,RRX是接收缓存器使用率,k是执行算法的频率,其中发送缓存器使用率(RTX)和接收缓存器使用率(RRX)可以由下述等式5获得。
等式5用来计算当前发送缓存器使用率,其中发送/接收缓存器的使用容量被转换为百分比。
<等式5>
其中,TbTX是发送缓存器的总容量,RbTX是发送缓存器的剩余容量,TbRX是接收缓存器的总容量,RbRX是接收缓存器的剩余容量,n是算法的执行频率(n=1,2,3,…,∞)。
图4为示出了根据本公开的示例性实施例的在设置缓存器容量的方法中设置容量计算步骤的详细流程图。
参考图4,设置容量计算步骤(S400)可以由计算当前发送/接收缓存器使用率(S410),计算累计的发送/接收缓存器使用率(S420),计算估计的缓存器使用容量和估计的剩余容量(S430),以及计算新设置的发送/接收缓存器容量(S440)来实现。
根据本公开,响应于当前发送缓存器容量、当前接收缓存器使用容量和使用频率,通过使用通信系统中的发送缓存器容量和接收缓存器容量来预先设置发送缓存器容量和接收缓存器容量,从而可以对缓存器进行高效地管理。
因此,响应于使用容量和使用频率,缓存器的预先设置能够防止在使用固定的缓存器容量时可能产生的数据丢失。缓存器容量设置方法不限于通信系统,而是能够有效地应用于具有包括多个子缓存器的主缓存器的场合。
虽然根据示例性实施例描述和解释了设置缓存器容量的方法,但是本公开不限于特定实施例,权利要求中的限定和界限中的多种选择、修改、和变形对于本领域技术人员是显而易见的。
因此,除非另有说明,应该理解以上描述的实施例不被任何上述说明的细节所限制,而是由附加的权利要求定义的范围更宽泛的解释。
Claims (7)
1.一种设置缓存器的容量的方法,该缓存器配置为存储发送消息或接收消息,所述方法包括:
初始化步骤,当通过判断容量设置程序是否是第一次执行而确定所述容量设置程序是第一次执行时,初始化构成主缓存器的多个子缓存器;
比较数据接收步骤,当确定所述容量设置程序不是第一次执行时,从所述多个子缓存器接收存储频率和剩余容量;
数据比较步骤,通过比较所述多个子缓存器的当前存储频率和在前存储频率,来判断所述多个子缓存器的当前存储频率和在前存储频率是否相同;
设置容量计算步骤,当所述多个子缓存器的当前存储频率和在前存储频率不相同时,计算所述多个子缓存器的分配容量;以及
容量重设置步骤,使用通过设置容量计算步骤计算的分配容量来重设置所述多个子缓存器的容量。
2.如权利要求1所述的方法,其中所述初始化步骤包括通过将所述多个子缓存器中的每一个的容量设置为相同来初始化所述多个子缓存器。
3.如权利要求1所述的方法,其中所述初始化步骤包括在初始化所述多个子缓存器之后确定所述容量设置程序是否是第一次执行。
4.如权利要求1所述的方法,进一步包括在所述设置容量计算步骤完成后将所述多个子缓存器的当前存储频率设置为在前存储频率。
5.如权利要求1所述的方法,其中通过以下过程来实现所述设置容量计算步骤:计算所述多个子缓存器的当前使用率,计算所述多个子缓存器的累计使用率,计算所述主缓存器的估计使用容量和估计剩余容量,以及计算所述多个子缓存器的新的设置容量。
6.如权利要求1所述的方法,其中所述数据比较步骤包括在当前存储频率和在前存储频率相等时确定数据没有变化来结束缓存器容量设置操作。
7.如权利要求1所述的方法,其中所述主缓存器是用于通信系统的通信缓存器,所述多个子缓存器包括用于发送消息的发送缓存器和用于接收消息的接收缓存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2013-0162133 | 2013-12-24 | ||
KR1020130162133A KR101752522B1 (ko) | 2013-12-24 | 2013-12-24 | 버퍼의 용량 설정방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731524A CN104731524A (zh) | 2015-06-24 |
CN104731524B true CN104731524B (zh) | 2018-01-12 |
Family
ID=53401370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410858437.9A Active CN104731524B (zh) | 2013-12-24 | 2014-12-24 | 设置缓存器容量的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9742706B2 (zh) |
KR (1) | KR101752522B1 (zh) |
CN (1) | CN104731524B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6833364B2 (ja) * | 2016-07-01 | 2021-02-24 | 株式会社東芝 | Icカード、および、icカード処理装置 |
KR102222133B1 (ko) * | 2018-01-12 | 2021-03-03 | 엔에이치엔 주식회사 | 모바일 단말기 및 그의 어플리케이션 관리 방법과 이를 활용한 타겟 광고 제공 시스템 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1536798A (zh) * | 2003-04-11 | 2004-10-13 | 深圳市中兴通讯有限公司南京分公司 | 一种前向接入传输信道的自适应流量控制方法 |
CN103402136A (zh) * | 2013-07-29 | 2013-11-20 | 重庆大学 | 自适应调整缓存的控制方法、装置及自适应播放器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201101752A (en) | 2002-05-10 | 2011-01-01 | Interdigital Tech Corp | Cognitive flow control based on channel quality conditions |
US7787377B2 (en) * | 2006-02-03 | 2010-08-31 | Telefonaktiebolaget Lm Ericsson (Publ) | Selective redundancy for Voice over Internet transmissions |
US9529011B2 (en) * | 2013-12-02 | 2016-12-27 | Nike, Inc. | Flight time |
-
2013
- 2013-12-24 KR KR1020130162133A patent/KR101752522B1/ko active IP Right Grant
-
2014
- 2014-12-18 US US14/575,978 patent/US9742706B2/en active Active
- 2014-12-24 CN CN201410858437.9A patent/CN104731524B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1536798A (zh) * | 2003-04-11 | 2004-10-13 | 深圳市中兴通讯有限公司南京分公司 | 一种前向接入传输信道的自适应流量控制方法 |
CN103402136A (zh) * | 2013-07-29 | 2013-11-20 | 重庆大学 | 自适应调整缓存的控制方法、装置及自适应播放器 |
Also Published As
Publication number | Publication date |
---|---|
US20150180804A1 (en) | 2015-06-25 |
US9742706B2 (en) | 2017-08-22 |
CN104731524A (zh) | 2015-06-24 |
KR101752522B1 (ko) | 2017-06-29 |
KR20150074391A (ko) | 2015-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109218355B (zh) | 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法 | |
US9021217B2 (en) | Communication apparatus, load distribution method, and recording medium | |
CN110602156A (zh) | 一种负载均衡调度方法及装置 | |
CN104714851A (zh) | 一种实现资源分配的方法及装置 | |
EP3224728B1 (en) | Providing shared cache memory allocation control in shared cache memory systems | |
WO2019072162A1 (zh) | 虚拟网络映射方法、设备和存储介质 | |
CN108092908A (zh) | 控制流量的方法和发送端设备 | |
US8959210B2 (en) | Method and device for agile computing | |
CN103067297A (zh) | 一种基于资源消耗预测的动态负载均衡方法及装置 | |
CN104731524B (zh) | 设置缓存器容量的方法 | |
JP6262408B1 (ja) | 共有キャッシュメモリシステムに関する概算使用測定値の生成 | |
CA2653257A1 (en) | Bandwidth allocation method, optical line terminator, optical network unit, communication system, and recording medium recording program of device | |
US20150026347A1 (en) | Method and apparatus for allocating stream processing unit | |
CN107239407B (zh) | 一种内存的无线访问方法和装置 | |
GB2507816A (en) | Calculating timeout for remote task execution from network delays and processing duration on local application/hardware replica | |
JP2016076108A (ja) | 情報処理装置、メモリ制御装置及び情報処理装置の制御方法 | |
WO2020161788A1 (ja) | 情報処理装置、情報処理システム、プログラム及び情報処理方法 | |
US20170075589A1 (en) | Memory and bus frequency scaling by detecting memory-latency-bound workloads | |
CN104468337A (zh) | 消息传输方法及装置、消息管理中心设备及数据中心 | |
EP2983105A1 (en) | Electronic device, on-chip memory and method of operating the on-chip memory | |
US10104571B1 (en) | System for distributing data using a designated device | |
CN111885588B (zh) | 执行电子卡管理业务的方法及装置 | |
US10177929B1 (en) | System for distributing data to multiple devices | |
CN113204517A (zh) | 一种电力专用以太网控制器的核间共享方法 | |
CN117858262B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |