CN106980577B - 输入输出处理方法、装置及终端 - Google Patents
输入输出处理方法、装置及终端 Download PDFInfo
- Publication number
- CN106980577B CN106980577B CN201710165078.2A CN201710165078A CN106980577B CN 106980577 B CN106980577 B CN 106980577B CN 201710165078 A CN201710165078 A CN 201710165078A CN 106980577 B CN106980577 B CN 106980577B
- Authority
- CN
- China
- Prior art keywords
- request
- hit
- mapping cache
- mapping
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 238000013507 mapping Methods 0.000 claims abstract description 198
- 238000004088 simulation Methods 0.000 claims abstract description 50
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000012545 processing Methods 0.000 claims abstract description 41
- 230000004044 response Effects 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 14
- 238000013461 design Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种输入输出处理方法、装置及终端,该方法包括:确定至少一个输入输出IO请求所对应的逻辑地址;根据所述IO请求所对应的逻辑地址,确定模拟映射缓存信息,其中,所述模拟映射缓存信息与缓存控制器的映射缓存中所保存的信息保持一致;根据所述模拟映射缓存信息,确定所述IO请求的请求类型;根据所述IO请求的请求类型以及预设的调度优先级进行IO请求调度。该方法通过获取模拟映射缓存信息,使得在主机侧可以实时获知缓存控制器中映射缓存的实际情况,再基于该信息优先调度可以命中的IO请求,从而使得映射缓存中的映射信息在被覆盖之前就被命中,极大提升映射缓存的命中率。
Description
技术领域
本申请涉及通信技术,尤其涉及一种输入输出处理方法、装置及终端。
背景技术
目前的智能手机主要采用基于闪存的存储设备,其中,映射缓存是闪存中的关键部件,映射缓存主要用来缓存逻辑地址到物理地址的映射信息,以加快闪存内部的地址转换。而在智能手机等嵌入式设备中,由于功耗与成本控制的限制,映射缓存的尺寸都设计的较小。映射缓存的尺寸设计越小,命中率就越低,这会增加存储设备的管理开销,损害输入/输出(Input/Output,IO)性能。
现有技术中,提出了一种提升设备IO性能的IO调度方法,该方法对多个IO请求进行判断,识别可以并行执行的IO请求,进而并行执行这些IO请求,从而提升IO的整体性能。
但是,现有技术所提出的方法并未考虑映射缓存对IO性能的影响,不能解决映射缓存命中率低的问题。
发明内容
本申请提供一种输入输出处理方法、装置及终端,用于解决现有技术中映射缓存命中率低的问题。
本申请第一方面提供一种输入输出处理方法,该方法包括:主机首先确定至少一个IO请求所对应的逻辑地址,再根据该IO请求所对应的逻辑地址,确定模拟映射缓存信息,其中,所述模拟映射缓存信息与缓存控制器的映射缓存中所保存的信息保持一致,进而,主机根据所述模拟映射缓存信息,确定所述IO请求的请求类型,所述IO请求的请求类型包括可命中IO请求以及不可命中IO请求,其中,所述可命中IO请求为可在闪存控制器的映射缓存中命中的IO请求,所述不可命中IO请求为不能在闪存控制器的映射缓存中命中的IO请求;进而,主机再根据所述IO请求的请求类型以及预设的调度优先级进行IO请求调度,其中,在所述预设的调度优先级中,所述可命中IO请求的优先级高于所述不可命中IO请求的优先级。
该方法中,通过获取模拟映射缓存信息,使得在主机侧可以实时获知缓存控制器中映射缓存的实际情况,再基于该模拟映射缓存信息确定IO请求的类型,即确定主机中的各IO请求是否能够在缓存控制器的映射缓存中命中,再按照先调度可命中IO请求再调度不可命中IO请求的优先级顺序来调度IO请求,从而使得映射缓存中的映射信息在被覆盖之前就被命中,从而极大提升映射缓存的命中率。
在一种可能的设计中,主机根据所述IO请求所对应的逻辑地址,确定模拟映射缓存信息的具体方式为:
根据所述IO请求所对应的逻辑地址,对闪存控制器中的映射缓存处理过程进行模拟,确定模拟映射缓存信息。
在一种可能的设计中,主机根据所述模拟映射缓存信息,确定所述IO请求的请求类型的具体方式为:
若所述模拟映射缓存信息中存在所述IO请求对应的逻辑地址,则确定所述IO请求的请求类型为可命中IO请求;或者,
若所述模拟映射缓存信息中不存在所述IO请求对应的逻辑地址,则确定所述IO请求的请求类型为不可命中IO请求。
在一种可能的设计中,主机根据所述IO请求的请求类型进行IO请求调度的具体方法为:
对请求类型为可命中IO请求的所述IO请求进行调度;
按照所述IO请求对应的逻辑地址,将请求类型为不可命中IO请求的所述IO请求划分为至少一个IO请求组;
按照所述至少一个IO请求组对请求类型为不可命中IO请求的所述IO请求进行调度。
在一种可能的设计中,主机按照所述至少一个IO请求组对请求类型为不可命中IO请求的所述IO请求进行调度的具体方法为:
将所述IO请求组中的首个IO请求,以及除所述首个IO请求外的其余IO请求所对应的逻辑地址发送给闪存控制器,以使所述闪存控制器根据所述首个IO请求外的其余IO请求所对应的逻辑地址确定地址映射信息,以及将所述地址映射信息写入所述闪存控制器的映射缓存中;
接收所述缓存控制器的响应;
根据所述缓存控制器的响应,将所述IO请求组中除所述首个IO请求外的其余IO请求发送给所述闪存控制器。
该方法中,主机仅将一个请求组中的第一个IO请求本身以及其余IO请求的逻辑地址发送给缓存控制器,在缓存控制器将其余IO请求的地址映射信息预读入映射缓存之后,主机再将其余IO请求本身发送给缓存控制器,由于在这些IO请求本身发送之前其地址映射信息已经预读入映射缓存中了,因此,这些IO请求能够在映射缓存中命中,从而降低了缓存控制器在进行地址转换时的管理开销。
在一种可能的设计中,所述IO请求组中的IO请求所对应的逻辑地址属于同一预设地址段。
在一种可能的设计中,上述方法还包括:
判断请求类型为不可命中IO请求的所述IO请求的调度等待时间是否达到预设时间,若是,则调度所述请求类型为不可命中IO请求的所述IO请求。
在一种可能的设计中,所述模拟映射缓存信息中包括逻辑地址信息。
本申请第二方面提供一种输入输出处理装置,该输入输出处理装置具有实现上述方法的功能。这些功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,该输入输出处理装置可以包括处理模块,该处理模块可以执行上述方法中的相应功能,例如:处理模块,用于确定至少一个输入输出IO请求所对应的逻辑地址;以及,根据所述IO请求所对应的逻辑地址,确定模拟映射缓存信息,其中,所述模拟映射缓存信息与缓存控制器的映射缓存中所保存的信息保持一致;以及,根据所述模拟映射缓存信息,确定所述IO请求的请求类型,所述IO请求的请求类型包括可命中IO请求以及不可命中IO请求,其中,所述可命中IO请求为可在闪存控制器的映射缓存中命中的IO请求,所述不可命中IO请求为不能在闪存控制器的映射缓存中命中的IO请求;以及,根据所述IO请求的请求类型以及预设的调度优先级进行IO请求调度,其中,在所述预设的调度优先级中,所述可命中IO请求的优先级高于所述不可命中IO请求的优先级。
本申请第三方面提供一种终端,该终端包括上述的输入输出处理装置。
本申请第四方面提供一种终端,该终端包括存储器以及处理器,所述存储器用于存储程序指令,所述处理器用于调用所述存储器中的程序指令,实现上述第一方面及其各实施方式中的方法。
附图说明
图1为本申请提供的输入输出处理方法对应的系统架构图;
图2为本申请提供的输入输出处理方法实施例一的流程示意图;
图3为主机中模拟映射缓存信息与缓存控制器中映射缓存信息的对比示例图;
图4为本申请提供的输入输出处理方法实施例二的流程示意图;
图5为不可命中IO请求的分组示例图;
图6为主机执行IO请求调度的完整流程示意图;
图7为本申请提供的输入输出处理方法实施例三的流程示意图;
图8为待调度的IO请求示例;
图9为本申请所提供的输入输出处理方法的完整处理过程;
图10为本申请提供的输入输出处理装置实施例一的模块结构图;
图11为本申请提供的终端实施例一的实体框图。
具体实施方式
图1为本申请提供的输入输出处理方法对应的系统架构图,该系统架构图为智能手机等具有闪存存储设备的嵌入式设备的内部系统架构,如图1所示,该方法对应的系统架构中包括主机、闪存控制器以及闪存芯片。其中,主机根据上层应用的需求生成各种IO请求,并由主机中的IO调度器进行IO请求的调度。IO调度器根据一定的规则将IO请求发送到闪存控制器,IO请求具体可以为读请求或写请求。闪存控制器负责管理闪存芯片,提供闪存芯片的地址映射和闪存芯片的访问。闪存控制器中包括映射缓存,用于存储逻辑地址到物理地址的映射信息。闪存控制器接收到主机的IO调度器发送的IO请求后,将IO请求对应地址映射信息读入映射缓存,完成逻辑地址到物理地址转换;而如果映射缓存中存在IO请求对应的逻辑地址,则可以直接通过映射缓存获取IO请求对应的物理地址。然后,闪存控制器根据获得的物理地址,进行闪存芯片的访问。
本申请从主机的角度进行描述。
图2为本申请提供的输入输出处理方法实施例一的流程示意图,如图2所示,该方法包括:
S201、确定至少一个IO请求所对应的逻辑地址。
主机根据上层应用的需求可以生成多个IO请求,例如上层应用需要保存一幅图片,主机会相应生成一个写请求。生成每个IO请求时都需要确定该请求对应的逻辑地址,即需要向哪个逻辑地址写入内容或从哪个逻辑地址读取内容。
S202、根据IO请求所对应的逻辑地址,确定模拟映射缓存信息。
其中,上述模拟映射缓存信息与缓存控制器的映射缓存中所保存的信息保持一致。
如前述图1中所示,缓存控制器中包括映射缓存,用于存储逻辑地址到物理地址的映射信息。即在现有技术中,由缓存控制器根据从主机接收到的IO请求,利用特定的算法来填充映射缓存。但是缓存控制器仅是在收到IO请求之后来确定映射缓存中应该填入哪些映射信息,当映射缓存尺寸较小时,映射缓存中写入的映射信息很容易会被覆盖掉,当再次出现对应地址的IO请求后,缓存控制器又需要再进行一次处理来获取地址映射信息,使得映射缓存的命中率过低。
本步骤中,根据IO请求所对应的逻辑地址,确定模拟映射缓存信息,即在主机侧根据当前的IO请求对缓存控制器中的映射缓存进行模拟,得到模拟映射缓存信息,该模拟映射缓存信息与缓存控制器中实际的映射缓存中的信息能够保持一致,从而保证实时获取缓存控制器中映射缓存的具体内容,再结合如下步骤的操作来提升映射缓存的命中率。
S203、根据上述模拟映射缓存信息,确定IO请求的请求类型。
其中,IO请求的请求类型包括可命中IO请求以及不可命中IO请求,可命中IO请求为可在闪存控制器的映射缓存中命中的IO请求,不可命中IO请求为不能在闪存控制器的映射缓存中命中的IO请求。
经过前述步骤S202获得模拟映射缓存信息之后,即获得了缓冲控制器中实际的映射缓存的内容,基于此,可以确定IO请求的请求类型是命中IO请求或者不可命中IO请求。举例来说,某个IO请求对应的逻辑地址为0001,确定出的模拟映射缓存信息中存在0001这个逻辑地址,则说明该IO请求可以在真正的映射缓存中命中,因此可以将此IO请求归为可命中IO请求的类型。
S204、根据所述IO请求的请求类型以及预设的调度优先级进行IO请求调度。
其中,在上述预设的调度优先级中,上述可命中IO请求的优先级高于上述不可命中IO请求的优先级。
当确定出IO请求的请求类型之后,即已经获知主机中的IO请求是否能够在缓存控制器中的映射缓存命中之后,就可以基于IO请求的请求类型以及上述预设的调度优先级进行IO请求调度。具体地,首先调度可命中IO请求,这样能够保证这些IO请求被发送到闪存控制器之后能够命中映射缓存,当这些可命中IO请求被调度之后,再调度不可命中IO请求,通过先调度可命中IO请求,使得映射缓存中的映射信息在被覆盖之前就被命中,从而极大提升映射缓存的命中率。
本实施例中,通过获取模拟映射缓存信息,使得在主机侧可以实时获知缓存控制器中映射缓存的实际情况,再基于该模拟映射缓存信息确定IO请求的类型,即确定主机中的各IO请求是否能够在缓存控制器的映射缓存中命中,再按照先调度可命中IO请求再调度不可命中IO请求的优先级顺序来调度IO请求,从而使得映射缓存中的映射信息在被覆盖之前就被命中,从而极大提升映射缓存的命中率。
在上述实施例的基础上,本实施例涉及主机确定模拟映射缓存信息的一种具体实施方法,即,上述步骤S202的一种具体实施方式为:
根据上述IO请求所对应的逻辑地址,对闪存控制器中的映射缓存处理过程进行模拟,确定模拟映射缓存信息。
具体地,闪存控制器中的映射缓存具有特定的大小,并且,闪存控制器在对映射缓存进行管理时,按照特定的管理算法来管理。当主机模拟闪存控制器中的映射缓存处理过程时,使用与映射缓存相同的管理算法,并且在主机中设置与映射缓存相同大小的缓存,从而保证主机所模拟出的模拟缓存信息与实际映射缓存中的信息完全相同。
可选地,主机可以在动态随机存储器(Dynamic Random Access Memory,DRAM)中确定特定的一块空间,并输入IO请求对应的逻辑地址,进而模拟闪存控制器中映射缓存的处理过程,从而得到模拟映射缓存内容。
需要说明的是,本申请中所述的模拟映射缓存信息与缓存控制器的映射缓存中所保存的信息保持一致,并不是指模拟映射缓存信息与映射缓存中所保存的信息完全相同,而仅需要保证二者的逻辑地址完全相同即可。以下举例说明。
图3为主机中模拟映射缓存信息与缓存控制器中映射缓存信息的对比示例图,如图3所示,主机中的模拟映射缓存信息中仅包括逻辑地址,而缓存控制器的映射缓存存储了逻辑地址与物理地址的映射关系。由于主机中的模拟映射缓存信息的作用是用于判断IO请求是否能在映射缓存中命中,而该判断仅需要逻辑地址即可完成,因此,模拟映射缓存信息仅需要包括逻辑地址即可,即仅需要保证通过模拟所得到的模拟映射缓存信息中的逻辑地址与缓存控制器中映射缓存的逻辑地址完全一致即可。这样的处理方式既能实现对映射缓存的准确模拟,同时还能够减少主机处理的复杂度。
在上述实施例的基础上,本实施例涉及主机确定IO请求的请求类型的具体方法,即,上述步骤S203的一种具体实施方式为:
若上述模拟映射缓存信息中存在IO请求对应的逻辑地址,则确定IO请求的请求类型为可命中IO请求;或者,
若上述模拟映射缓存信息中不存在IO请求对应的逻辑地址,则确定IO请求的请求类型为不可命中IO请求。
具体地,当得到模拟映射缓存信息之后,即相当于主机获知了缓存控制器中映射缓存的内容,进而,对于主机中的每一个IO请求,主机判断该IO请求所对应的逻辑地址是否在模拟映射缓存信息中,如果在,则说明缓存控制器中的映射缓存能够命中该IO请求,则将该IO请求归为可命中IO请求这一类型;如果不在,则说明缓存控制器中的映射缓存不能命中该IO请求,则将该IO请求归为不可命中IO请求这一类型。
在上述实施例的基础上,本实施例涉及主机根据IO请求类型进行IO请求调度的具体方法,即,图4为本申请提供的输入输出处理方法实施例二的流程示意图,如图4所示,上述步骤S204的一种具体实施过程包括:
S401、对请求类型为可命中IO请求的IO请求进行调度。
需要说明的是,本实施例中,步骤S401必须在S403之前执行,即,可命中IO请求的优先级高于不可命中IO请求,必须先调度可命中IO请求,这样才能够保证闪存控制器中映射缓存的内容被覆盖之前被命中,以提升映射缓存的命中率。
可选地,在对请求类型为可命中IO请求的IO请求进行调度时,可以预先将这些IO请求置于一个命中队列中,具体可以将这些IO请求按照逻辑地址由小到达的顺序排列在命中队列中,并将命中队列中的IO请求按序逐个发送到缓存控制器中。
S402、按照IO请求对应的逻辑地址,将请求类型为不可命中IO请求的IO请求划分为至少一个IO请求组。
图5为不可命中IO请求的分组示例图,如图5所示,共有6个不可命中IO请求,IO请求序号分别为1、4、2、3、6、7,其中,IO请求1和4的逻辑地址属于100-199这个范围内,IO请求2、3、6的逻辑地址属于300-399这个范围,IO请求7的逻辑地址属于400-499这个范围。将IO请求1和4划分至IO请求组1,将IO请求2、3、6划分至IO请求组2,将IO请求7划分至IO请求组3。
S403、按照上述至少一个IO请求组对请求类型为不可命中IO请求的IO请求进行调度。
对于不可命中IO请求来说,当将这些IO请求发送到闪存控制器之后,闪存控制器需要根据这些IO请求的逻辑地址来获取对应的物理地址,并将逻辑地址与物理地址的映射信息写入映射缓存,如果对每个IO请求都执行这个过程,会增大缓存控制器的开销。而将IO请求分组之后,每个IO请求组中的IO请求的逻辑地址都比较接近,即都属于同一预设地址段,这些IO请求的地址映射信息位于闪存控制器中的同一映射页,如果可以将每个IO请求组中的IO请求的逻辑地址一次发送给闪存控制器,则闪存控制器仅需要一次操作就可以获取一个IO请求组中的所有IO请求的地址映射信息,这样就可以大大降低缓存控制器的开销。
可选地,在对请求类型为不可命中IO请求的IO请求进行调度时,可以预先将这些IO请求置于一个未命中队列中,该未命中队列中的IO请求按照IO请求组进行排列。
图6为主机执行IO请求调度的完整流程示意图,如图6所示,该过程包括:
S601、判断命中队列是否为空,若否,则执行S602,若是,则执行S603。
S602、对命中队列中的IO请求进行调度。
具体过程可以参见上述步骤S401。
S603、判断未命中队列是否为空,若否,则执行S604,若是,则结束。
S604、对未命中队列中的IO请求进行调度。
具体过程可以参见上述步骤S402-S403。
在上述实施例的基础上,本实施例涉及主机按照IO请求组对请求类型为不可命中IO请求的IO请求进行调度的具体方法,即,图7为本申请提供的输入输出处理方法实施例三的流程示意图,如图7所示,上述步骤S403的一种具体实施过程为:
S701、将上述IO请求组中的首个IO请求,以及除该首个IO请求外的其余IO请求所对应的逻辑地址发送给闪存控制器,以使所述闪存控制器根据所述首个IO请求外的其余IO请求所对应的逻辑地址确定地址映射信息,以及将所述地址映射信息写入所述闪存控制器的映射缓存中。
以图5所示的IO请求组为例,假设当前调度到IO请求2,即调度到IO请求组2的第一个IO请求,则主机会将IO请求2本身,以及同一组内的IO请求3和6的逻辑地址发送给闪存控制器。闪存控制器接收到上述两个信息之后,会处理IO请求1,同时,会预读取IO请求3和6的逻辑地址所对应的物理地址,由于IO请求3和IO请求6属于同一IO请求组,即二者的逻辑地址属于同一映射页,因此闪存控制器可以一次性读取到二者的逻辑地址对应的物理地址,从而极大提升了闪存控制器的处理效率。进而,闪存控制器将IO请求3和6的逻辑地址和物理地址的对应关系,即地址映射信息,写入闪存控制器的映射缓存中,即将IO请求3和6的地址映射信息预读入映射缓存中。
S702、接收缓存控制器的响应。
当缓存控制器执行完上述过程之后,会向主机发送处理响应,主机接收该响应。
S703、根据缓存控制器的响应,将上述IO请求组中除上述首个IO请求外的其余IO请求发送给闪存控制器。
即,在步骤S701中,主机仅将一个请求组中的第一个IO请求本身以及其余IO请求的逻辑地址发送给缓存控制器,在缓存控制器将其余IO请求的地址映射信息预读入映射缓存之后,主机再将其余IO请求本身发送给缓存控制器,由于在这些IO请求本身发送之前其地址映射信息已经预读入映射缓存中了,因此,这些IO请求能够在映射缓存中命中,从而降低了缓存控制器在进行地址转换时的管理开销。
另一实施例中,上述方法还包括:
判断请求类型为不可命中IO请求的IO请求的调度等待时间是否达到预设时间,若是,则调度请求类型为不可命中IO请求的IO请求。
如前述实施例所述,主机根据模拟映射缓存信息确定出IO请求的请求类型之后,按照可命中IO请求优先的原则来调度IO请求,即,可命中IO请求会被优先调度,而不可命中IO请求就需要等待,如果某个不可命中IO请求一直不被调度,则可能出现该IO请求异常的问题,因此,本实施例中,对IO请求的调度等待时间进行监控,如果某个IO请求的调度等待时间超过预设时间,则立即调度该IO请求,从而避免出现IO请求异常的问题。
以下结合图8的IO请求实例来说明本申请所提供的输入输出处理方法的完整处理过程,图8为待调度的IO请求示例,其中,主机根据模拟映射缓存信息确定出IO请求的请求类型之后,分别将可命中IO请求以及不可命中IO请求置于命中队列以及未命中队列中,并且,未命中队列中的IO请求按照IO请求组的顺序进行排列。图9为本申请所提供的输入输出处理方法的完整处理过程,如图9所示,图8的示例对应的处理过程为:
S901、主机根据模拟映射缓存信息确定IO请求的请求类型。
S902、主机将属于可命中IO请求类型的IO请求5、8、9置于命中队列。
S903、主机调度IO请求5、8、9。
主机判断命中队列不为空,则按顺序调度命中队列中的IO请求5、8、9。
S904、主机将属于不可命中IO请求类型的IO请求1、4、2、3、6、7进行分组,并置于未命中队列。
其中,IO请求1、4属于IO请求组1,IO请求2、3、6属于IO请求组2,IO请求7属于IO请求组3。
S905、主机向闪存控制器发送IO请求1本身以及IO请求4对应的逻辑地址。
S906、闪存控制器处理IO请求1,同时将IO请求4的地址映射信息预读入映射缓存。
S907、闪存控制器向主机发送响应。
S908、主机向闪存控制器发送IO请求4本身,请求4在映射缓存中命中。
S909、重复执行步骤S905-S908,进行IO请求组2以及IO请求组3的调度。
其中,上述步骤中主机的处理过程具体可以由主机中的IO调度器来执行。
图10为本申请提供的输入输出处理装置实施例一的模块结构图,如图10所示,输入输出处理装置10包括处理模块101。
其中,处理模块101用于确定至少一个输入输出IO请求所对应的逻辑地址;以及,
根据IO请求所对应的逻辑地址,确定模拟映射缓存信息,其中,该模拟映射缓存信息与缓存控制器的映射缓存中所保存的信息保持一致;以及,
根据上述模拟映射缓存信息,确定IO请求的请求类型,IO请求的请求类型包括可命中IO请求以及不可命中IO请求,其中,可命中IO请求为可在闪存控制器的映射缓存中命中的IO请求,不可命中IO请求为不能在闪存控制器的映射缓存中命中的IO请求;以及,
根据IO请求的请求类型以及预设的调度优先级进行IO请求调度,其中,在预设的调度优先级中,可命中IO请求的优先级高于不可命中IO请求的优先级。
进一步地,处理模块101具体用于:
根据IO请求所对应的逻辑地址,对闪存控制器中的映射缓存处理过程进行模拟,确定模拟映射缓存信息。
进一步地,处理模块101具体还用于:
在上述模拟映射缓存信息中存在IO请求对应的逻辑地址时,确定IO请求的请求类型为可命中IO请求;以及,
在上述模拟映射缓存信息中不存在IO请求对应的逻辑地址时,确定IO请的请求类型为不可命中IO请求。
进一步地,处理模块101具体还用于:
对请求类型为可命中IO请求的IO请求进行调度;以及,
按照IO请求对应的逻辑地址,将请求类型为不可命中IO请求的IO请求划分为至少一个IO请求组;以及,
按照上述至少一个IO请求组对请求类型为不可命中IO请求的IO请求进行调度。
进一步地,处理模块101具体还用于:
将所述IO请求组中的首个IO请求,以及除该首个IO请求外的其余IO请求所对应的逻辑地址发送给闪存控制器,以使闪存控制器根据该首个IO请求外的其余IO请求所对应的逻辑地址确定地址映射信息,以及将该地址映射信息写入闪存控制器的映射缓存中;以及,
接收缓存控制器的响应;以及,
根据缓存控制器的响应,将IO请求组中除上述首个IO请求外的其余IO请求发送给闪存控制器。
另一实施例中,上述IO请求组中的IO请求所对应的逻辑地址属于同一预设地址段。
进一步地,处理模块101具体还用于:
判断请求类型为不可命中IO请求的IO请求的调度等待时间是否达到预设时间,若是,则调度该请求类型为不可命中IO请求的所述IO请求。
另一实施例中,上述模拟映射缓存信息中包括逻辑地址信息。
本申请还提供一种终端,包括了前述各实施例所述的输入输出处理装置。
图11为本申请提供的一种终端实施例一的实体框图,如图11所示,该终端包括:存储器1101和处理器1102。
存储器1101用于存储程序指令,处理器1102用于调用存储器1101中的程序指令,实现上述各方法实施例中的功能。
Claims (15)
1.一种输入输出处理方法,其特征在于,包括:
确定至少一个输入输出IO请求所对应的逻辑地址;
根据所述IO请求所对应的逻辑地址,对闪存控制器中的映射缓存处理过程进行模拟,确定模拟映射缓存信息,其中,所述模拟映射缓存信息中的逻辑地址与缓存控制器的映射缓存中所保存的逻辑地址相同;
根据所述模拟映射缓存信息,确定所述IO请求的请求类型,所述IO请求的请求类型包括可命中IO请求以及不可命中IO请求,其中,所述可命中IO请求为可在闪存控制器的映射缓存中命中的IO请求,所述不可命中IO请求为不能在闪存控制器的映射缓存中命中的IO请求;
根据所述IO请求的请求类型以及预设的调度优先级进行IO请求调度,其中,在所述预设的调度优先级中,所述可命中IO请求的优先级高于所述不可命中IO请求的优先级。
2.根据权利要求1所述的方法,其特征在于,所述根据所述模拟映射缓存信息,确定所述IO请求的请求类型,包括:
若所述模拟映射缓存信息中存在所述IO请求对应的逻辑地址,则确定所述IO请求的请求类型为可命中IO请求;或者,
若所述模拟映射缓存信息中不存在所述IO请求对应的逻辑地址,则确定所述IO请求的请求类型为不可命中IO请求。
3.根据权利要求1所述的方法,其特征在于,所述根据所述IO请求的请求类型进行IO请求调度,包括:
对请求类型为可命中IO请求的所述IO请求进行调度;
按照所述IO请求对应的逻辑地址,将请求类型为不可命中IO请求的所述IO请求划分为至少一个IO请求组;
按照所述至少一个IO请求组对请求类型为不可命中IO请求的所述IO请求进行调度。
4.根据权利要求3所述的方法,其特征在于,所述按照所述至少一个IO请求组对请求类型为不可命中IO请求的所述IO请求进行调度,包括:
将所述IO请求组中的首个IO请求,以及除所述首个IO请求外的其余IO请求所对应的逻辑地址发送给闪存控制器,以使所述闪存控制器根据所述首个IO请求外的其余IO请求所对应的逻辑地址确定地址映射信息,以及将所述地址映射信息写入所述闪存控制器的映射缓存中;
接收所述缓存控制器的响应;
根据所述缓存控制器的响应,将所述IO请求组中除所述首个IO请求外的其余IO请求发送给所述闪存控制器。
5.根据权利要求3所述的方法,其特征在于,所述IO请求组中的IO请求所对应的逻辑地址属于同一预设地址段。
6.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
判断请求类型为不可命中IO请求的所述IO请求的调度等待时间是否达到预设时间,若是,则调度所述请求类型为不可命中IO请求的所述IO请求。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述模拟映射缓存信息中包括逻辑地址信息。
8.一种输入输出处理装置,其特征在于,包括:处理模块;
所述处理模块,用于确定至少一个输入输出IO请求所对应的逻辑地址;以及,
根据所述IO请求所对应的逻辑地址,对闪存控制器中的映射缓存处理过程进行模拟,确定模拟映射缓存信息,其中,所述模拟映射缓存信息中的逻辑地址与缓存控制器的映射缓存中所保存的逻辑地址相同;以及,
根据所述模拟映射缓存信息,确定所述IO请求的请求类型,所述IO请求的请求类型包括可命中IO请求以及不可命中IO请求,其中,所述可命中IO请求为可在闪存控制器的映射缓存中命中的IO请求,所述不可命中IO请求为不能在闪存控制器的映射缓存中命中的IO请求;以及,
根据所述IO请求的请求类型以及预设的调度优先级进行IO请求调度,其中,在所述预设的调度优先级中,所述可命中IO请求的优先级高于所述不可命中IO请求的优先级。
9.根据权利要求8所述的装置,其特征在于,所述处理模块具体还用于:
在所述模拟映射缓存信息中存在所述IO请求对应的逻辑地址时,确定所述IO请求的请求类型为可命中IO请求;以及,
在所述模拟映射缓存信息中不存在所述IO请求对应的逻辑地址时,确定所述IO请求的请求类型为不可命中IO请求。
10.根据权利要求8所述的装置,其特征在于,所述处理模块具体还用于:
对请求类型为可命中IO请求的所述IO请求进行调度;以及,
按照所述IO请求对应的逻辑地址,将请求类型为不可命中IO请求的所述IO请求划分为至少一个IO请求组;以及,
按照所述至少一个IO请求组对请求类型为不可命中IO请求的所述IO请求进行调度。
11.根据权利要求10所述的装置,其特征在于,所述处理模块具体还用于:
将所述IO请求组中的首个IO请求,以及除所述首个IO请求外的其余IO请求所对应的逻辑地址发送给闪存控制器,以使所述闪存控制器根据所述首个IO请求外的其余IO请求所对应的逻辑地址确定地址映射信息,以及将所述地址映射信息写入所述闪存控制器的映射缓存中;以及,
接收所述缓存控制器的响应;以及,
根据所述缓存控制器的响应,将所述IO请求组中除所述首个IO请求外的其余IO请求发送给所述闪存控制器。
12.根据权利要求10所述的装置,其特征在于,所述IO请求组中的IO请求所对应的逻辑地址属于同一预设地址段。
13.根据权利要求8-12任一项所述的装置,其特征在于,所述处理模块还用于:
判断请求类型为不可命中IO请求的所述IO请求的调度等待时间是否达到预设时间,若是,则调度所述请求类型为不可命中IO请求的所述IO请求。
14.根据权利要求8-12任一项所述的装置,其特征在于,所述模拟映射缓存信息中包括逻辑地址信息。
15.一种终端,其特征在于,包括如权利要求8-14任一项所述的输入输出处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710165078.2A CN106980577B (zh) | 2017-03-20 | 2017-03-20 | 输入输出处理方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710165078.2A CN106980577B (zh) | 2017-03-20 | 2017-03-20 | 输入输出处理方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106980577A CN106980577A (zh) | 2017-07-25 |
CN106980577B true CN106980577B (zh) | 2020-04-28 |
Family
ID=59338828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710165078.2A Active CN106980577B (zh) | 2017-03-20 | 2017-03-20 | 输入输出处理方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106980577B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11392495B2 (en) * | 2019-02-08 | 2022-07-19 | Hewlett Packard Enterprise Development Lp | Flat cache simulation |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1399743A (zh) * | 1999-11-05 | 2003-02-26 | 模拟装置公司 | 高速缓存系统和数字信号处理器结构 |
CN1652091A (zh) * | 2004-02-07 | 2005-08-10 | 华为技术有限公司 | 一种在数据存储系统中预取数据的方法 |
CN1797371A (zh) * | 2004-12-27 | 2006-07-05 | 英特尔公司 | 用于基于填充缓冲器命中来预取的装置和方法 |
CN103425600A (zh) * | 2013-08-23 | 2013-12-04 | 中国人民解放军国防科学技术大学 | 一种固态盘闪存转换层中的地址映射方法 |
CN103645859A (zh) * | 2013-11-19 | 2014-03-19 | 华中科技大学 | 一种虚拟ssd与ssd异构镜像的磁盘阵列缓存方法 |
CN105389270A (zh) * | 2015-12-22 | 2016-03-09 | 上海爱信诺航芯电子科技有限公司 | 一种提高片上系统指令缓存命中率的系统及其方法 |
CN105468305A (zh) * | 2015-12-09 | 2016-04-06 | 浪潮(北京)电子信息产业有限公司 | 一种数据缓存方法、装置和系统 |
CN106021159A (zh) * | 2016-05-12 | 2016-10-12 | 北京匡恩网络科技有限责任公司 | 大容量固态硬盘逻辑地址到物理地址映射方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529724B2 (en) * | 2012-07-06 | 2016-12-27 | Seagate Technology Llc | Layered architecture for hybrid controller |
US9477591B2 (en) * | 2012-07-06 | 2016-10-25 | Seagate Technology Llc | Memory access requests in hybrid memory system |
US9396128B2 (en) * | 2013-06-13 | 2016-07-19 | Samsung Electronics Co., Ltd. | System and method for dynamic allocation of unified cache to one or more logical units |
-
2017
- 2017-03-20 CN CN201710165078.2A patent/CN106980577B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1399743A (zh) * | 1999-11-05 | 2003-02-26 | 模拟装置公司 | 高速缓存系统和数字信号处理器结构 |
CN1652091A (zh) * | 2004-02-07 | 2005-08-10 | 华为技术有限公司 | 一种在数据存储系统中预取数据的方法 |
CN1797371A (zh) * | 2004-12-27 | 2006-07-05 | 英特尔公司 | 用于基于填充缓冲器命中来预取的装置和方法 |
CN103425600A (zh) * | 2013-08-23 | 2013-12-04 | 中国人民解放军国防科学技术大学 | 一种固态盘闪存转换层中的地址映射方法 |
CN103645859A (zh) * | 2013-11-19 | 2014-03-19 | 华中科技大学 | 一种虚拟ssd与ssd异构镜像的磁盘阵列缓存方法 |
CN105468305A (zh) * | 2015-12-09 | 2016-04-06 | 浪潮(北京)电子信息产业有限公司 | 一种数据缓存方法、装置和系统 |
CN105389270A (zh) * | 2015-12-22 | 2016-03-09 | 上海爱信诺航芯电子科技有限公司 | 一种提高片上系统指令缓存命中率的系统及其方法 |
CN106021159A (zh) * | 2016-05-12 | 2016-10-12 | 北京匡恩网络科技有限责任公司 | 大容量固态硬盘逻辑地址到物理地址映射方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106980577A (zh) | 2017-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11620255B2 (en) | Time sensitive networking device | |
KR101688983B1 (ko) | 멀티-코어 프로세서용 멀티스레드 애플리케이션-인지 메모리 스케줄링 기법 | |
CN108958157B (zh) | 控制程序控制调度方法、装置、计算机设备以及存储介质 | |
US8260996B2 (en) | Interrupt optimization for multiprocessors | |
CN110532205B (zh) | 数据传输方法、装置、计算机设备和计算机可读存储介质 | |
US20100274879A1 (en) | Dynamic Scheduling Interrupt Controller For Multiprocessors | |
JP2008507034A (ja) | 下位ポートカウントメモリーを用いたマルチポートメモリーのシミュレート | |
CN107436809A (zh) | 数据处理器 | |
US10037225B2 (en) | Method and system for scheduling computing | |
CN113704301B (zh) | 异构计算平台的数据处理方法、装置、系统、设备及介质 | |
CN106681660B (zh) | Io调度方法及io调度装置 | |
US10042659B1 (en) | Caching virtual contexts for sharing of physical instances of a hardware resource | |
CN115048142A (zh) | 缓存访问命令处理系统、方法、装置、设备和存储介质 | |
CN104281668A (zh) | 一种数据处理方法 | |
CN106980577B (zh) | 输入输出处理方法、装置及终端 | |
US20200371827A1 (en) | Method, Apparatus, Device and Medium for Processing Data | |
CN114186693A (zh) | 一种量子操作系统的调度方法、系统、装置及计算机介质 | |
CN117742793A (zh) | 数据缓存指令的指令合并电路、方法及芯片 | |
EP2689325A1 (en) | Processor system with predicate register, computer system, method for managing predicates and computer program product | |
CN102799431B (zh) | 图元预处理和处理方法、图形处理方法及其处理器、装置 | |
CN109101456B (zh) | 一种仿真ssd中的数据交互通信方法、装置及终端 | |
CN112035056B (zh) | 一种基于多计算单元的并行ram访问设备及访问方法 | |
CN102360369B (zh) | 在用户空间文件系统上实现聚合写文件脏页的方法和装置 | |
EP3588319A3 (en) | Memory module | |
CN116991600B (zh) | 图形调用指令的处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |