CN103399825A - 一种无锁化内存申请释放方法 - Google Patents
一种无锁化内存申请释放方法 Download PDFInfo
- Publication number
- CN103399825A CN103399825A CN2013103360945A CN201310336094A CN103399825A CN 103399825 A CN103399825 A CN 103399825A CN 2013103360945 A CN2013103360945 A CN 2013103360945A CN 201310336094 A CN201310336094 A CN 201310336094A CN 103399825 A CN103399825 A CN 103399825A
- Authority
- CN
- China
- Prior art keywords
- memory
- thread
- application
- link table
- track link
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种无锁化内存申请释放方法,包括每个线程单独占有一块内存池作为缓存,所有从该缓存中申请的内存块,最终释放回该缓存;进行内存申请时,申请线程从缓存获取一块内存,并在分配好的内存块上标记申请线程的线程号,申请完成;内存块使用完毕时,释放线程查看内存块标记的申请线程的线程号,如果是自己申请的,归还内存块到缓存,释放完成;否则通过比较并替换,挂载内存块到申请线程的单向链表,释放完成。并且,每当任务发送消息或者接收到消息时,申请线程进行周期性检测,将单向链表上每一个内存块归还到缓存。
Description
技术领域
本发明涉及嵌入式系统技术领域,尤其是涉及多线程系统的内存申请释放方法。
背景技术
嵌入式系统往往使用多线程来完成不同的任务,而线程间相互联系,使用消息互相通信。通过使用共享内存,线程间的通信,目的线程可以直接读取源线程的消息而不需要拷贝。但是这导致申请和释放消息使用的内存时需要使用互斥锁,影响效率。目前申请和释放堆内存的方法一般有两种,一种是直接调用通用函数库(glibc)的内存申请接口(ptmalloc)和释放接口(free),另外一种是建立自己的内存池进行管理。
通用函数库(glibc)申请和释放内存的逻辑非常复杂,包括了内存块的分割与合并,归还到系统还是保留等等。但是可以发现其主要的耗时花费在锁的使用上:
内存申请的第一步就是获取分配区的锁,如果加锁成功,使用该分配区分配内存。否则,该线程搜索分配区循环链表试图获得一个没有加锁的分配区。当然,如果系统没有空闲的分配区了,申请的线程只能等待。释放函数首先需要获取内存块所属的分配区的锁,来保证线程安全。
如果系统只有单个线程,那么分配区长期被一个线程占据,不存在锁的开销。但是如果是多线程的情况下,内存块往往承载着消息,由一个线程申请,而由另一个线程归还。分配区可能被申请线程占据,而归还线程则只能等待。所以在系统测试时,往往发现调用内存释放接口(free)的时间往往比调用内存申请接口(malloc)的时间花得还要长。
理论上讲,内存池的管理方法会节省内存申请释放时间,因为所需要的内存都被事先申请,释放只是归还到内存池而不归还给系统。这时,锁的开销更加首当其冲的成为了内存分配与释放的首要开销。且不说多线程竞争获取全局共享内存池的锁,即使为每个线程定义了独立的缓存池,锁的开销也是无法避免。多线程系统环境下,内存的使用往往是由一个线程申请,将内存填上内容后,作为消息发送给另一个线程。当另一个线程归还内存到原线程的缓存时,不可避免的与消息源线程抢缓存区的锁。
综上所述,目前多线程系统的内存申请释放优化的方向主要是减少和避免锁的开销。
发明内容
本发明提出了一种内存申请和释放的技术方案,其目的在于避免内存申请和释放时对锁的开销,缩短申请和释放释放时间。
本发明的技术方案为一种无锁化内存申请释放方法,每个线程单独占有一块内存池作为缓存,所有从该缓存中申请的内存块,最终释放回该缓存;
进行内存申请时,申请线程从缓存获取一块内存,并在分配好的内存块上标记申请线程的线程号,申请完成;
内存块使用完毕时,释放线程查看内存块标记的申请线程的线程号,如果是自己申请的,归还内存块到缓存,释放完成;否则通过比较并替换,挂载内存块到申请线程的单向链表,释放完成。
而且,每当任务发送消息或者接收到消息时,申请线程进行周期性检测,将单向链表上每一个内存块归还到缓存。
而且,单向链表采用“后地址”记录下一节点的地址,而尾节点的“后地址”置为空;所述通过比较并替换,挂载内存块到申请线程的单向链表,实现方式包括如下步骤,
步骤3.1,将单向链表头的“后地址”所存的地址拷贝到一个本地地址变量;
步骤3.2,将本地地址变量拷贝到要挂载的内存块的“后地址”;
步骤3.3,读取单向链表头的“后地址”,当且仅当单向链表头的“后地址”等于本地地址变量时,将单向链表头的“后地址”赋值为将要挂载的内存块地址使单向链表头指向了要挂载的内存块;否则回到步骤3.1。
而且,每次进行周期性检测,将单向链表上每一个内存块归还到缓存的实现方式如下,
将单向链表头与本地的空链表头替换,从单向链表头开始轮寻单向链表,将每一个内存块归还到缓存,轮寻完毕时检测完毕。
本发明所提供一种用于多线程嵌入式系统的无锁化内存申请释放方法的创新点在于:
1. 将原先共享区域由分配区/缓存双向链表转移到了线程的一条单向链表,而分配区/缓存链表转变为线程独享,这样直接避免了缓存区或者内存分配区的锁的冲突。;
2. 因为共享区域简单化为单向链表,利用比较并替换(CAS)和替换两个原子操作代替了互斥锁;
3. 基于嵌入式系统线程的周期性,利用实时性任务周期性处理消息,在处理消息结束时触发检测,归还单向链表里的内存。
附图说明
图1为本发明实施例中线程挂载的链表结构图;
图2为本发明实施例中内存块状态变化图;
图3为本发明实施例中归还内存块到缓存链表变化图;
图4为本发明实施例中CAS成功挂载链表变化图;
图5为本发明实施例中CAS挂载链表未成功变化图。
具体实施方式
基于目前嵌入式系统的一个特点:嵌入式系统的线程往往是周期性运行不会结束。这样就可以将不定期的内存操作安排到固定时间点,不必担心申请内存的线程在内存被释放前就结束。无锁化研究中常常使用一种比较并替换 (CAS)的原子操作。这个操作对共享资源(P)进行读,当且仅当(P)等于旧值时,将(P)赋予新值,并且返回旧值。由于这个操作是原子操作,可以不用锁而达到保护共享资源的方法。本发明利用了比较并替换(CAS)操作。以下结合附图和实施例详细说明本发明技术方案。
为了便于描述,本发明以内存池管理方案提供实施例。每个线程单独占有一块内存池作为缓存。所有从某个缓存中申请的内存块,在使用结束后释放回该缓存。实施例设计如下:
进行内存申请时,包括申请线程从缓存获取一块内存块,并且在分配好的内存块上标记自己的线程号。申请完成。
内存块使用完毕时,进行内存释放阶段。实施例在线程的管理结构中增加了一条共享的单向链表来辅助线程的缓存区域或者占有的内存分配区。这个阶段,释放线程根据查看内存块标记的申请线程号,如果是自己申请的进行操作(a),包括直接归还内存到缓存,释放完成,否则进行操作(b),包括通过比较并替换(CAS)方法,挂载内存块到申请线程的单向链表。
本发明进一步提出进行申请线程的周期性检测,可以在每当任务接收到消息时进行一次检测:将单向链表头与本地的空链表头替换,这也是原子操作。避免与操作(b)冲突。从链表头开始轮寻链表,将每一块内存归还到缓存。轮寻完毕时检测完毕。
为便于实施参考起见,提供实施例中各操作的具体说明如下:
实施例中,如图1所示:最左侧的是线程管理结构,包含多个双向链表头,用作挂载缓存,如图中的32字节缓存链表、64字节缓存链表;一个单向链表头用作本发明中挂载尚未归还内存块。双向链表结构为现有技术,其中单向链表结构与双向链表结构的区别是,单向链表只需要记录一个后地址,记录下一节点的地址,而尾节点的后地址置为空。右侧是32字节和64字节的内存块结构,包括记录申请线程的线程号,一个双向链表节点,一个单项链表节点,内存内容。由管理结构管理线程的缓存。如图1中右侧第一排和第二排,这些内存块分别用双向链表(现有技术)挂在左侧线程的管理结构上。而第三排是本发明特别使用的一条单向链表,挂载尚未归还到缓存的全部内存块。
实施例中,内存申请时的内存初始化操作包括:
(1)从缓存获取一块内存。由于缓存存放的都是标准大小的内存,首先要选择一个合适的大小。比方说,实际需要申请14个字节的内存,而系统没有这样的内存块,可以放大一点,使用16个字节的内存块,这样浪费了两个字节,但是大大简单了缓存的维护机制。继续这个例子,通过线程管理结构找16字节的内存块链表,从链表中取出一个,那么这个步骤就完成了。
(2)在选定的内存块上记录自己的线程号。
当内存块使用完毕时,要把内存块还到当初申请的缓存链表,相对于申请,这是一个复杂而且耗时的过程。因此,本发明提出,进行申请的线程在选定的内存块上记录自己的线程号,当线程释放内存块的时候,线程首先检查内存块上标记的线程号。这个标记的线程号也就意味着内存块要归还到哪一个线程的缓存链表。如果这个线程是自己,那么进入操作a,否则进入操作b。
操作a,也就是线程需要把内存块归还到自己的缓存链表。这是一个标准的双向链表插入操作,为便于实施参考起见,提供说明如图3所示:图的上部是操作之前,希望将左侧刚刚使用完毕释放的内存块结构挂载到右侧的32字节缓存链表中,使之成为可用的空闲内存。需要依次操作四个指针的赋值来完成,如图3的下部,粗体线部分就代表了新赋值了的四个指针。首先将缓存链表中链表头的“前地址”修改为新节点的地址,这样链表头就指向了新节点,如图中指针1。其次,给新节点的“后地址”赋值链表头的地址,这样新节点就指向了链表头,如图中指针2。再次给新节点的“前地址”赋值挂载前的尾节点的地址,这样新节点就指向了旧的尾节点,如图中指针3。最后将旧的尾节点的“后地址”修改为新节点的地址,这样旧的尾节点就指向了新节点,如图中指针4。也正是因为如此,如果有多个线程进行相同的操作的话,一定需要使用互斥锁来保护。当内存块归还到缓存链表后,内存释放就完成了。
操作b,也就是线程需要把内存块归还到其他线程的缓存链表。这需要将内存块挂载到目的线程的单向链表。单向链表只有一个指针指向下一个结构体,如图4、图5所示,相比较双向链表要简单得多。图4示意的是一次成功挂载过程,左侧是比较并替换 (CAS)前,线程管理结构的单向链表头的“后地址”指向链表的第一个节点,而左下角是希望挂载到单向链表的内存块。一个本地地址变量是本发明在使用比较并替换 (CAS)时需要的。图5示意的是一次失败的挂载过程。
挂载的过程分为三小步:
(1)将单向链表头的“后地址”所存的地址拷贝到一个本地地址变量,这样本地地址变量也指向了当时的第一个节点,如图4中的箭头1
(2)将这个本地地址变量再拷贝到要挂载的内存块的“后地址”,这样要挂载的内存块也指向第一个节点,如图4中的箭头2。注意这里使用本地地址变量的原因是在本线程操作的步骤过程中,单向链表的“后地址”作为一个共享的资源,是可能变化的,而本地变量是不会变化的。
(3)注意到(1)到(2)并不是原子操作,在这中间可能被打断过,在多线程并行情况下,单向链表头的后地址可能已经被改变。运用比较并替换 (CAS)的方法:读取共享资源——单向链表头的“后地址”,当且仅当单向链表头的“后地址”等于本地地址变量时,将单向链表头的“后地址”赋予新值——将要挂载的内存块地址。这样单向链表头就指向了要挂载的内存块,如图4中的箭头3。如果不相同,回到(1)。
通过这种方法,多线程间的操作就不需要加锁。而是进行循环比较,进行忙等。简化了进出内核态带来的花销。但是这种方法也有一定的局限性,只能保证一个值的原子性操作。对于双向链表得同时更改两个连接的情况不适用。
将本地变量再与单向链表的“后地址”比较,如果相同,则说明在操作的过程中没有其他线程打断过。但是如果在过程中被其他的线程打断了,如图5所示,进行(1)、(2)后有其他的内存块挂载了,并且改变了链表头的指向。那么(3)中的比较就会失败,不会错误的改变单向链表的“后地址”,而是回到(1)将这三小步从新来过,直到成功为止。
如图2所示,操作b只是将内存块挂载到了单向链表,但是内存块的状态实际上还是被占用而不是真正意义上的释放,不能直接被新的需求使用。这就意味着内存泄露了。为了解决这个问题,我们的内存系统除了普通的申请释放,还多了一个周期性检测。每个线程周期性的清理自己的单向链表,如图2中的箭头3。
(1)因为单向链表是共享的,为了避免使用锁,必须原子操作。不过好在需要操作的只是一个“后地址”指针,所以在本地创建一个空链表头,只用一次原子操作就可以将单向链表头与本地空链表头替换。
(2)因为是单向链表,只能从第一个开始,一个一个的将内存块归还到缓存链表,由于这次归还的一定是本线程的缓存链表,所以实现可以参考操作a。如果单向链表过长,这个步骤将会消耗很长的时间,所以一定要保证检测周期不能太长。可以根据具体情况进行设计检测条件,建议在消息触发式线程环境下可以在收到消息时进行检测。
如图2所示,内存块存在的状态可以归纳为三个状态:状态甲,内存块空闲,处于缓存链表,如图右上方。状态乙,内存块处于已使用状态,如图左上方。状态丙,内存块已经使用完毕,但是挂载在单向链表,状态还是已用状态,如图下方。在内存申请,释放,以及周期性检测中,所有的操作可以归纳为图中的箭头。而其中对线程缓存的双向链表的操作可以归纳为箭头1,2,3,被线程从缓存中申请新内存后,状态甲的内存块变为状态乙,即箭头1;申请内存块的本线程释放后,状态乙的内存块变为状态甲,即箭头2;内存块被其他线程释放后,状态乙的内存块变为状态丙,再由本线程归还,状态丙的内存块变为状态甲,即箭头3。这三种操作都由缓存链表的所有者,线程本身来完成,所以操作必定是串行的,所以无需加锁。这也是本发明的最显著的优化。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (4)
1.一种无锁化内存申请释放方法,其特征在于:每个线程单独占有一块内存池作为缓存,所有从该缓存中申请的内存块,最终释放回该缓存;
进行内存申请时,申请线程从缓存获取一块内存,并在分配好的内存块上标记申请线程的线程号,申请完成;
内存块使用完毕时,释放线程查看内存块标记的申请线程的线程号,如果是自己申请的,归还内存块到缓存,释放完成;否则通过比较并替换,挂载内存块到申请线程的单向链表,释放完成。
2.根据权利要求1所述一种无锁化内存申请释放方法,其特征在于:每当任务发送消息或者接收到消息时,申请线程进行周期性检测,将单向链表上每一个内存块归还到缓存。
3.根据权利要求1或2所述一种无锁化内存申请释放方法,其特征在于:单向链表采用“后地址”记录下一节点的地址,而尾节点的“后地址”置为空;所述通过比较并替换,挂载内存块到申请线程的单向链表,实现方式包括如下步骤,
步骤3.1,将单向链表头的“后地址”所存的地址拷贝到一个本地地址变量;
步骤3.2,将本地地址变量拷贝到要挂载的内存块的“后地址”;
步骤3.3,读取单向链表头的“后地址”,当且仅当单向链表头的“后地址”等于本地地址变量时,将单向链表头的“后地址”赋值为将要挂载的内存块地址使单向链表头指向了要挂载的内存块;否则回到步骤3.1。
4.根据权利要求3所述一种无锁化内存申请释放方法,其特征在于:每次进行周期性检测,将单向链表上每一个内存块归还到缓存的实现方式如下,
将单向链表头与本地的空链表头替换,从单向链表头开始轮寻单向链表,将每一个内存块归还到缓存,轮寻完毕时检测完毕。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310336094.5A CN103399825B (zh) | 2013-08-05 | 2013-08-05 | 一种无锁化内存申请释放方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310336094.5A CN103399825B (zh) | 2013-08-05 | 2013-08-05 | 一种无锁化内存申请释放方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103399825A true CN103399825A (zh) | 2013-11-20 |
CN103399825B CN103399825B (zh) | 2015-12-23 |
Family
ID=49563457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310336094.5A Active CN103399825B (zh) | 2013-08-05 | 2013-08-05 | 一种无锁化内存申请释放方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103399825B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881324A (zh) * | 2014-09-28 | 2015-09-02 | 北京匡恩网络科技有限责任公司 | 一种多线程下的内存管理方法 |
US9424027B2 (en) | 2013-07-29 | 2016-08-23 | Ralph Moore | Message management system for information transfer within a multitasking system |
CN107391253A (zh) * | 2017-06-08 | 2017-11-24 | 珠海金山网络游戏科技有限公司 | 一种降低系统内存分配释放冲突的方法 |
CN107451054A (zh) * | 2017-07-26 | 2017-12-08 | 武汉虹信通信技术有限责任公司 | 一种用于linux环境中的内存池调试方法 |
CN107515785A (zh) * | 2016-06-16 | 2017-12-26 | 大唐移动通信设备有限公司 | 一种内存管理方法及装置 |
CN108628760A (zh) * | 2017-03-16 | 2018-10-09 | 北京忆恒创源科技有限公司 | 原子写命令的方法与装置 |
CN110058947A (zh) * | 2019-04-26 | 2019-07-26 | 海光信息技术有限公司 | 缓存空间的独占解除方法及相关装置 |
CN110096455A (zh) * | 2019-04-26 | 2019-08-06 | 海光信息技术有限公司 | 缓存空间的独占初始化方法及相关装置 |
WO2019228237A1 (zh) * | 2018-05-29 | 2019-12-05 | 华为技术有限公司 | 数据处理方法以及计算机设备 |
CN111090389A (zh) * | 2019-10-31 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 一种缓存空间的释放方法、设备以及存储介质 |
CN113032156A (zh) * | 2021-05-25 | 2021-06-25 | 北京金山云网络技术有限公司 | 内存分配方法和装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493787A (zh) * | 2009-02-18 | 2009-07-29 | 中兴通讯股份有限公司 | 一种内存操作的管理方法及系统 |
US20100191913A1 (en) * | 2009-01-26 | 2010-07-29 | Agere Systems Inc. | Reconfiguration of embedded memory having a multi-level cache |
CN101799773A (zh) * | 2010-04-07 | 2010-08-11 | 福州福昕软件开发有限公司 | 并行计算的内存访问方法 |
-
2013
- 2013-08-05 CN CN201310336094.5A patent/CN103399825B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100191913A1 (en) * | 2009-01-26 | 2010-07-29 | Agere Systems Inc. | Reconfiguration of embedded memory having a multi-level cache |
CN101493787A (zh) * | 2009-02-18 | 2009-07-29 | 中兴通讯股份有限公司 | 一种内存操作的管理方法及系统 |
CN101799773A (zh) * | 2010-04-07 | 2010-08-11 | 福州福昕软件开发有限公司 | 并行计算的内存访问方法 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424027B2 (en) | 2013-07-29 | 2016-08-23 | Ralph Moore | Message management system for information transfer within a multitasking system |
CN104881324A (zh) * | 2014-09-28 | 2015-09-02 | 北京匡恩网络科技有限责任公司 | 一种多线程下的内存管理方法 |
CN107515785A (zh) * | 2016-06-16 | 2017-12-26 | 大唐移动通信设备有限公司 | 一种内存管理方法及装置 |
CN108628760B (zh) * | 2017-03-16 | 2021-05-18 | 北京忆恒创源科技有限公司 | 原子写命令的方法与装置 |
CN108628760A (zh) * | 2017-03-16 | 2018-10-09 | 北京忆恒创源科技有限公司 | 原子写命令的方法与装置 |
CN107391253B (zh) * | 2017-06-08 | 2020-12-08 | 珠海金山网络游戏科技有限公司 | 一种降低系统内存分配释放冲突的方法 |
CN107391253A (zh) * | 2017-06-08 | 2017-11-24 | 珠海金山网络游戏科技有限公司 | 一种降低系统内存分配释放冲突的方法 |
CN107451054A (zh) * | 2017-07-26 | 2017-12-08 | 武汉虹信通信技术有限责任公司 | 一种用于linux环境中的内存池调试方法 |
EP3783484A4 (en) * | 2018-05-29 | 2021-06-16 | Huawei Technologies Co., Ltd. | DATA PROCESSING PROCESS AND COMPUTER DEVICE |
CN110543351B (zh) * | 2018-05-29 | 2023-11-17 | 华为技术有限公司 | 数据处理方法以及计算机设备 |
WO2019228237A1 (zh) * | 2018-05-29 | 2019-12-05 | 华为技术有限公司 | 数据处理方法以及计算机设备 |
CN110543351A (zh) * | 2018-05-29 | 2019-12-06 | 华为技术有限公司 | 数据处理方法以及计算机设备 |
US11422861B2 (en) | 2018-05-29 | 2022-08-23 | Huawei Technologies Co., Ltd. | Data processing method and computer device |
CN110096455A (zh) * | 2019-04-26 | 2019-08-06 | 海光信息技术有限公司 | 缓存空间的独占初始化方法及相关装置 |
CN110058947A (zh) * | 2019-04-26 | 2019-07-26 | 海光信息技术有限公司 | 缓存空间的独占解除方法及相关装置 |
CN111090389B (zh) * | 2019-10-31 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种缓存空间的释放方法、设备以及存储介质 |
CN111090389A (zh) * | 2019-10-31 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 一种缓存空间的释放方法、设备以及存储介质 |
CN113032156A (zh) * | 2021-05-25 | 2021-06-25 | 北京金山云网络技术有限公司 | 内存分配方法和装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103399825B (zh) | 2015-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103399825B (zh) | 一种无锁化内存申请释放方法 | |
US7082601B2 (en) | Multi-thread execution method and parallel processor system | |
CN101493787B (zh) | 一种内存操作的管理方法及系统 | |
TWI533221B (zh) | 經由區塊組織的來源觀點資料結構來廣播依附的方法、非暫時性電腦可讀取媒體、與電腦系統 | |
TWI494852B (zh) | 維持與處理器內之屏障相關之指令的次序之方法及處理器 | |
US9075928B2 (en) | Hazard detection and elimination for coherent endpoint allowing out-of-order execution | |
KR100297908B1 (ko) | 원격 자원 관리 시스템 | |
US8368701B2 (en) | Metaprocessor for GPU control and synchronization in a multiprocessor environment | |
US9009408B2 (en) | Non-blocking, pipelined write allocates with allocate data merging in a multi-level cache system | |
CN104881324A (zh) | 一种多线程下的内存管理方法 | |
US9703605B2 (en) | Fine-grained heterogeneous computing | |
CN102841858A (zh) | 处理器核心堆栈扩展 | |
CN104424129A (zh) | 基于指令读缓冲的缓存系统和方法 | |
CN102541983A (zh) | 一种分布式文件系统中多客户端缓存同步的方法 | |
CN102567096A (zh) | 一种在多任务环境下防止死锁的互斥信号量管理方法 | |
TW201504939A (zh) | 使用具有寄存器觀點、來源觀點、指令觀點、與複數寄存器樣板的微處理器架構以執行指令區塊的方法 | |
TW201531939A (zh) | 載入儲存相依性預測器內容管理 | |
CN102591722B (zh) | 片上网络多核处理器多线程的资源分配处理方法和系统 | |
CN101799773A (zh) | 并行计算的内存访问方法 | |
CN106293973B (zh) | 无锁消息队列通信方法及系统 | |
CN104268159B (zh) | 一种基于动态镜像的实时数据仓库数据预存取方法 | |
CN101226488B (zh) | 多实例应用程序在内核态地址空间冲突的解决方法及系统 | |
CN104699627B (zh) | 一种缓存系统和方法 | |
US20180081691A1 (en) | REPLAYING SPECULATIVELY DISPATCHED LOAD-DEPENDENT INSTRUCTIONS IN RESPONSE TO A CACHE MISS FOR A PRODUCING LOAD INSTRUCTION IN AN OUT-OF-ORDER PROCESSOR (OoP) | |
US20100312968A1 (en) | Arithmetic processing apparatus and method of controlling the same |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 430074, No. 88, postal academy road, Hongshan District, Hubei, Wuhan Patentee after: Wuhan post and Telecommunications Science Research Institute Co., Ltd. Address before: 430074, No. 88, postal academy road, Hongshan District, Hubei, Wuhan Patentee before: Wuhan Inst. of Post & Telecom Science |