CN101630276B - 一种高效的内存访问方法 - Google Patents

一种高效的内存访问方法 Download PDF

Info

Publication number
CN101630276B
CN101630276B CN 200910109444 CN200910109444A CN101630276B CN 101630276 B CN101630276 B CN 101630276B CN 200910109444 CN200910109444 CN 200910109444 CN 200910109444 A CN200910109444 A CN 200910109444A CN 101630276 B CN101630276 B CN 101630276B
Authority
CN
China
Prior art keywords
thread
memory
write
read
pointer
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
CN 200910109444
Other languages
English (en)
Other versions
CN101630276A (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.)
World (Shanghai) Technology Development Co., Ltd.
Original Assignee
Shenzhen Temobi Science and Technology Co Ltd
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 Shenzhen Temobi Science and Technology Co Ltd filed Critical Shenzhen Temobi Science and Technology Co Ltd
Priority to CN 200910109444 priority Critical patent/CN101630276B/zh
Priority to PCT/CN2009/076336 priority patent/WO2011020281A1/zh
Publication of CN101630276A publication Critical patent/CN101630276A/zh
Application granted granted Critical
Publication of CN101630276B publication Critical patent/CN101630276B/zh
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种高效的内存池访问方法,该方法具体步骤如下:S1:建立内存池,所述内存池由若干内存块组成,启动一个具多线程的应用程序,首先保证占用内存的两线程读写方向相同;S2:当第一线程去访问第二线程的当前块内写指针时,一定要确保第一线程对当前块内写指针的改变在汇编层上是最后一条指令,也就是此指令执行后,后面的指令将不会在有任何与内存块相关的写操作了,即要保证第一线程写完数据后,再让第二线程来读取该数据;S3:当第一线程访问第二线程的读指针时,第二线程一定要确保第二线程对当前块内读指针的改变在汇编层上是最后一条指令,也就是此指令执行后,后面的指令将不会在有任何与内存块相关的读操作了。

Description

一种高效的内存访问方法
技术领域
本发明涉及数据处理领域,具体地说,涉及一种高效的内存访问方法。
背景技术
对应用程序来说,进程就像一个大容器。在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东两(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东两并不会被倒掉,系统会找一个新的进程容器来容纳它。
进程是由进程控制块、程序段、数据段三部分组成。一个进程可以包含若干线程(ThreS1d),线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后中,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程。是可并发执行的程序。在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位,也是称活动、路径或任务,它有两方面性质:活动性、并发性。进程可以划分为运行、阻塞、就绪三种状态,并随一定条件而相互转化:就绪--运行,运行--阻塞,阻塞--就绪。
进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。
进程为应用程序的运行实例,是应用程序的一次动态执行。我们可以简单地理解为:它是操作系统当前运行的执行程序。在系统当前运行的执行程序里包括:系统管理计算机个体和完成各种操作所必需的程序;用户开启、执行的额外程序,当然也包括用户不知道,而自动运行的非法程序(它们就有可能是病毒程序)。
进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就是所有由你启动的进程。进程是操作系统进行资源分配的单位。
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU。
目前嵌入式操作系统的一个特点:内核支持多线程抢占。在两个线程访问同一个内存池时通俗的方法是加入互斥锁来防止数据访问出错,如果两个线程对内存池的访问频率极高,那么因为互斥带来的系统消耗是很高的。测试表明会将低5倍性能,经过一段时间的考究和钻研,目前可以把互斥锁去掉,节约了额外的系统消耗。这将在提高了手机流媒体系统的性能。
另外,内存拷贝通常既频繁又量大,如果源内存块和目标内存块的选择很随意,将会造成拷贝性能大大降低。
鉴于此,实有必要提出一种改进的方法以克服现有技术的缺陷。
发明内容
本发明提供一种高效的内存池访问方法,该方法具体步骤如下:
S1.建立内存池,所述内存池由若干内存块组成,启动一个具多线程的应用程序,首先保证占用内存的两线程读写方向相同;
S2.当第一线程去访问第二线程的当前块内写指针时,一定要确保第一线程对当前块内写指针的改变在汇编层上是最后一条指令,也就是此指令执行后,后面的指令将不会在有任何与内存块相关的写操作了,即要保证第一线程写完数据后,再让第二线程来读取该数据;
S3.当第一线程访问第二线程的读指针时,第二线程一定要确保第二线程对当前块内读指针的改变在汇编层上是最后一条指令,也就是此指令执行后,后面的指令将不会在有任何与内存块相关的读操作了。
本发明的有益效果在于,测试表明会将低5倍性能,经过一段时间的考究和钻研,目前可以把互斥锁去掉,节约了额外的系统消耗。这将在提高了手机流媒体系统的性能。嵌入式系统最重要的就是资源和性能的提高,同时也是判断一个高质量产品的关键因素,以上两点体现了针对性能的提高和CPU资源的节省。
附图说明
图1为本发明方法流程示意图;
图2为本发明方法实施例中第一线程读指针访问第二线程写指针的示意图;
图3为本发明方法实施例中第一线程写指针访问第二线程读指针的示意图。
具体实施方式
下面结合附图来说明本发明具体实施。
如图1所示为本发明方法流程框图,具体步骤如下:
S1:建立内存池,所述内存池由若干内存块组成,启动一个具多线程的应用程序,首先保证占用内存的两线程读写方向相同;
S2:当第一线程读指针去访问第二线程的当前块内写指针时,一定要确保第一线程对当前块内写指针的改变在汇编层上是最后一条指令,也就是此指令执行后,后面的指令将不会在有任何与内存块相关的写操作了,即要保证第一线程写完数据后,再让第二线程来读取该数据;
S3:当第一线程访问第二线程的读指针时,第二线程一定要确保第二线程对当前块内读指针的改变在汇编层上是最后一条指令,也就是此指令执行后,后面的指令将不会在有任何与内存块相关的读操作了。
请参照图2,具体地说明步骤S2中第一线程的读指针访问第二线程的写指针,也即当第二线程完成写操作后,第一线程在于相同的共享内存进行读操作的过程,首先建立由内存块10、11、12、13、14以及15以链表的形式组成的内存池,每一内存块大小为64kb,在这里以链表的形式组成内存池是公知的,但并不对本发明造成限制,图中w表示第二线程的写指针,r表示第一线程的读指针,在这里相当于第二线程先写入数据后,第一线程再进行读数据,第二线程每次写数据以及第一线程每次读数据都是以一个数据包的大小为周期,例如,首先第二线程写入一个大小为10kb字节的数据包,则第二线程不写入数据,等待第一线程将这个大小为10kb字节的数据包读完再进行写入数据,另外图中20表示在链表中w指针以及r指针的移动方向,为了区别于现有技术中通过加入互斥锁来给定某一线程具有对内存的访问权限,本方法在第二线程先写入一个完整的数据包后,写指针的改变在汇编层上是最后一条指令,例如,开始时写指针w与读指重合,首先第二线程在内存块10写入一个数据包后,内存块使用的空间实际移到了w’所指示的位置,但还需通过一条汇编层上的指令将指针w移动至w’,也即将w’的指针值赋于w,由于指针w改变至w’是一个汇编层上的指令即为原子操作,步骤S2可以保证写操作不会被中断,此后第一线程开始读数据,第一线程的读指针r从开始位置移至w’位置,同理,当第一线程的读完一个数据包,即r从开始位置移至w’位置,第一线程的读取动停止,第二线程开始写入另一个数据包,写完后写指针的改变通过一条汇编指令从w’移至w”,即将w”指针值赋给第二线程的读指针w,接着第一线程开始读第二个数据包,以此类推。在这里写和读都是相同大小的数据包。
请参照图3,具体地说明步骤S3中第一线程的写指针访问第二线程的读指针,此过程恰好与步骤S2相反,也即当第二线程完成读操作后,第一线程在于相同的共享内存进行写操作的过程,与步骤S2不同的是,第二线程读完一个数据包后即释放该数据包占有的内存空间,例如图3中第二线程的读指针w从开始位置w(r)即第一线程的w指针与第二线程的r指针重合位置移动至r’位置,代表第二线程读完一个数据包,而r改变为r’也是通过一条汇编指令,因此读操作不会被中断,当释放一个数据包的空间后,第一线程在被释放的内存空间进行写操作,由于第一线程写操作写入的数据大小为未知的,写入的数据有可能比第二线程释放的空间大,也可能比释放的空间小,这不同于步骤S2中先写后读的过程,因此有必要作出改进,如果第一线程要写入的数据比第二线程释放的空间大则造成无法写入,因此本方案中可以设计在第一线程写入数据包时先判断当前写入的内存块是否是第二线程读指针所在的内存块,如图3中所示,第一线程将写入数据包所在的块以及第二线程读指针所在的内存块均为内存块10,则此时首先在内存块10中已经释放的空间写入数据,再申请一个新的内存块16插入于内存块10与11之间,在内存块10写不下的数据则继续在新内存块16中写入,对于第二线程读操作则不受影响,其仍然按照链表顺序在读完内存块10的数据后依次读取内存块11、12、13、14、15中的数据,因此可以将确保第一线程的写指针不同于第二线程的读指针所在的内存块。
另外,也可以设计成第二线程至少读完第一个内存块后,所述第二线程才开始进行写操作,例如在第二线程读完内存块10的数据后,第一线程才开始从内存块10释放的空间开始写入数据,这样可以不通过申请新的内存块,也可以保证第一线程写入数据保证完成而不出错。
本发明把互斥锁去掉,节约了额外的系统消耗。嵌入式系统最重要的就是资源和性能的提高,同时也是判断一个高质量产品的关键因素,以上两点体现了针对性能的提高和CPU资源的节省。将本发明方法应用这手机流媒体系统,将在提高了手机流媒体系统的性能。
通常进行拷贝操作对CPU来说就是一个循环访问内存或缓存,保证地址边界对齐,能发挥CPU数据访问的最大潜力,从而提高块拷贝性能,基于32位(数据总线带款32位)的CPU系统上,一次RS1M访问可以达到32位(字大小),又因为访问32位的数据要保证32位地址边界对齐,才不会使访问到的数据因位置问题而要进行额外的寄存器逻辑操作。这样可以进一步提高拷贝操作的速度。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种高效的内存池访问方法,其特征在于,该方法具体步骤如下:
S1:建立内存池,所述内存池由若干内存块组成,启动一个具多线程的应用程序,首先保证占用内存的两线程读写方向相同;
S2:当第一线程去访问第二线程的当前块内写指针时,一定要确保第一线程对当前块内写指针的改变在汇编层上是最后一条指令,也就是此指令执行后,后面的指令将不会在有任何与内存块相关的写操作了,即要保证第一线程写完数据后,再让第二线程来读取该数据;
S3:当第一线程访问第二线程的读指针时,第二线程一定要确保第二线程对当前块内读指针的改变在汇编层上是最后一条指令,也就是此指令执行后,后面的指令将不会在有任何与内存块相关的读操作了。
2.如权利要求1所述的高效的内存池访问方法,其特征在于,所述“保证占用内存的两线程读写方向相同”具体为:
建立循环链表,并确定所述循环链表的指针方向,保证占用内存的两线程读写方向相同。
3.如权利要求1所述的高效的内存池访问方法,其特征在于,所述步骤S2与S3中汇编层上是最后一条指令即为原子操作,即在步骤S2可以保证写操作不会被中断,以及可以保证在步骤S3中的读操作不会被中断。
4.如权利要求2所述的高效的内存池访问方法,其特征在于,所述步骤S3中确保第一线程的写指针不同于第二线程的读指针所在的内存块。
5.如权利要求2所述的高效的内存池访问方法,其特征在于,所述步骤S3中第二线程至少读完第一个内存块后,所述第二线程才开始进行写操作。
6.如权利要求5所述的高效的内存池访问方法,其特征在于,步骤S3中若判断出第一线程的写指针将写入第二线程的读指针所在的内存块时,则申请一个新空闲内存块插入于第一线程的写指针所在的内存块以及与该内存块相邻的下一内存块之间。
7.如权利要求1所述的高效的内存池访问方法,其特征在于,每一内存块大小为64kb大小。
8.如权利要求1所述的高效的内存池访问方法,其特征在于,CPU进行循环访问内存或缓存的拷贝操作,保证地址边界对齐,能发挥CPU数据访问的最大潜力,从而提高块拷贝性能。
CN 200910109444 2009-08-18 2009-08-18 一种高效的内存访问方法 Expired - Fee Related CN101630276B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN 200910109444 CN101630276B (zh) 2009-08-18 2009-08-18 一种高效的内存访问方法
PCT/CN2009/076336 WO2011020281A1 (zh) 2009-08-18 2009-12-31 一种高效的内存池访问方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910109444 CN101630276B (zh) 2009-08-18 2009-08-18 一种高效的内存访问方法

Publications (2)

Publication Number Publication Date
CN101630276A CN101630276A (zh) 2010-01-20
CN101630276B true CN101630276B (zh) 2012-12-19

Family

ID=41575394

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910109444 Expired - Fee Related CN101630276B (zh) 2009-08-18 2009-08-18 一种高效的内存访问方法

Country Status (2)

Country Link
CN (1) CN101630276B (zh)
WO (1) WO2011020281A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833440B (zh) * 2010-04-30 2013-01-02 西安交通大学 编译器支持下的推测多线程内存数据同步执行方法及装置
CN102129396B (zh) * 2011-03-04 2013-07-10 中国科学院软件研究所 一种实时快速的线程间数据交换方法
CN102723086B (zh) * 2011-05-05 2017-04-12 新奥特(北京)视频技术有限公司 一种智能图文动画更新播放的方法
CN102821302B (zh) * 2012-07-25 2016-03-09 苏州科达科技股份有限公司 视频下载方法、网关设备及网络视频监控系统
CN110764710B (zh) * 2016-01-30 2023-08-11 北京忆恒创源科技股份有限公司 低延迟高iops的数据访问方法与存储系统
CN108228235B (zh) * 2016-12-21 2020-11-13 龙芯中科技术有限公司 基于mips架构的数据操作处理方法和装置
CN108345811B (zh) * 2017-01-23 2021-07-23 杭州爱钥医疗健康科技有限公司 射频干扰抑制方法及装置
CN107329807B (zh) * 2017-06-29 2020-06-30 北京京东尚科信息技术有限公司 数据延迟处理方法和装置、计算机可读存储介质
CN109032798B (zh) * 2018-07-25 2022-03-18 天津凯发电气股份有限公司 一种电能质量管理系统共享内存锁控制方法
CN110515868A (zh) * 2019-08-09 2019-11-29 苏州浪潮智能科技有限公司 显示图像的方法和装置
CN110673952B (zh) * 2019-09-04 2023-01-10 苏州浪潮智能科技有限公司 一种面向高并发读应用的数据处理方法及装置
CN111381887B (zh) * 2020-03-18 2023-05-09 深圳中微电科技有限公司 在mvp处理器中进行图像运动补偿的方法、装置及处理器
CN114518884A (zh) * 2020-11-19 2022-05-20 华为技术有限公司 修复弱内存序问题的方法及装置
CN114675968A (zh) * 2022-03-25 2022-06-28 苏州浪潮智能科技有限公司 一种线程运行方法、系统、装置及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110042A (zh) * 2006-07-20 2008-01-23 中兴通讯股份有限公司 一种检测内存访问越界的方法
CN101290590A (zh) * 2008-06-03 2008-10-22 北京中星微电子有限公司 一种嵌入式操作系统中切换任务的方法和单元

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061471A2 (en) * 2000-02-16 2001-08-23 Sun Microsystems, Inc. An implementation for nonblocking memory allocation
US8079035B2 (en) * 2005-12-27 2011-12-13 Intel Corporation Data structure and management techniques for local user-level thread data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110042A (zh) * 2006-07-20 2008-01-23 中兴通讯股份有限公司 一种检测内存访问越界的方法
CN101290590A (zh) * 2008-06-03 2008-10-22 北京中星微电子有限公司 一种嵌入式操作系统中切换任务的方法和单元

Also Published As

Publication number Publication date
WO2011020281A1 (zh) 2011-02-24
CN101630276A (zh) 2010-01-20

Similar Documents

Publication Publication Date Title
CN101630276B (zh) 一种高效的内存访问方法
US9864702B2 (en) Techniques to prelink software to improve memory de-duplication in a virtual system
US8041920B2 (en) Partitioning memory mapped device configuration space
US7899997B2 (en) Systems and methods for implementing key-based transactional memory conflict detection
US7844802B2 (en) Instructions for ordering execution in pipelined processes
US8457943B2 (en) System and method for simulating a multiprocessor system
CN104111897A (zh) 一种数据处理方法、装置及计算机系统
US10169105B2 (en) Method for simplified task-based runtime for efficient parallel computing
CN105408859A (zh) 用于指令调度的方法和系统
Dechev The ABA problem in multicore data structures with collaborating operations
KR20150101870A (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
TW201435576A (zh) 陷阱處理期間的協作執行緒陣列粒化內文切換
Marmol et al. LibPM: Simplifying application usage of persistent memory
US10496555B2 (en) Implementing per-thread memory access permissions
EP3022643B1 (en) Techniques for dynamically redirecting device driver operations to user space
WO2018120548A1 (zh) 一种系统启动及运行的方法、装置、计算机存储介质
US11461220B2 (en) Techniques to identify improper information in call stacks
US20070239972A1 (en) Processing internal timestamp counter instructions in reference to external counter
US8577936B2 (en) Fixup cache tool for object memory compaction in an information handling system
Bojnordi et al. A programmable memory controller for the DDRx interfacing standards
Kim et al. Real-time program execution on nand flash memory for portable media players
US20130110882A1 (en) System and method for persisting object pointers
CN102063303B (zh) 使Linux内核支持WinCE/WM的kdata页面的方法
Yelam et al. Limited Access: The Truth Behind Far Memory
CN106547619A (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
C56 Change in the name or address of the patentee

Owner name: SHENZHEN RONGCHANG TIANXIA TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: SHENZHEN TEMOBI SCIENCE + TECHNOLOGY CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 19, building 18, Changhong technology building, 518057 South twelve Road, South tech Zone, Nanshan District hi tech Zone, Guangdong, Shenzhen

Patentee after: SHENZHEN TEMOBI TECHNOLOGY CO., LTD.

Address before: 19, building 18, Changhong technology building, 518057 South twelve Road, South tech Zone, Nanshan District hi tech Zone, Guangdong, Shenzhen

Patentee before: Shenzhen Temobi Science & Tech Development Co.,Ltd.

ASS Succession or assignment of patent right

Owner name: RONGCHUANG TIANXIA (SHANGHAI) TECHNOLOGY DEVELOPME

Free format text: FORMER OWNER: SHENZHEN RONGCHANG TIANXIA TECHNOLOGY CO., LTD.

Effective date: 20150610

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150610

Address after: 200433 Shanghai City, Yangpu District Wei Road No. 6 room 502-8

Patentee after: World (Shanghai) Technology Development Co., Ltd.

Address before: 19, building 18, Changhong technology building, 518057 South twelve Road, South tech Zone, Nanshan District hi tech Zone, Guangdong, Shenzhen

Patentee before: SHENZHEN TEMOBI TECHNOLOGY CO., LTD.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121219

Termination date: 20160818

CF01 Termination of patent right due to non-payment of annual fee