CN104102695A - 智能设备启动过程的数据处理方法及智能设备 - Google Patents

智能设备启动过程的数据处理方法及智能设备 Download PDF

Info

Publication number
CN104102695A
CN104102695A CN201410298614.2A CN201410298614A CN104102695A CN 104102695 A CN104102695 A CN 104102695A CN 201410298614 A CN201410298614 A CN 201410298614A CN 104102695 A CN104102695 A CN 104102695A
Authority
CN
China
Prior art keywords
data
request
cache memory
page
page cache
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
Application number
CN201410298614.2A
Other languages
English (en)
Other versions
CN104102695B (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.)
Xueshan Technology Co ltd
Original Assignee
MStar Semiconductor Inc Taiwan
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 MStar Semiconductor Inc Taiwan filed Critical MStar Semiconductor Inc Taiwan
Priority to CN201410298614.2A priority Critical patent/CN104102695B/zh
Priority to TW103128992A priority patent/TWI507987B/zh
Publication of CN104102695A publication Critical patent/CN104102695A/zh
Priority to US14/751,223 priority patent/US9710283B2/en
Application granted granted Critical
Publication of CN104102695B publication Critical patent/CN104102695B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种智能设备启动过程的数据处理方法及智能设备。其中,智能设备启动过程的数据处理方法包括:智能设备在启动过程中检测到数据请求时,查找预存有开机所需小数据文件的页高速缓冲存储器是否包含数据请求所请求的数据,小数据文件是指其数据量小于设定阈值的文件;在页高速缓冲存储器包含请求的数据时,判断数据请求是读数据请求还是写数据请求;在数据请求是读数据请求时,从页高速缓冲存储器拷贝请求的数据至数据请求后返回。通过上述方式,本发明能够缩短开机启动时间。

Description

智能设备启动过程的数据处理方法及智能设备
技术领域
本发明涉及一种智能设备启动过程的数据处理方法及智能设备。
背景技术
随着智能设备功能的不断增加,其上的软件越来越复杂,开机时间随之也变的越来越长。因为系统比较庞大,开机时就需要从存储器上读取更多的资料,而更多的外存储器访问无疑会增加系统启动时间。
对于开机过程中需要读取的大文件,文件系统本身提供的预读方法已经提供了数据的预加载了:当上层读了前几笔资料后,文件系统会自动读取后面的资料,以实现处理器的资料处理跟外存储器数据读取的并发进行,减少了能够影响到开机时间的外存储器访问,从而整体上提高系统性能。但是文件系统的预读是针对每个文件内部的,不能跨不同的文件。所以,对于开机过程中的大量小文件(小于4K bytes)就无能为力了。
有鉴于此,如今迫切需要设计一种新的针对智能设备启动过程的数据处理方法,以便解决现有系统开机慢的缺陷。
发明内容
本发明主要解决的技术问题是提供一种智能设备启动过程的数据处理方法,能够缩短开机启动时间。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种智能设备启动过程的数据处理方法,包括:智能设备在启动过程中检测到数据请求时,查找预存有开机所需小数据文件的页高速缓冲存储器是否包含所述数据请求所请求的数据,所述小数据文件是指其数据量小于设定阈值的文件;在所述页高速缓冲存储器包含所述请求的数据时,判断所述数据请求是读数据请求还是写数据请求;在所述数据请求是读数据请求时,从所述页高速缓冲存储器拷贝所述请求的数据至所述数据请求后返回。
为解决上述技术问题,本发明采用的另一个技术方案是:提供一种智能设备,所述智能设备包括查找模块、判断模块以及处理模块,其中:所述查找模块用于在智能设备启动过程中检测到数据请求时,查找预存有开机所需小数据文件的页高速缓冲存储器是否包含所述数据请求所请求的数据,所述小数据文件是指其数据量小于设定阈值的文件;所述判断模块在所述查找模块查找到在所述页高速缓冲存储器包含所述请求的数据时,判断所述数据请求是读数据请求还是写数据请求;所述处理模块用于在所述判断模块判断到所述数据请求是读数据请求时,从所述页高速缓冲存储器拷贝所述请求的数据至所述数据请求后返回。
本发明的有益效果是:区别于现有技术的情况,本发明通过开机需要读取数据的时候,先从预存有开机所需的小数据文件的页高速缓冲存储器中查找,如果查找到就直接从页高速缓冲存储器中获取需要读取的数据。通过这样的方式,能够加速智能设备在开机过程中小数据文件的读取,使得系统开机速度加快。
附图说明
图1是本发明数据处理系统的结构示意图;
图2是本发明智能设备启动过程的数据处理方法一个实施方式的流程图;
图3是本发明智能设备启动过程的数据处理方法一个实施方式中数据请求的结构示意图;
图4是本发明智能设备启动过程的数据处理方法一个实施方式中数据请求的逻辑视图;
图5是本发明智能设备启动过程的数据处理方法一个实施方式中页高速缓冲存储器的基数树示意图;
图6是本发明智能设备一个实施方式的结构示意图。
具体实施方式
首先,针对本发明实现的数据处理系统进行一个简单的介绍,请参阅图1,图1是本发明智能设备启动过程的数据处理系统的结构示意图,本发明智能设备启动过程的数据处理系统包括智能设备100以及外存储器设备110,其中,智能设备100包括用户应用程序、文件系统、通用块层以及块设备,当文件系统需要数据时,将发数据请求到通用块层,在通用块层数据请求将被构造为读/写数据请求,最终这些读/写数据请求将被按照一定规则放到目标设备(即图中的块设备)所关联的队列中,最终由块设备来进行处理。本发明智能设备启动过程的数据处理方法的实现处于数据处理系统的块设备,这样便于根据不同的物理设备对于其实现以及参数做出调整,达到最好的性能。
其中,上述的外存储器设备可以是EMMC,表1是本发明对于市场上几个主流EMMC产品的读性能分析。从表1中可以看出,随着读取单位的增大,速度也随着成正比例增加,这一关系一直会持续到比较大的读取单元如16K或者32K。也就是说,读4KB的数据跟读16KB比特数据需要的时间一样。这样当文件系统层需要小块的数据时,块设备就可以在不增加时间的前提下,读取更多的数据提前存储起来。
表1:EMMC产品的读取性能分析表
请参阅图2,图2是本发明智能设备启动过程的数据处理方法一个实施方式的流程图,本实施方式的智能设备启动过程的数据处理方法包括:
S101:智能设备在启动过程中检测到数据请求;
智能设备在启动过程中,检测到数据请求。本发明实施方式中数据请求的数据结构如图3所示,每个数据请求是由若干个BIO(Block InputOutput,块输入和输出),每个BIO由若干个结构体(bio_vec)组成,bio_vec包含一个page(页)。逻辑上可以认为每个数据请求为图4所示,这些页在物理外存储器上是一组连续存放的数据,对于本发明中的外存储器设备,也就是块号是连续的。
其中,本发明实施方式的智能设备启动过程的数据处理方法还可以包括在页高速缓冲存储器中预存开机所需小数据文件的步骤。即获取开机所需的小数据文件,将小数据文件连续的存放到页高速缓冲存储器中。这里的小数据文件是指其数据量小于设定阈值的文件。具体地,将小数据文件,以页的形式存储在页高速缓冲存储器中,并采用基数树的形式管理存储在所述页高速缓冲存储器中的所有页。
其中,以安卓智能电视为例,针对安卓智能电视的文件系统为ext4本实施方式可以通过以下方式获取开机所需小数据文件:修改对应文件系统的打开文件(Open File)函数,将所打开文件根据大小、文件名过滤出来,过滤出小于设定阈值的数据文件即为开机所需的小数据文件。然后是修改安卓的文件系统中扫描目录的规范(Code),使得它优先处理开机需要的小数据文件,这样小数据文件就会被连续的放到一起,增加从页高速缓冲存储器中查找到请求数据的命中率。
也就是说,需要预读的开机所需的小数据文件是以页的形式存储在基数树中的(如图5所示),这个页对应的主键(Key)值就是所存储块的块号。因为基数树是高叉搜索树,所以给出Key值,就可以立即得到页高速缓冲存储器中相应页的指针。如果找不到,就返回空指针。
对于基数树的操作本实施方式提供了4组操作:查询单个页是否存在于页高速缓冲存储器中,查询从某个块号起始的N个页是否存在于页高速缓冲存储器中,添加一个页到页高速缓冲存储器中,从页高速缓冲存储器中移除某个页。
为了便于回收页高速缓冲存储器中的页,在构造页高速缓冲存储器的同时,也将页高速缓冲存储器中的所有页都连接到一个双向链表中。比如可以使用页数据结构中的数据项链头表结点struct list_head lru将页串进双向链表中。而这个双向链表的操作存在于3个地方:当添加新的页到基数树的时候,同时需要将这些页加到双向链表的末尾;从基数树删除页的时候,同时从双向链表中拿掉对应的页;最后是当系统内存紧张时,会调用注册的释放函数内存收缩器memory shrinker。对于本发明中的memory shrinker,就是从双向链表的头部开始,释放指定数目的页,系统调用释放函数的时候会指定这个参数,同时也需要将基数树中的对应的页删除掉。
由于双向链表可能同时被两个不同的进程(Process)操作,所以可以通过锁mutex来保护。而基数树、双向链表的初始化以及释放函数的注册,在系统初始化外存储器设备的时候完成。
在系统内存不足时,可以调用释放函数使页高速缓冲存储器释放指定数据的页,该指定数据的页是从双向链表的表头开始的指定数据的页。具体地,当内存紧张时,遍历页高速缓冲存储器的链表,从链表头开始释放一定数量的页给系统。
S102:查找预存有开机所需小数据文件的页高速缓冲存储器是否包含数据请求所请求的数据;
对于数据请求,智能设备首先在页高速缓冲存储器(Page Cache)中查找数据请求所请求的数据。其中,页高速缓冲存储器预先存有开机所需的小数据文件,所述小数据文件是指其数据量小于设定阈值的文件。设定的阈值可以根据需要自行设定,本发明实施方式采用16K作为设定阈值。
查找页高速缓冲存储器中是否包含有数据请求所请求的数据,如果包含则进行步骤S103,否则进行步骤S104。
S103:判断数据请求是读数据请求还是写数据请求;
在页高速缓冲存储器中包含有数据请求所请求的数据时,进一步判断数据请求是读数据请求还是写数据请求,在数据请求为读数据请求时,进行步骤S105,在数据请求为写数据请求时,进行步骤S106。
S105:从页高速缓冲存储器拷贝请求的数据至数据请求后返回;
当页高速缓冲存储器中包含数据请求所请求的数据,且所述数据请求为读数据请求时,从页高速缓冲存储器中拷贝请求的数据至数据请求后返回。
其中,从页高速缓冲存储器中拷贝请求的数据至数据请求后返回的的具体实现过程又分为两种情况:
第一种情况:当页高速缓冲存储器中包含数据请求的所有请求的数据,则直接从页高速缓冲存储器中将请求的数据拷贝至数据请求后返回。
第二种情况:当页高速缓冲存储器中包含请求的数据的部分数据,这时候要进一步判断页高速缓冲存储器中所包含的部分数据的具体情况,若页高速缓冲存储器包含的部分数据覆盖数据请求所请求的数据最开始的连续一段数据或覆盖请求的数据结束的一段连续的数据,则将包含的部分数据拷贝至数据请求中,没有包含的请求的数据的部分数据从外存储器设备中读取;若页高速缓冲存储器包含的部分数据覆盖数据请求所请求的数据中间一段或零散部分,直接将页高速缓冲存储器中包含的部分数据删除,从外存储器设备中读取请求的数据。
针对第二种情况,事实上就是针对查找到的部分数据在数据请求中所处的位置进行分析然后再决定如何处理。只对查找到的部分数据是数据请求的前端或者后端连续的部分做处理。比如查找到的部分数据从第0页(page0)开始的若干个页,或者是从最后第n页(page n)开始往前连续的若干个页,这时就将查找到的部分数据拷贝进数据请求返回给上层。如果查找到的部分数据是数据请求中间的连续的若干页或者零散的页(也就是不包含page0和page n),直接将这部分数据从页高速缓冲存储器中删除,因为把中间的页拷贝进数据请求返回的话,这样就会导致从外存储器设备读取请求的剩余部分数据时,前端和后端至少两次读取,一般情况下回导致性能下降,反而没有做一次连续的读取操作速度快。
其中,从外存储器设备中读取所请求的数据的具体实现过程为:首先要判断需要从外存储器设备读取的数据是否小于设定的阈值,在请求的数据小于设定的阈值时,从外存储器设备中读取包含请求的数据在内的阈值大小的数据,从读取的阈值大小的数据中将请求的数据拷贝至数据请求后返回,剩余的数据添加到页高速缓冲存储器;在请求的数据大于等于设定的阈值时,直接从外存储器设备中读取请求的数据拷贝至数据请求后返回。
比如以本实施方式以设定的阈值为16KB为例,如果需要从外存储器设备读取的数据大于等于16K,直接从外存储器设备读取。当需要从外存储器设备读取的数据小于16K,就从外存储器设备读取16K的数据,从这16K的数据中将请求的数据拷贝至数据请求中返回给上层,多读出来的那一部分数据,向操作系统内核(Kernel)申请页,将数据拷贝进去,然后将这些页添加到页高速缓冲存储器中。
S106:将页高速缓冲存储器包含的请求的数据删除,再将数据请求所请求的数据写到外存储器设备;
如果页高速缓冲存储器中包含数据请求所请求的数据,且所述数据请求为写数据请求时,将页高速缓冲存储器包含的请求的数据删除,再讲数据请求所请求的数据写到外存储器设备。
S104:判断数据请求是读数据请求还是写数据请求;
在页高速缓冲存储器中没有包含数据请求所请求的数据时,也要进一步判断所述数据请求是读数据请求还是写数据请求。在数据请求为读数据请求时,进行S107,在数据请求为写数据请求时,进行步骤S108。
S107:从外存储器设备中读取请求的数据;
如果页高速缓冲存储器中没有包含数据请求所请求的数据,且所述数据请求为读数据请求时,从外存储器设备中读取请求的数据。其中,从外存储器设备中读取请求的数据的具体实现流程跟上述描述的方式一样,在此不再赘述。
S108:直接将请求的数据写入到外存储器设备;
如果页高速缓冲存储器中没有包含数据请求所请求的数据,且所述数据请求为写数据请求时,直接将请求的数据写到外存储器设备中。
其中,本发明提供的实施方式中,在进行举例或者具体描述的时候,都以智能电视作为举例说明,但这并不用以限制本发明所要求保护的范围。事实上,本发明的数据处理的方法同样可以适用于其他的智能设备,如笔记本电脑、平板电脑等等。
上述实施方式的描述,可以理解,本发明通过开机需要读取数据的时候,先从预存有开机所需的小数据文件的页高速缓冲存储器中查找,如果查找到就直接从页高速缓冲存储器中获取需要读取的数据。通过这样的方式,能够加速智能设备在开机过程中小数据文件的读取,使得系统开机速度加快。
通过以上方法实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可以借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但是很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等等)执行本发明各个实施方式所述方法的全部或部分步骤。而前述存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
请参阅图6,图6是本发明智能设备一个实施方式的结构示意图,本实施方式的智能设备200包括查找模块21、判断模块22以及处理模块23,其中:
查找模块21用于在智能设备启动过程中检测到数据请求时,查找预存有开机所需小数据文件的页高速缓冲存储器是否包含数据请求所请求的数据,小数据文件是指其数据量小于设定阈值的文件;
智能设备在启动过程中,检测到数据请求。对于数据请求,查找模块21首先在页高速缓冲存储器(Page Cache)中查找数据请求所请求的数据。其中,页高速缓冲存储器预先存有开机所需的小数据文件,所述小数据文件是指其数据量小于设定阈值的文件。设定的阈值可以根据需要自行设定,本发明实施方式采用16K作为设定阈值。
判断模块22在查找模块21查找到在页高速缓冲存储器包含请求的数据时,判断数据请求是读数据请求还是写数据请求;
在查找模块21查找到页高速缓冲存储器中包含有数据请求所请求的数据时,判断模块22进一步判断数据请求是读数据请求还是写数据请求,将判断结果输出给处理模块23。
处理模块23用于在判断模块22判断到数据请求是读数据请求时,从页高速缓冲存储器拷贝请求的数据至数据请求后返回。
处理模块23用于当页高速缓冲存储器中包含数据请求所请求的数据,且所述数据请求为读数据请求时,从页高速缓冲存储器中拷贝请求的数据至数据请求后返回。
其中,从页高速缓冲存储器中拷贝请求的数据至数据请求后返回的的具体实现过程又分为两种情况:
第一种情况:当页高速缓冲存储器中包含数据请求的所有请求的数据,则处理模块23直接从缓冲存储器中将请求的数据拷贝至数据请求后返回。
第二种情况:当页高速缓冲存储器中包含请求的数据的部分数据,这时候要进一步判断页高速缓冲存储器中所包含的部分数据的具体情况,若页高速缓冲存储器包含的部分数据覆盖数据请求所请求的数据最开始的连续一段数据或覆盖请求的数据结束的一段连续的数据,则处理模块23将包含的部分数据拷贝至数据请求中,没有包含的请求的数据的部分数据从外存储器设备中读取;若页高速缓冲存储器包含的部分数据覆盖数据请求所请求的数据中间一段或零散部分,处理模块23直接将页高速缓冲存储器中包含的部分数据删除,从外存储器设备中读取请求的数据。
针对第二种情况,事实上就是针对查找到的部分数据在数据请求中所处的位置进行分析然后再决定如何处理。只对查找到的部分数据是数据请求的前端或者后端连续的部分做处理。比如查找到的部分数据从第0页(page0)开始的若干个页,或者是从最后第n页(page n)开始往前连续的若干个页,这时就将查找到的部分数据拷贝进数据请求返回给上层。如果查找到的部分数据是数据请求中间的连续的若干页或者零散的页(也就是不包含page0和page n),直接将这部分数据从页高速缓冲存储器中删除,因为把中间的页拷贝进数据请求返回的话,这样就会导致从外存储器设备读取请求的剩余部分数据时,前端和后端至少两次读取,一般情况下回导致性能下降,反而没有做一次连续的读取操作速度快。
其中,处理模块23从外存储器设备中读取所请求的数据的具体实现过程为:首先要通过判断模块22判断需要从外存储器设备读取的数据是否小于设定的阈值,在请求的数据小于设定的阈值时,处理模块23从外存储器设备中读取包含请求的数据在内的阈值大小的数据,从读取的阈值大小的数据中将请求的数据拷贝至数据请求后返回,剩余的数据添加到页高速缓冲存储器;在请求的数据大于等于设定的阈值时,处理模块23直接从外存储器设备中读取请求的数据拷贝至数据请求后返回。
比如以本实施方式以设定的阈值为16KB为例,如果需要从外存储器设备读取的数据大于等于16K,直接从外存储器设备读取。当需要从外存储器设备读取的数据小于16K,就从外存储器设备读取16K的数据,从这16K的数据中将请求的数据拷贝至数据请求中返回给上层,多读出来的那一部分数据,向操作系统内核(Kernel)申请页,将数据拷贝进去,然后将这些页添加到页高速缓冲存储器中。
处理模块23还用于在页高速缓冲存储器没有包含请求的数据,且数据请求为读数据请求时,从外存储器设备中读取所述请求的数据。
如果页高速缓冲存储器中没有包含数据请求所请求的数据,且所述数据请求为读数据请求时,处理模块23从外存储器设备中读取请求的数据。其中,从外存储器设备中读取请求的数据的具体实现流程跟上述描述的方式一样,在此不再赘述。
另外,处理模块23还用于在页高速缓冲存储器包含请求的数据,且数据请求为写数据请求时,将页高速缓冲存储器包含的请求的数据删除,再将数据请求所请求的数据写到外存储器设备;或用于在页高速缓冲存储器没有包含请求的数据,且数据请求为写数据请求时,直接将请求的数据写入到外存储器设备。
如果页高速缓冲存储器中包含数据请求所请求的数据,且所述数据请求为写数据请求时,处理模块23将页高速缓冲存储器包含的请求的数据删除,再讲数据请求所请求的数据写到外存储器设备。
如果页高速缓冲存储器中没有包含数据请求所请求的数据,且所述数据请求为写数据请求时,处理模块23直接将请求的数据写到外存储器设备中。
请继续参阅图6,在本发明智能设备另一种可能的实施方式中,智能设备200还可以进一步包括预存模块24,预存模块24用于获取开机所需的小数据文件,将小数据文件连续的存放到页高速缓冲存储器中。
具体地,预存模块24用于将小数据文件,以页的形式存储在页高速缓冲存储器中,并采用基数树的形式管理存储在页高速缓冲存储器中的所有页。更进一步地,预存模块24还用于将页高速缓冲存储器中的所有页都连接到一个双向链表中。
其中,以安卓智能电视为例,针对安卓智能电视的文件系统为ext4本实施方式可以通过以下方式获取开机所需小数据文件:修改对应文件系统的打开文件(Open File)函数,将所打开文件的整个Path dump出来,过滤出小于设定阈值的数据文件即为开机所需的小数据文件。然后是修改安卓的文件系统中扫描目录的规范(Code),使得它优先处理开机需要的小数据文件,这样小数据文件就会被连续的放到一起,增加从页高速缓冲存储器中查找到请求数据的命中率。
也就是说,需要预读的开机所需的小数据文件是以页的形式存储在基数树中的,这个页对应的主键(Key)值就是所存储块的块号。因为基数树是高叉搜索树,所以给出Key值,就可以立即得到页高速缓冲存储器中相应页的指针。如果找不到,就返回空指针。
对于基数树的操作本实施方式提供了4组操作:查询单个页是否存在于页高速缓冲存储器中,查询从某个块号起始的N个页是否存在于页高速缓冲存储器中,添加一个页到页高速缓冲存储器中,从页高速缓冲存储器中移除某个页。
为了便于回收页高速缓冲存储器中的页,在构造页高速缓冲存储器的同时,也将页高速缓冲存储器中的所有页都连接到一个双向链表中。比如可以使用页数据结构中的数据项struct list_head lru将页串进双向链表中。而这个双向链表的操作存在于3个地方:当添加新的页到基数树的时候,同时需要将这些页加到双向链表的末尾;从基数树删除页的时候,同时从双向链表中拿掉对应的页;最后是当系统内存紧张时,会调用注册的释放函数memory shrinker。对于本发明中的memory shrinker,就是从双向链表的头部开始,释放指定数目的页,系统调用释放函数的时候会指定这个参数,同时也需要将基数树中的对应的页删除掉。
由于双向链表可能同时被两个不同的进程(Process)操作,所以可以通过mutex来保护。而基数树、双向链表的初始化以及释放函数的注册,在系统初始化外存储器设备的时候完成。
更进一步地,请继续参阅图6,在本发明智能设备的另一种可能的实现方式中,智能设备200还可以进一步包括释放模块25,释放模块25用于在系统内存不足时,调用释放函数使页高速缓冲存储器释放指定数目的页,指定数目的页是从双向链表的表头开始的指定数目的页。
具体地,释放模块25用于调用释放函数使页高速缓冲存储器从双向链表中删除所述指定数目的页,并将基数树中的指定数目的页删除。
上述本发明智能设备启动过程的数据处理方法及智能设备实施方式的具体阐述,可以理解,本发明通过预先将开机所需的小数据文件预读到页高速缓冲存储器中,在开机需要读数据的时候,先从页高速缓冲存储器中查找,如果查找到就直接从页高速缓冲存储器中获取需要读取的数据。该方法针对于开机需要写入数据的时候同样适用,在页高速缓冲存储器中有需要写入的数据则直接删除页高速缓冲存储器中的相应的页,然后直接将数据写入外存储器设备。通过这样的方式,能够加速智能设备在开机过程中小数据文件的读取,使得系统开机速度加快。从而解决软件越来越庞大,带来的开机变慢的问题。
在本发明所提供的几个实施方式中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本发明各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (20)

1.一种智能设备启动过程的数据处理方法,其特征在于,包括:
智能设备在启动过程中检测到数据请求时,查找预存有开机所需小数据文件的页高速缓冲存储器是否包含所述数据请求所请求的数据,所述小数据文件是指其数据量小于设定阈值的文件;
在所述页高速缓冲存储器包含所述请求的数据时,判断所述数据请求是读数据请求还是写数据请求;
在所述数据请求是读数据请求时,从所述页高速缓冲存储器拷贝所述请求的数据至所述数据请求后返回。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取开机所需的小数据文件,将所述小数据文件连续的存放到页高速缓冲存储器中。
3.根据权利要求2所述的方法,其特征在于,所述将所述小数据文件连续的存放到页高速缓冲存储器中的步骤包括:
将所述小数据文件,以页的形式存储在页高速缓冲存储器中,并采用基数树的形式管理存储在所述页高速缓冲存储器中的所有页。
4.根据权利要求3所述的方法,其特征在于,所述采用基数树的形式管理存储在所述页高速缓冲存储器中的所有页的步骤还包括:
将所述页高速缓冲存储器中的所有页都连接到一个双向链表中。
5.根据权利要求2-4任意一项所述的方法,其特征在于,所述方法还包括:
在系统内存不足时,调用释放函数使页高速缓冲存储器释放指定数目的页,所述指定数目的页是从所述双向链表的表头开始的指定数目的页。
6.根据权利要求5所述的方法,其特征在于,所述页高速缓冲存储器释放指定数目的页的步骤包括:
页高速缓冲存储器从所述双向链表中删除所述指定数目的页,并将所述基数树中的所述指定数目的页删除。
7.根据权利要求1所述的方法,其特征在于,所述从所述页高速缓冲存储器拷贝所述请求的数据至所述数据请求后返回的步骤包括:
当所述页高速缓冲存储器包含所述请求的数据的部分数据时,若所述页高速缓冲存储器包含的所述部分数据覆盖所述数据请求所请求的数据最开始的连续一段数据或覆盖所述请求的数据结束的一段连续的数据,则将包含的所述部分数据拷贝至所述数据请求中,没有包含的所述请求的数据的部分数据从外存储器设备中读取;若所述页高速缓冲存储器包含的所述部分数据覆盖所述数据请求所请求的数据中间一段或零散部分,直接将所述页高速缓冲存储器中包含的所述部分数据删除,从外存储器设备中读取所述请求的数据。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述页高速缓冲存储器没有包含所述请求的数据,且所述数据请求为读数据请求时,从外存储器设备中读取所述请求的数据。
9.根据权利要求7或8所述的方法,其特征在于,所述从外存储器设备中读取所请求的数据的步骤包括:
在所述请求的数据小于设定的阈值时,从所述外存储器设备中读取包含所述请求的数据在内的所述阈值大小的数据,从读取的所述阈值大小的数据中将所述请求的数据拷贝至所述数据请求后返回,剩余的数据添加到页高速缓冲存储器;在所述请求的数据大于等于所述设定的阈值时,直接从所述外存储器设备中读取所述请求的数据拷贝至所述数据请求后返回。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述页高速缓冲存储器包含所述请求的数据,且所述数据请求为写数据请求时,将所述页高速缓冲存储器包含的所述请求的数据删除,再将所述数据请求所请求的数据写到外存储器设备;在所述页高速缓冲存储器没有包含所述请求的数据,且所述数据请求为写数据请求时,直接将所述请求的数据写入到外存储器设备。
11.一种智能设备,其特征在于,所述智能设备包括查找模块、判断模块以及处理模块,其中:
所述查找模块用于在智能设备启动过程中检测到数据请求时,查找预存有开机所需小数据文件的页高速缓冲存储器是否包含所述数据请求所请求的数据,所述小数据文件是指其数据量小于设定阈值的文件;
所述判断模块在所述查找模块查找到在所述页高速缓冲存储器包含所述请求的数据时,判断所述数据请求是读数据请求还是写数据请求;
所述处理模块用于在所述判断模块判断到所述数据请求是读数据请求时,从所述页高速缓冲存储器拷贝所述请求的数据至所述数据请求后返回。
12.根据权利要求11所述的智能设备,其特征在于,所述智能设备还包括预存模块,所述预存模块用于获取开机所需的小数据文件,将所述小数据文件连续的存放到页高速缓冲存储器中。
13.根据权利要求12所述的智能设备,其特征在于,所述预存模块用于将所述小数据文件,以页的形式存储在页高速缓冲存储器中,并采用基数树的形式管理存储在所述页高速缓冲存储器中的所有页。
14.根据权利要求13所述的智能设备,其特征在于,所述预存模块还用于将所述页高速缓冲存储器中的所有页都连接到一个双向链表中。
15.根据权利要求12-14任意一项所述的智能设备,其特征在于,所述智能设备还包括释放模块,所述释放模块用于在系统内存不足时,调用释放函数使页高速缓冲存储器释放指定数目的页,所述指定数目的页是从所述双向链表的表头开始的指定数目的页。
16.根据权利要求15所述的智能设备,其特征在于,所述释放模块具体用于调用释放函数使页高速缓冲存储器从所述双向链表中删除所述指定数目的页,并将所述基数树中的所述指定数目的页删除。
17.根据权利要求11所述的智能设备,其特征在于,在所述页高速缓冲存储器包含所述请求的数据的部分数据时,若所述页高速缓冲存储器包含的所述部分数据覆盖所述数据请求所请求的数据最开始的连续一段数据或覆盖所述请求的数据结束的一段连续的数据,所述处理模块将包含的所述部分数据拷贝至所述数据请求中,没有包含的所述请求的数据的部分数据从外存储器设备中读取;若所述页高速缓冲存储器包含的所述部分数据覆盖所述数据请求所请求的数据中间一段或零散部分,所述处理模块直接将所述页高速缓冲存储器中包含的所述部分数据删除,从外存储器设备中读取所述请求的数据。
18.根据权利要求11所述的设备,其特征在于,所述处理模块还用于在所述页高速缓冲存储器没有包含所述请求的数据,且所述数据请求为读数据请求时,从外存储器设备中读取所述请求的数据。
19.根据权利要求17或18所述的智能设备,其特征在于,所述处理模块用于在所述请求的数据小于设定的阈值时,从所述外存储器设备中读取包含所述请求的数据在内的所述阈值大小的数据,从读取的所述阈值大小的数据中将所述请求的数据拷贝至所述数据请求后返回,剩余的数据添加到页高速缓冲存储器;或用于在所述请求的数据大于等于所述设定的阈值时,直接从所述外存储器设备中读取所述请求的数据拷贝至所述数据请求后返回。
20.根据权利要求11所述的智能设备,其特征在于,所述处理模块还用于在所述页高速缓冲存储器包含所述请求的数据,且所述数据请求为写数据请求时,将所述页高速缓冲存储器包含的所述请求的数据删除,再将所述数据请求所请求的数据写到外存储器设备;或用于在所述页高速缓冲存储器没有包含所述请求的数据,且所述数据请求为写数据请求时,直接将所述请求的数据写入到外存储器设备。
CN201410298614.2A 2014-06-26 2014-06-26 智能设备启动过程的数据处理方法及智能设备 Active CN104102695B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201410298614.2A CN104102695B (zh) 2014-06-26 2014-06-26 智能设备启动过程的数据处理方法及智能设备
TW103128992A TWI507987B (zh) 2014-06-26 2014-08-22 智能設備啓動過程的資料處理方法及智能設備
US14/751,223 US9710283B2 (en) 2014-06-26 2015-06-26 System and method for pre-storing small data files into a page-cache and performing reading and writing to the page cache during booting

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410298614.2A CN104102695B (zh) 2014-06-26 2014-06-26 智能设备启动过程的数据处理方法及智能设备

Publications (2)

Publication Number Publication Date
CN104102695A true CN104102695A (zh) 2014-10-15
CN104102695B CN104102695B (zh) 2017-11-10

Family

ID=51670849

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410298614.2A Active CN104102695B (zh) 2014-06-26 2014-06-26 智能设备启动过程的数据处理方法及智能设备

Country Status (3)

Country Link
US (1) US9710283B2 (zh)
CN (1) CN104102695B (zh)
TW (1) TWI507987B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375871A (zh) * 2014-12-04 2015-02-25 福州瑞芯微电子有限公司 一种基于eMMC加速系统开机的方法和装置
CN109213526A (zh) * 2017-06-30 2019-01-15 清华大学 用于确定处理器操作的方法及装置
CN114625433A (zh) * 2020-11-27 2022-06-14 北京字跳网络技术有限公司 应用程序启动方法和系统

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2843570B1 (en) * 2013-06-21 2018-11-28 Huawei Technologies Co., Ltd. File reading method, storage device and reading system
CN108399047B (zh) * 2017-02-06 2022-11-29 中兴通讯股份有限公司 一种闪存文件系统及其数据管理方法
US11042383B2 (en) * 2018-02-03 2021-06-22 Insyde Software Corp. System and method for boot speed optimization using non-volatile dual in-line memory modules
CN110855786B (zh) * 2019-11-18 2022-07-29 天津联想协同科技有限公司 针对网络数据请求的处理方法、设备及计算机存储介质
US20220011746A1 (en) * 2020-07-08 2022-01-13 BWR Innovations LLC Software Architecture and System for Delivering Selected Sanitation Protocols for Multiple Pathogens and Pests
CN112559060A (zh) * 2020-12-09 2021-03-26 珠海全志科技股份有限公司 基于文件pagecache预读加速开机启动的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814038A (zh) * 2010-03-23 2010-08-25 杭州顺网科技股份有限公司 一种加快计算机启动速度的方法
CN102323888A (zh) * 2011-08-11 2012-01-18 杭州顺网科技股份有限公司 一种无盘计算机启动加速方法
US20140173215A1 (en) * 2012-12-13 2014-06-19 Western Digital Technologies, Inc. Methods and systems for provisioning a bootable image on to an external drive

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19961499A1 (de) * 1999-12-20 2001-07-05 Ericsson Telefon Ab L M Caching von Objekten in Platten-gestützten Datenbanken
US8239354B2 (en) * 2005-03-03 2012-08-07 F5 Networks, Inc. System and method for managing small-size files in an aggregated file system
US8195760B2 (en) * 2001-01-11 2012-06-05 F5 Networks, Inc. File aggregation in a switched file system
US6766413B2 (en) * 2001-03-01 2004-07-20 Stratus Technologies Bermuda Ltd. Systems and methods for caching with file-level granularity
US6920533B2 (en) * 2001-06-27 2005-07-19 Intel Corporation System boot time reduction method
US7003646B2 (en) * 2002-03-27 2006-02-21 Hewlett-Packard Development Company, L.P. Efficiency in a memory management system
TW200828273A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Hard disk cache device and method
WO2009107393A1 (ja) * 2008-02-29 2009-09-03 パナソニック株式会社 アクセス装置、情報記録装置、コントローラ、及び情報記録システム
US7853751B2 (en) * 2008-03-12 2010-12-14 Lsi Corporation Stripe caching and data read ahead
WO2011043845A1 (en) * 2009-10-07 2011-04-14 Qualcomm Incorporated Method and apparatus for avoiding physical random access channel collisions
US9292329B2 (en) * 2011-02-10 2016-03-22 Microsoft Technology Licensing, Llc Virtual switch interceptor
TWI514278B (zh) * 2012-09-19 2015-12-21 Ind Tech Res Inst 開機之映像檔之大小縮減方法及運算裝置
TW201502782A (zh) * 2013-05-07 2015-01-16 Insyde Software Corp 非依電性記憶體中之作業系統啟動加載器之快取技術
KR102094163B1 (ko) * 2013-08-28 2020-03-27 삼성전자 주식회사 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814038A (zh) * 2010-03-23 2010-08-25 杭州顺网科技股份有限公司 一种加快计算机启动速度的方法
CN102323888A (zh) * 2011-08-11 2012-01-18 杭州顺网科技股份有限公司 一种无盘计算机启动加速方法
US20140173215A1 (en) * 2012-12-13 2014-06-19 Western Digital Technologies, Inc. Methods and systems for provisioning a bootable image on to an external drive

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375871A (zh) * 2014-12-04 2015-02-25 福州瑞芯微电子有限公司 一种基于eMMC加速系统开机的方法和装置
CN104375871B (zh) * 2014-12-04 2018-01-09 福州瑞芯微电子股份有限公司 一种基于eMMC加速系统开机的方法和装置
CN109213526A (zh) * 2017-06-30 2019-01-15 清华大学 用于确定处理器操作的方法及装置
CN109213526B (zh) * 2017-06-30 2020-03-03 清华大学 用于确定处理器操作的方法及装置
CN114625433A (zh) * 2020-11-27 2022-06-14 北京字跳网络技术有限公司 应用程序启动方法和系统
CN114625433B (zh) * 2020-11-27 2024-05-07 北京字跳网络技术有限公司 应用程序启动方法和系统

Also Published As

Publication number Publication date
TW201601064A (zh) 2016-01-01
TWI507987B (zh) 2015-11-11
CN104102695B (zh) 2017-11-10
US20150378745A1 (en) 2015-12-31
US9710283B2 (en) 2017-07-18

Similar Documents

Publication Publication Date Title
CN104102695A (zh) 智能设备启动过程的数据处理方法及智能设备
CN111108493B (zh) 使用键值存储系统简化文件系统操作的系统、方法和设备
KR101977575B1 (ko) 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
KR102002830B1 (ko) 세그먼트 클리닝 장치 및 방법
EP3170106B1 (en) High throughput data modifications using blind update operations
EP2645260B1 (en) File system hinting
US20110218972A1 (en) Data reduction indexing
US8977626B2 (en) Indexing and searching a data collection
CN102214109B (zh) 一种加载插件的方法及装置
US8086810B2 (en) Rapid defragmentation of storage volumes
CN108121813B (zh) 数据管理方法、装置、系统、存储介质及电子设备
US8234317B1 (en) Auto-committing files to immutable status based on a change log of file system activity
JP5886447B2 (ja) ロケーション非依存のファイル
US20180046385A1 (en) Systems and methods for writing back data to a storage device
EP3814930B1 (en) System and method for bulk removal of records in a database
CN105573669A (zh) 一种存储系统的io读加速缓存方法和系统
CN109086141B (zh) 内存管理方法和装置以及计算机可读存储介质
US20170160940A1 (en) Data processing method and apparatus of solid state disk
Lee et al. ActiveSort: Efficient external sorting using active SSDs in the MapReduce framework
US7356493B2 (en) Apparatus and method for passing information between catalogs in a computer operating system
CN103902562A (zh) 一种终端数据库升级方法及相关装置
US11238035B2 (en) Personal information indexing for columnar data storage format
CN110352410B (zh) 跟踪索引节点的访问模式以及预提取索引节点
CN111209257B (zh) 一种文件系统碎片化的方法及装置
KR20210076828A (ko) 키-값 장치 및 이의 블록 인터페이스 에뮬레이션 방법

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200403

Address after: No.1, Duhang 1st Road, Hsinchu City, Hsinchu Science Park, Taiwan, China

Patentee after: MEDIATEK Inc.

Address before: Taiwan Hsinchu County Tai Yuan Street China jhubei City, No. 26 4 floor 1

Patentee before: MStar Semiconductor, Inc.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220519

Address after: Ontario, Canada

Patentee after: Xueshan Technology Co.,Ltd.

Address before: No.1, Duhang 1st Road, Hsinchu City, Hsinchu Science Park, Taiwan, China

Patentee before: MEDIATEK Inc.