CN109697032B - 物理地址感知的固态盘请求调度方法及装置 - Google Patents

物理地址感知的固态盘请求调度方法及装置 Download PDF

Info

Publication number
CN109697032B
CN109697032B CN201811554794.0A CN201811554794A CN109697032B CN 109697032 B CN109697032 B CN 109697032B CN 201811554794 A CN201811554794 A CN 201811554794A CN 109697032 B CN109697032 B CN 109697032B
Authority
CN
China
Prior art keywords
flash memory
request
pfrg
parallel
flash
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
Application number
CN201811554794.0A
Other languages
English (en)
Other versions
CN109697032A (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201811554794.0A priority Critical patent/CN109697032B/zh
Publication of CN109697032A publication Critical patent/CN109697032A/zh
Application granted granted Critical
Publication of CN109697032B publication Critical patent/CN109697032B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种物理地址感知的固态盘请求调度方法及装置,本发明将I/O请求调度与固态盘闪存转换层协同设计,充分利用闪存转换层中的地址转换信息将I/O请求队列中可并行执行的闪存请求与冲突访问请求分离,引入可并行闪存请求组PFRG(Parallelizable Flash Request Group)对I/O请求队列重新组织,对PFRG队列采用最大并行密度优先调度方法,提升负载请求对固态盘内部并行性的利用率,从而提高固态盘的整体性能。

Description

物理地址感知的固态盘请求调度方法及装置
技术领域
本发明涉及闪存固态盘存储技术领域,具体涉及一种物理地址感知的固态盘请求调度方法及装置,用于实现固态盘设备级请求队列的组织和调度。
背景技术
闪存固态盘内部主要分为前端和后端两部分,如图1所示。固态盘的前端主要包含主机接口逻辑(Host Interface Logic)、DRAM缓存单元、闪存芯片控制器(Flash ChipController)、闪存转换层(Flash Translation Layer)等模块。
主机接口逻辑实现了固态盘与主机之间进行通信的协议,例如传统的AHCI协议和支持多队列的NVMe协议等。DRAM缓存单元用来缓存应用程序数据和闪存管理所需要的数据结构等。闪存芯片控制器负责将指令和数据发送到后端闪存芯片中,或者将数据从后端闪存芯片中读出。闪存转换层负责处理固态盘的I/O请求,并实现了一系列面向后端闪存的管理算法,如地址映射、垃圾回收、磨损均衡、坏块管理等。
固态盘后端呈层次式结构,如图1所示。这种层次式结构使得固态盘可以通过通道级、芯片级、晶圆级、分组级并行性并行执行访问固态盘的I/O请求。
固态盘后端的通道(Channel)通过闪存芯片控制器与固态盘前端相连接。每个通道可以独立工作,不同通道可以完全并发的进行命令、地址、数据的传输。
每个通道上连接了多个闪存芯片(Chip)。连接在同一通道上的闪存芯片可以相互独立工作,但是需要共享所连接的通道进行命令、地址、数据的传输。
每个闪存芯片内部集成了多个晶圆(Die)。同一闪存芯片内的每个晶圆拥有独立的R/B工作状态信号线,可以相互独立的执行闪存读写指令,但是需要共享闪存芯片与通道之间进行信息传输的接口电路。
每个晶圆内部集成了多个分组(Plane)。同一晶圆内的多个分组可以并行的将数据从各自的目标页中读取到寄存器中,或者将各自寄存器中的数据并行的写入到目标页中。但是这种多分组读和写操作不仅要求并行执行的请求具有相同的读/写类型,还要求目标地址具有相同的块内偏移。
每个分组内部包含了多个块(Block),每个块内包含了多个页(Page)。页是闪存芯片的最小读写单位,块是闪存芯片的最小擦除单元。闪存芯片中每个页在被写入数据后,在其所在块被擦除之前不能被写入新的数据。闪存芯片内的每个块的可擦除次数是一定的,当达到最大可擦除次数后会被标记为坏块并结束其使用寿命。
I/O请求调度策略通过重新调整I/O请求访问存储器的顺序,可以有效降低I/O请求的平均访问延迟。机械磁盘的流行使得I/O请求调度方法主要以减小机械磁头产生的寻道延迟和旋转延迟为目标。基于半导体技术的固态盘没有移动的磁头和旋转的盘片,因此传统的I/O调度算法并不能有效提升固态盘的性能。固态盘闪存转换层中的地址映射机制实现对数据的异地更新,以降低闪存重写前擦除特性对固态盘性能的影响。固态盘内逻辑地址连续的闪存请求所访问的固态盘内物理页地址是由地址映射算法决定的,对操作系统以及固态盘主机接口逻辑都是不可见的。在物理页地址信息缺失的情况下,I/O调度算法很难通过对I/O请求重新排序实现对固态盘内部多级并行性的高效利用。
高效利用固态盘内的多级并行性是提升固态盘性能的关键,如何实现有效提升固态盘内并行性利用率的请求调度,已经成为一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题是:针对现有技术的上述问题,提供一种物理地址感知的固态盘请求调度方法及装置,本发明能够提升负载请求对固态盘内部并行性的利用率,从而提高固态盘的整体性能。
为了解决上述技术问题,本发明采用的技术方案为:
一种物理地址感知的固态盘请求调度方法,实施步骤包括:
1)预先为固态盘的每个闪存芯片设置用于存储可并行闪存请求组PFRG的读先进先出队列R-FIFO、写先进先出队列W-FIFO、读高并行密度优先队列R-HPD、写高并行密度优先队列W-HPD四个队列;当收到I/O请求时跳转执行步骤2);
2)判断接收I/O请求的类型,如果I/O请求为写请求,则跳转执行步骤3);如果I/O请求为读请求,则跳转执行步骤6);
3)将写请求切分为写闪存请求;
4)如果所有写闪存请求分配完毕则跳转执行步骤9);否则,跳转执行步骤4);
5)获取一个尚未分配的写闪存请求作为当前写闪存请求FR,根据当前写闪存请求FR的闪存芯片将当前写闪存请求FR分配到写高并行密度优先队列W-HPD和写先进先出队列W-FIFO的可并行闪存请求组PFRG中,且对写高并行密度优先队列W-HPD中的项目进行重新排列,跳转执行步骤4);
6)将读请求切分为读闪存请求;
7)如果所有读闪存请求分配完毕则跳转执行步骤9);否则,跳转执行步骤8);
8)获取一个尚未分配的读闪存请求作为当前读闪存请求FR,根据当前读闪存请求FR的闪存芯片将当前读闪存请求FR分配到读高并行密度优先队列R-HPD和读先进先出队列R-FIFO的可并行闪存请求组PFRG中,且对读高并行密度优先队列R-HPD中的项目进行重新排列,跳转执行步骤7);
9)针对固态盘每个闪存芯片的读先进先出队列R-FIFO、写先进先出队列W-FIFO、读高并行密度优先队列R-HPD、写高并行密度优先队列W-HPD四个队列,将包含在同一个可并行闪存请求组PFRG中的闪存请求封装成一个可完全并行访问闪存芯片内部资源的闪存事务进行调度。
可选地,步骤1)中可并行闪存请求组PFRG中每一个项目包括请求类型RT、冲突向量CV、并行密度PD、时间戳TS四个参数属性,其中请求类型RT为该可并行闪存请求组PFRG的读写类型,冲突向量CV为已分配到该可并行闪存请求组PFRG中的闪存请求将会对闪存芯片内部资源产生的访问情况,并行密度PD为分配到该可并行闪存请求组PFRG中的闪存请求数目,时间戳TS为首个分配到该可并行闪存请求组PFRG的闪存请求的到达时间。
可选地,所述读先进先出队列R-FIFO、读高并行密度优先队列R-HPD两个队列是通过指针在同一组请求类型RT为读请求的可并行闪存请求组PFRG上建立的,在插入一个可并行闪存请求组PFRG到读高并行密度优先队列R-HPD中时,通过另一组指针同时将该可并行闪存请求组PFRG链接在读先进先出队列R-FIFO中,当从读高并行密度优先队列R-HPD中删除一个可并行闪存请求组PFRG时,该可并行闪存请求组PFRG也同时会从读先进先出队列R-FIFO中删除;所述写先进先出队列W-FIFO、写高并行密度优先队列W-HPD两个队列是通过指针在同一组请求类型RT为写请求的可并行闪存请求组PFRG上建立的,在插入一个可并行闪存请求组PFRG到写高并行密度优先队列W-HPD中时,通过另一组指针同时将该可并行闪存请求组PFRG链接在写先进先出队列W-FIFO中,当从写高并行密度优先队列W-HPD中删除一个可并行闪存请求组PFRG时,该可并行闪存请求组PFRG也同时会从写先进先出队列W-FIFO中删除。
可选地,步骤5)中根据当前写闪存请求FR的闪存芯片将当前写闪存请求FR分配到写高并行密度优先队列W-HPD和写先进先出队列W-FIFO的可并行闪存请求组PFRG中的详细步骤包括:
5.1)针对当前写闪存请求FR,根据闪存转换层的地址映射表获取当前写闪存请求FR所要访问的物理页地址FR.PPN,根据物理页地址FR.PPN生成当前写闪存请求FR的位置向量FR.LV,当前写闪存请求FR的位置向量FR.LV,所述位置向量FR.LV包含闪存芯片号、晶圆位置标识、分组位置标识三部分;
5.2)根据当前写闪存请求FR的位置向量FR.LV,确定当前写闪存请求FR的闪存芯片,并确定闪存芯片对应的写高并行密度优先队列W-HPD和写先进先出队列W-FIFO;
5.3)将当前写闪存请求FR分配到写高并行密度优先队列W-HPD和写先进先出队列W-FIFO的可并行闪存请求组PFRG中。
可选地,步骤5.3)的详细步骤包括:
5.3.1)取写高并行密度优先队列W-HPD的第一个可并行闪存请求组PFRG为当前可并行闪存请求组PFRG;
5.3.2)判断当前可并行闪存请求组PFRG的晶圆标识位CVdie、当前写闪存请求FR的晶圆标识位CVdie的与逻辑结果是否为0,如果与逻辑结果为0,则跳转执行步骤5.3.7);否则,跳转执行下一步;
5.3.3)判断当前可并行闪存请求组PFRG的分组标识位CVplane、当前写闪存请求FR的分组标识位CVplane的与逻辑结果是否为0,如果为0则跳转执行下一步;否则,跳转执行步骤5.3.5);
5.3.4)判断当前可并行闪存请求组PFRG、当前写闪存请求FR是否具有相同的块内偏移地址,如果具有相同的块内偏移地址,则跳转执行步骤5.3.7);否则,跳转执行下一步;
5.3.5)判断当前可并行闪存请求组PFRG是否为写高并行密度优先队列W-HPD中最后一个可并行闪存请求组PFRG,如果是则在写高并行密度优先队列W-HPD中新建一个可并行闪存请求组PFRG,跳转执行步骤5.3.8);否则,跳转执行下一步;
5.3.6)将写高并行密度优先队列W-HPD中的下一个可并行闪存请求组PFRG作为当前可并行闪存请求组PFRG和当前写闪存请求FR进行冲突检测,跳转执行步骤5.3.2);
5.3.7)将当前写闪存请求FR分配到写高并行密度优先队列W-HPD中当前可并行闪存请求组PFRG中,不改变现有的写先进先出队列W-FIFO,跳转执行步骤5.3.9);
5.3.8)将当前写闪存请求FR分配到写高并行密度优先队列W-HPD中新创建的可并行闪存请求组PFRG中,记录当前时间到新创建的可并行闪存请求组PFRG的时间戳TS中,并将新创建的可并行闪存请求组PFRG链接到写先进先出队列W-FIFO的末尾;
5.3.9)将当前写闪存请求FR被分配的可并行闪存请求组PFRG的并行密度PD加1,并更新该可并行闪存请求组PFRG的冲突向量CV;
5.3.10)结束。
可选地,步骤8)中根据当前读闪存请求FR的闪存芯片将当前读闪存请求FR分配到读高并行密度优先队列R-HPD和读先进先出队列R-FIFO的可并行闪存请求组PFRG中的详细步骤包括:
8.1)针对当前读闪存请求FR,根据闪存转换层的地址映射表获取当前读闪存请求FR所要访问的物理页地址FR.PPN,根据物理页地址FR.PPN生成当前读闪存请求FR的位置向量FR.LV,当前读闪存请求FR的位置向量FR.LV,所述位置向量FR.LV包含闪存芯片号、晶圆位置标识、分组位置标识三部分;
8.2)根据当前读闪存请求FR的位置向量FR.LV,确定当前读闪存请求FR的闪存芯片,并确定闪存芯片对应的读高并行密度优先队列R-HPD和读先进先出队列R-FIFO;
8.3)将当前读闪存请求FR分配到读高并行密度优先队列R-HPD和读先进先出队列R-FIFO的可并行闪存请求组PFRG中。
可选地,步骤8.3)的详细步骤包括:
8.3.1)取读高并行密度优先队列R-HPD的第一个可并行闪存请求组PFRG为当前可并行闪存请求组PFRG;
8.3.2)判断当前可并行闪存请求组PFRG的晶圆标识位CVdie、当前读闪存请求FR的晶圆标识位CVdie的与逻辑结果是否为0,如果与逻辑结果为0,则跳转执行步骤8.3.7);否则,跳转执行下一步;
8.3.3)判断当前可并行闪存请求组PFRG的分组标识位CVplane、当前读闪存请求FR的分组标识位CVplane的与逻辑结果是否为0,如果为0则跳转执行下一步;否则,跳转执行步骤8.3.5);
8.3.4)判断当前可并行闪存请求组PFRG、当前读闪存请求FR是否具有相同的块内偏移地址,如果具有相同的块内偏移地址,则跳转执行步骤8.3.7);否则,跳转执行下一步;
8.3.5)判断当前可并行闪存请求组PFRG是否为读高并行密度优先队列R-HPD中最后一个可并行闪存请求组PFRG,如果是则在读高并行密度优先队列R-HPD中新建一个可并行闪存请求组PFRG,跳转执行步骤8.3.8);否则,跳转执行下一步;
8.3.6)将读高并行密度优先队列R-HPD中的下一个可并行闪存请求组PFRG作为当前可并行闪存请求组PFRG和当前读闪存请求FR进行冲突检测,跳转执行步骤8.3.2);
8.3.7)将当前读闪存请求FR分配到读高并行密度优先队列W-HPD中当前可并行闪存请求组PFRG中,不改变现有的读先进先出队列R-FIFO,跳转执行步骤8.3.9);
8.3.8)将当前读闪存请求FR分配到读高并行密度优先队列W-HPD中新创建的可并行闪存请求组PFRG中,记录当前时间到新创建的可并行闪存请求组PFRG的时间戳TS中,并将新创建的可并行闪存请求组PFRG链接到读先进先出队列R-FIFO的末尾;
8.3.9)将当前读闪存请求FR被分配的可并行闪存请求组PFRG的并行密度PD加1,并更新该可并行闪存请求组PFRG的冲突向量CV;
8.3.10)结束。
可选地,步骤9)的详细步骤包括:
9.1)针对固态盘每个闪存芯片的读先进先出队列R-FIFO、写先进先出队列W-FIFO、读高并行密度优先队列R-HPD、写高并行密度优先队列W-HPD四个队列,判断读先进先出队列R-FIFO中是否有可并行闪存请求组PFRG等待超时,如果有则执行读先进先出队列R-FIFO中的首个可并行闪存请求组PFRG,跳转执行步骤9.1);否则跳转执行下一步;
9.2)判断写先进先出队列W-FIFO中是否有可并行闪存请求组PFRG等待超时,如果有则执行写先进先出队列W-FIFO中的首个可并行闪存请求组PFRG,跳转执行步骤9.1);否则跳转执行下一步;
9.3)判断读高并行密度优先队列R-HPD是否为空,如果读高并行密度优先队列R-HPD为空,则执行写高并行密度优先队列W-HPD中的首个可并行闪存请求组PFRG,跳转执行步骤9.1);否则跳转执行下一步;
9.4)执行读高并行密度优先队列R-HPD中的首个可并行闪存请求组PFRG,跳转执行步骤9.1)。
本发明还提供一种物理地址感知的固态盘请求调度装置,包括带有控制单元的闪存固态盘,所述控制单元被编程以执行本发明前述物理地址感知的固态盘请求调度方法的步骤。
和现有技术学相比,本发明具有下述优点:本发明将I/O请求调度与固态盘闪存转换层协同设计,充分利用闪存转换层中的地址转换信息将I/O请求队列中可并行执行的闪存请求与冲突访问请求分离,引入可并行闪存请求组PFRG(Parallelizable FlashRequest Group)对I/O请求队列重新组织,对PFRG队列采用最大并行密度优先调度方法,提升负载请求对固态盘内部并行性的利用率,从而提高固态盘的整体性能。
附图说明
图1为现有闪存固态盘内部结构示意图。
图2为本发明实施例方法的基本流程示意图。
图3为本发明实施例中PFRG.CV和FR.LV设置示意图。
图4为本发明实施例中FR与PFRG的冲突检测流程示意图。
图5为本发明实施例中PFRG调度的流程示意图。
具体实施方式
如图2所示,本实施例物理地址感知的固态盘请求调度方法的实施步骤包括:
1)预先为固态盘的每个闪存芯片设置用于存储可并行闪存请求组PFRG的读先进先出队列R-FIFO、写先进先出队列W-FIFO、读高并行密度优先队列R-HPD、写高并行密度优先队列W-HPD四个队列;当收到I/O请求时跳转执行步骤2);
2)判断接收I/O请求的类型,如果I/O请求为写请求,则跳转执行步骤3);如果I/O请求为读请求,则跳转执行步骤6);
3)将写请求切分为写闪存请求;
4)如果所有写闪存请求分配完毕则跳转执行步骤9);否则,跳转执行步骤4);
5)获取一个尚未分配的写闪存请求作为当前写闪存请求FR,根据当前写闪存请求FR的闪存芯片将当前写闪存请求FR分配到写高并行密度优先队列W-HPD和写先进先出队列W-FIFO的可并行闪存请求组PFRG中,且对写高并行密度优先队列W-HPD中的项目进行重新排列,跳转执行步骤4);
6)将读请求切分为读闪存请求;
7)如果所有读闪存请求分配完毕则跳转执行步骤9);否则,跳转执行步骤8);
8)获取一个尚未分配的读闪存请求作为当前读闪存请求FR,根据当前读闪存请求FR的闪存芯片将当前读闪存请求FR分配到读高并行密度优先队列R-HPD和读先进先出队列R-FIFO的可并行闪存请求组PFRG中,且对读高并行密度优先队列R-HPD中的项目进行重新排列,跳转执行步骤7);
9)针对固态盘每个闪存芯片的读先进先出队列R-FIFO、写先进先出队列W-FIFO、读高并行密度优先队列R-HPD、写高并行密度优先队列W-HPD四个队列,将包含在同一个可并行闪存请求组PFRG中的闪存请求封装成一个可完全并行访问闪存芯片内部资源的闪存事务进行调度。步骤9)即为对PFRG队列采用最大并行密度优先调度方法,用于提升负载请求对固态盘内部并行性的利用率,从而提高固态盘的整体性能。
本实施例中引入可并行闪存请求组PFRG(Parallelizable Flash RequestGroup)对固态盘设备级请求队列进行重新组织。可并行闪存请求组PFRG是由一组可以并行访问同一闪存芯片内部资源的多个闪存请求组成的闪存请求组,包含在同一个PFRG的闪存请求可以被闪存控制器封装成一个可完全并行访问闪存芯片内部资源的闪存事务(Transaction)。
本实施例中,步骤1)中可并行闪存请求组PFRG中每一个项目包括请求类型RT(Request Type)、冲突向量CV(Conflict Vector)、并行密度PD(Parallelism Density)、时间戳TS(Timestamp)四个参数属性,其中:
1、请求类型RT为该可并行闪存请求组PFRG的读写类型,用来区分一个可并行闪存请求组PFRG是读闪存请求组还是写闪存请求组,每个可并行闪存请求组PFRG内部的所有闪存请求必须具有相同的读/写请求类型。
2、冲突向量CV为已分配到该可并行闪存请求组PFRG中的闪存请求将会对闪存芯片内部资源产生的访问情况,是判断一个新到达的闪存请求是否会与该PFRG中闪存请求产生访问冲突的主要依据。
3、并行密度PD为分配到该可并行闪存请求组PFRG中的闪存请求数目。并行密度PD是衡量PFRG对闪存芯片内部并行性利用率的主要指标。
4、时间戳TS为首个分配到该可并行闪存请求组PFRG的闪存请求的到达时间,用来判断一个PFRG在队列中是否已经超过其最长等待时间。
本实施例中为每个闪存芯片设置四个PFRG队列,即读先进先出队列R-FIFO(ReadFirst In First Out)、写先进先出队列W-FIFO、读高并行密度优先队列R-HPD(HighParallelism Density)、写高并行密度优先队列W-HPD。
R-FIFO队列和W-FIFO队列分别记录读PFRG和写PFRG创建的先后顺序,用来防止最先到达的闪存请求在调度过程中被饿死。R-HPD队列和W-HPD队列分别按照并行密度由高到低的顺序对读PFRG队列和写PFRG队列中的PFRG进行排序。对于来自读请求的FR,将会被分配到R-HPD和R-FIFO队列中的PFRG中。对于来自写请求的FR,则会被分配到W-HPD和W-FIFO队列中的PFRG中。本实施例中,读先进先出队列R-FIFO、读高并行密度优先队列R-HPD两个队列是通过指针在同一组请求类型RT为读请求的可并行闪存请求组PFRG上建立的,在插入一个可并行闪存请求组PFRG到读高并行密度优先队列R-HPD中时,通过另一组指针同时将该可并行闪存请求组PFRG链接在读先进先出队列R-FIFO中,当从读高并行密度优先队列R-HPD中删除一个可并行闪存请求组PFRG时,该可并行闪存请求组PFRG也同时会从读先进先出队列R-FIFO中删除;所述写先进先出队列W-FIFO、写高并行密度优先队列W-HPD两个队列是通过指针在同一组请求类型RT为写请求的可并行闪存请求组PFRG上建立的,在插入一个可并行闪存请求组PFRG到写高并行密度优先队列W-HPD中时,通过另一组指针同时将该可并行闪存请求组PFRG链接在写先进先出队列W-FIFO中,当从写高并行密度优先队列W-HPD中删除一个可并行闪存请求组PFRG时,该可并行闪存请求组PFRG也同时会从写先进先出队列W-FIFO中删除。
一个新到达的I/O请求首先被切分为与闪存页大小相同的闪存请求,写请求被切分为写闪存请求,读请求被切分为读闪存请求。对于一个闪存请求FR,根据闪存转换层的地址映射表获取FR所要访问的物理页地址FR.PPN,进而为闪存请求FR(写闪存请求或读闪存请求)生成位置向量FR.LV。位置向量FR.LV用来表示闪存请求FR需要访问的闪存内部资源,主要包含闪存芯片号、晶圆位置标识、分组位置标识三部分。闪存芯片号用来识别闪存请求FR所要访问的闪存芯片,进而找到闪存请求FR将要分配到的PFRG队列。晶圆位置标识和分组位置标识分别用来区分FR具体访问的晶圆和分组。对于采用了16颗闪存芯片的固态盘,如果每颗闪存芯片内部集成了4个晶圆,每个晶圆内部集成了4个分组,则每个可并行闪存请求组PFRG的CV和每个闪存请求FR的LV的设置如图3所示。如图3所示,闪存请求FR(写闪存请求或读闪存请求)的位置向量LV(FR.LV)的最小长度为12位,其中前4位用来表示这个闪存请求所指向的闪存芯片的芯片号,中间4位用来标识该闪存请求将要访问的晶圆,最后4位用来标识该闪存请求将要访问的晶圆中的分组;可并行闪存请求组PFRG的冲突向量CV(PFRG.CV)的最小长度为24位,其中前4位表示该PFRG所指向的闪存芯片的芯片号,后续4位用来标识该PFRG中闪存请求将要访问的晶圆,最后16位用来标识该PFRG中所有闪存请求将要访问的各个晶圆中的分组。
本实施例中,步骤5)中根据当前写闪存请求FR的闪存芯片将当前写闪存请求FR分配到写高并行密度优先队列W-HPD和写先进先出队列W-FIFO的可并行闪存请求组PFRG中的详细步骤包括:
5.1)针对当前写闪存请求FR,根据闪存转换层的地址映射表获取当前写闪存请求FR所要访问的物理页地址FR.PPN,根据物理页地址FR.PPN生成当前写闪存请求FR的位置向量FR.LV,当前写闪存请求FR的位置向量FR.LV,所述位置向量FR.LV包含闪存芯片号、晶圆位置标识、分组位置标识三部分;
5.2)根据当前写闪存请求FR的位置向量FR.LV,确定当前写闪存请求FR的闪存芯片,并确定闪存芯片对应的写高并行密度优先队列W-HPD和写先进先出队列W-FIFO;
5.3)将当前写闪存请求FR分配到写高并行密度优先队列W-HPD和写先进先出队列W-FIFO的可并行闪存请求组PFRG中。
本实施例中,步骤5.3)的详细步骤包括:
5.3.1)取写高并行密度优先队列W-HPD的第一个可并行闪存请求组PFRG为当前可并行闪存请求组PFRG;
5.3.2)判断当前可并行闪存请求组PFRG的晶圆标识位CVdie、当前写闪存请求FR的晶圆标识位CVdie的与逻辑结果是否为0,如果与逻辑结果为0,则跳转执行步骤5.3.7);否则,跳转执行下一步;
5.3.3)判断当前可并行闪存请求组PFRG的分组标识位CVplane、当前写闪存请求FR的分组标识位CVplane的与逻辑结果是否为0,如果为0则跳转执行下一步;否则,跳转执行步骤5.3.5);
5.3.4)判断当前可并行闪存请求组PFRG、当前写闪存请求FR是否具有相同的块内偏移地址,如果具有相同的块内偏移地址,则跳转执行步骤5.3.7);否则,跳转执行下一步;
5.3.5)判断当前可并行闪存请求组PFRG是否为写高并行密度优先队列W-HPD中最后一个可并行闪存请求组PFRG,如果是则在写高并行密度优先队列W-HPD中新建一个可并行闪存请求组PFRG,跳转执行步骤5.3.8);否则,跳转执行下一步;
5.3.6)将写高并行密度优先队列W-HPD中的下一个可并行闪存请求组PFRG作为当前可并行闪存请求组PFRG和当前写闪存请求FR进行冲突检测,跳转执行步骤5.3.2);
5.3.7)将当前写闪存请求FR分配到写高并行密度优先队列W-HPD中当前可并行闪存请求组PFRG中,不改变现有的写先进先出队列W-FIFO,跳转执行步骤5.3.9);
5.3.8)将当前写闪存请求FR分配到写高并行密度优先队列W-HPD中新创建的可并行闪存请求组PFRG中,记录当前时间到新创建的可并行闪存请求组PFRG的时间戳TS中,并将新创建的可并行闪存请求组PFRG链接到写先进先出队列W-FIFO的末尾;
5.3.9)将当前写闪存请求FR被分配的可并行闪存请求组PFRG的并行密度PD加1,并更新该可并行闪存请求组PFRG的冲突向量CV;
5.3.10)结束。
步骤5.3.9)中更新该可并行闪存请求组PFRG的冲突向量CV如下:
PFRG.CVdie =FR.LVdie|PFRG.CVdie
PFRG.CVplane(i)=FR.CVplane| PFRG.CVplane(i)
上式中,PFRG.CVdie表示可并行闪存请求组PFRG的冲突向量中的晶圆使用标识,FR.LVdie表示闪存请求FR的位置向量中的晶圆位置标识,PFRG.CVplane(i)表示可并行闪存请求组PFRG的冲突向量中的第i个晶圆中的分组使用标识,FR.CVplane表示闪存请求FR的位置向量中的分组位置标识,|表示或逻辑运算。
本实施例中,步骤8)中根据当前读闪存请求FR的闪存芯片将当前读闪存请求FR分配到读高并行密度优先队列R-HPD和读先进先出队列R-FIFO的可并行闪存请求组PFRG中的详细步骤包括:
8.1)针对当前读闪存请求FR,根据闪存转换层的地址映射表获取当前读闪存请求FR所要访问的物理页地址FR.PPN,根据物理页地址FR.PPN生成当前读闪存请求FR的位置向量FR.LV,当前读闪存请求FR的位置向量FR.LV,所述位置向量FR.LV包含闪存芯片号、晶圆位置标识、分组位置标识三部分;
8.2)根据当前读闪存请求FR的位置向量FR.LV,确定当前读闪存请求FR的闪存芯片,并确定闪存芯片对应的读高并行密度优先队列R-HPD和读先进先出队列R-FIFO;
8.3)将当前读闪存请求FR分配到读高并行密度优先队列R-HPD和读先进先出队列R-FIFO的可并行闪存请求组PFRG中。
如图4所示,步骤8.3)的详细步骤包括:
8.3.1)取读高并行密度优先队列R-HPD的第一个可并行闪存请求组PFRG为当前可并行闪存请求组PFRG;
8.3.2)判断当前可并行闪存请求组PFRG的晶圆标识位CVdie、当前读闪存请求FR的晶圆标识位CVdie的与逻辑结果是否为0,如果与逻辑结果为0,则跳转执行步骤8.3.7);否则,跳转执行下一步;
8.3.3)判断当前可并行闪存请求组PFRG的分组标识位CVplane、当前读闪存请求FR的分组标识位CVplane的与逻辑结果是否为0,如果为0则跳转执行下一步;否则,跳转执行步骤8.3.5);
8.3.4)判断当前可并行闪存请求组PFRG、当前读闪存请求FR是否具有相同的块内偏移地址,如果具有相同的块内偏移地址,则跳转执行步骤8.3.7);否则,跳转执行下一步;
8.3.5)判断当前可并行闪存请求组PFRG是否为读高并行密度优先队列R-HPD中最后一个可并行闪存请求组PFRG,如果是则在读高并行密度优先队列R-HPD中新建一个可并行闪存请求组PFRG,跳转执行步骤8.3.8);否则,跳转执行下一步;
8.3.6)将读高并行密度优先队列R-HPD中的下一个可并行闪存请求组PFRG作为当前可并行闪存请求组PFRG和当前读闪存请求FR进行冲突检测,跳转执行步骤8.3.2);
8.3.7)将当前读闪存请求FR分配到读高并行密度优先队列W-HPD中当前可并行闪存请求组PFRG中,不改变现有的读先进先出队列R-FIFO,跳转执行步骤8.3.9);
8.3.8)将当前读闪存请求FR分配到读高并行密度优先队列W-HPD中新创建的可并行闪存请求组PFRG中,记录当前时间到新创建的可并行闪存请求组PFRG的时间戳TS中,并将新创建的可并行闪存请求组PFRG链接到读先进先出队列R-FIFO的末尾;
8.3.9)将当前读闪存请求FR被分配的可并行闪存请求组PFRG的并行密度PD加1,并更新该可并行闪存请求组PFRG的冲突向量CV;
8.3.10)结束。
步骤8.3.9)中更新该可并行闪存请求组PFRG的冲突向量CV如下:
PFRG.CVdie =FR.LVdie|PFRG.CVdie
PFRG.CVplane(i)=FR.CVplane| PFRG.CVplane(i)
上式中,PFRG.CVdie表示可并行闪存请求组PFRG的冲突向量中的晶圆使用标识,FR.LVdie表示闪存请求FR的位置向量中的晶圆位置标识,PFRG.CVplane(i)表示可并行闪存请求组PFRG的冲突向量中的第i个晶圆中的分组使用标识,FR.CVplane表示闪存请求FR的位置向量中的分组位置标识,|表示或逻辑运算。
最终,I/O请求队列中的所有I/O请求被重新组织成以可并行闪存请求组PFRG为基本单元的PFRG队列中。在将I/O请求的各个闪存请求分配到可并行闪存请求组PFRG的过程中不会对固态盘闪存转换层中的地址映射决策产生任何干扰。
本实施例中,步骤9)的详细步骤包括:
9.1)针对固态盘每个闪存芯片的读先进先出队列R-FIFO、写先进先出队列W-FIFO、读高并行密度优先队列R-HPD、写高并行密度优先队列W-HPD四个队列,判断读先进先出队列R-FIFO中是否有可并行闪存请求组PFRG等待超时,如果有则执行读先进先出队列R-FIFO中的首个可并行闪存请求组PFRG,跳转执行步骤9.1);否则跳转执行下一步;
9.2)判断写先进先出队列W-FIFO中是否有可并行闪存请求组PFRG等待超时,如果有则执行写先进先出队列W-FIFO中的首个可并行闪存请求组PFRG,跳转执行步骤9.1);否则跳转执行下一步;
9.3)判断读高并行密度优先队列R-HPD是否为空,如果读高并行密度优先队列R-HPD为空,则执行写高并行密度优先队列W-HPD中的首个可并行闪存请求组PFRG,跳转执行步骤9.1);否则跳转执行下一步;
9.4)执行读高并行密度优先队列R-HPD中的首个可并行闪存请求组PFRG,跳转执行步骤9.1)。
如图5所示,在调度过程中,如果FIFO队列(读先进先出队列R-FIFO、写先进先出队列W-FIFO)中第一个PFRG的等待时间超过了其最大等待时间,则优先让该可并行闪存请求组PFRG去访问其对应的闪存内部资源,防止请求被饿死。参考现有操作系统中I/O调度器的参数设置,为读PFRG和写PFRG分别设置500ms和5000ms的最长等待时间。对读可并行闪存请求组PFRG设置更小的最长等待时间还可以消除读后写冲突,保证调度过程中的数据一致性。本实施例中优先调度读高并行密度优先队列R-HPD中的可并行闪存请求组PFRG去访问闪存芯片的内部资源。当读高并行密度优先队列R-HPD为空时,调度写高并行密度优先队列W-HPD中的可并行闪存请求组PFRG去访问闪存芯片的内部资源。采用读请求优先的调度策略可以避免读闪存请求被延迟更大的写闪存请求阻塞,造成读请求延迟被严重放大。在调度读高并行密度优先队列R-HPD或写高并行密度优先队列W-HPD中的可并行闪存请求组PFRG去访问闪存芯片的内部资源时,按照并行密度从高到低的顺序对队列中的可并行闪存请求组PFRG进行调度。采用高并行密度优先的调度策略可以使负载中的闪存请求尽可能多的利用闪存芯片内部并行性。此外,并行密度较小的可并行闪存请求组PFRG在等待的过程中可以吸收更多新到达的可并行闪存请求,进一步提高对闪存芯片内部并行性的利用。
本实施例还提供一种物理地址感知的固态盘请求调度装置,包括带有控制单元的闪存固态盘,该控制单元被编程以执行本实施例前述物理地址感知的固态盘请求调度方法的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (6)

1.一种物理地址感知的固态盘请求调度方法,其特征在于实施步骤包括:
1)预先为固态盘的每个闪存芯片设置用于存储可并行闪存请求组PFRG的读先进先出队列R-FIFO、写先进先出队列W-FIFO、读高并行密度优先队列R-HPD、写高并行密度优先队列W-HPD四个队列;当收到I/O请求时跳转执行步骤2);
2)判断接收I/O请求的类型,如果I/O请求为写请求,则跳转执行步骤3);如果I/O请求为读请求,则跳转执行步骤6);
3)将写请求切分为写闪存请求;
4)如果所有写闪存请求分配完毕则跳转执行步骤9);否则,跳转执行步骤4);
5)获取一个尚未分配的写闪存请求作为当前写闪存请求FR,根据当前写闪存请求FR的闪存芯片将当前写闪存请求FR分配到写高并行密度优先队列W-HPD和写先进先出队列W-FIFO的可并行闪存请求组PFRG中,且对写高并行密度优先队列W-HPD中的项目进行重新排列,跳转执行步骤4);
6)将读请求切分为读闪存请求;
7)如果所有读闪存请求分配完毕则跳转执行步骤9);否则,跳转执行步骤8);
8)获取一个尚未分配的读闪存请求作为当前读闪存请求FR,根据当前读闪存请求FR的闪存芯片将当前读闪存请求FR分配到读高并行密度优先队列R-HPD和读先进先出队列R-FIFO的可并行闪存请求组PFRG中,且对读高并行密度优先队列R-HPD中的项目进行重新排列,跳转执行步骤7);
9)针对固态盘每个闪存芯片的读先进先出队列R-FIFO、写先进先出队列W-FIFO、读高并行密度优先队列R-HPD、写高并行密度优先队列W-HPD四个队列,将包含在同一个可并行闪存请求组PFRG中的闪存请求封装成一个可完全并行访问闪存芯片内部资源的闪存事务进行调度;
步骤1)中可并行闪存请求组PFRG中每一个项目包括请求类型RT、冲突向量CV、并行密度PD、时间戳TS四个参数属性,其中请求类型RT为该可并行闪存请求组PFRG的读写类型,冲突向量CV为已分配到该可并行闪存请求组PFRG中的闪存请求将会对闪存芯片内部资源产生的访问情况,并行密度PD为分配到该可并行闪存请求组PFRG中的闪存请求数目,时间戳TS为首个分配到该可并行闪存请求组PFRG的闪存请求的到达时间;
步骤5)中根据当前写闪存请求FR的闪存芯片将当前写闪存请求FR分配到写高并行密度优先队列W-HPD和写先进先出队列W-FIFO的可并行闪存请求组PFRG中的详细步骤包括:
5.1)针对当前写闪存请求FR,根据闪存转换层的地址映射表获取当前写闪存请求FR所要访问的物理页地址FR.PPN,根据物理页地址FR.PPN生成当前写闪存请求FR的位置向量FR.LV,当前写闪存请求FR的位置向量FR.LV,所述位置向量FR.LV包含闪存芯片号、晶圆位置标识、分组位置标识三部分;
5.2)根据当前写闪存请求FR的位置向量FR.LV,确定当前写闪存请求FR的闪存芯片,并确定闪存芯片对应的写高并行密度优先队列W-HPD和写先进先出队列W-FIFO;
5.3)将当前写闪存请求FR分配到写高并行密度优先队列W-HPD和写先进先出队列W-FIFO的可并行闪存请求组PFRG中;步骤5.3)的详细步骤包括:
5.3.1)取写高并行密度优先队列W-HPD的第一个可并行闪存请求组PFRG为当前可并行闪存请求组PFRG;
5.3.2)判断当前可并行闪存请求组PFRG的晶圆标识位CVdie、当前写闪存请求FR的晶圆标识位CVdie的与逻辑结果是否为0,如果与逻辑结果为0,则跳转执行步骤5.3.7);否则,跳转执行下一步;
5.3.3)判断当前可并行闪存请求组PFRG的分组标识位CVplane、当前写闪存请求FR的分组标识位CVplane的与逻辑结果是否为0,如果为0则跳转执行下一步;否则,跳转执行步骤5.3.5);
5.3.4)判断当前可并行闪存请求组PFRG、当前写闪存请求FR是否具有相同的块内偏移地址,如果具有相同的块内偏移地址,则跳转执行步骤5.3.7);否则,跳转执行下一步;
5.3.5)判断当前可并行闪存请求组PFRG是否为写高并行密度优先队列W-HPD中最后一个可并行闪存请求组PFRG,如果是则在写高并行密度优先队列W-HPD中新建一个可并行闪存请求组PFRG,跳转执行步骤5.3.8);否则,跳转执行下一步;
5.3.6)将写高并行密度优先队列W-HPD中的下一个可并行闪存请求组PFRG作为当前可并行闪存请求组PFRG和当前写闪存请求FR进行冲突检测,跳转执行步骤5.3.2);
5.3.7)将当前写闪存请求FR分配到写高并行密度优先队列W-HPD中当前可并行闪存请求组PFRG中,不改变现有的写先进先出队列W-FIFO,跳转执行步骤5.3.9);
5.3.8)将当前写闪存请求FR分配到写高并行密度优先队列W-HPD中新创建的可并行闪存请求组PFRG中,记录当前时间到新创建的可并行闪存请求组PFRG的时间戳TS中,并将新创建的可并行闪存请求组PFRG链接到写先进先出队列W-FIFO的末尾;
5.3.9)将当前写闪存请求FR被分配的可并行闪存请求组PFRG的并行密度PD加1,并更新该可并行闪存请求组PFRG的冲突向量CV;
5.3.10)结束。
2.根据权利要求1所述的物理地址感知的固态盘请求调度方法,其特征在于,所述读先进先出队列R-FIFO、读高并行密度优先队列R-HPD两个队列是通过指针在同一组请求类型RT为读请求的可并行闪存请求组PFRG上建立的,在插入一个可并行闪存请求组PFRG到读高并行密度优先队列R-HPD中时,通过另一组指针同时将该可并行闪存请求组PFRG链接在读先进先出队列R-FIFO中,当从读高并行密度优先队列R-HPD中删除一个可并行闪存请求组PFRG时,该可并行闪存请求组PFRG也同时会从读先进先出队列R-FIFO中删除;所述写先进先出队列W-FIFO、写高并行密度优先队列W-HPD两个队列是通过指针在同一组请求类型RT为写请求的可并行闪存请求组PFRG上建立的,在插入一个可并行闪存请求组PFRG到写高并行密度优先队列W-HPD中时,通过另一组指针同时将该可并行闪存请求组PFRG链接在写先进先出队列W-FIFO中,当从写高并行密度优先队列W-HPD中删除一个可并行闪存请求组PFRG时,该可并行闪存请求组PFRG也同时会从写先进先出队列W-FIFO中删除。
3.根据权利要求1所述的物理地址感知的固态盘请求调度方法,其特征在于,步骤8)中根据当前读闪存请求FR的闪存芯片将当前读闪存请求FR分配到读高并行密度优先队列R-HPD和读先进先出队列R-FIFO的可并行闪存请求组PFRG中的详细步骤包括:
8.1)针对当前读闪存请求FR,根据闪存转换层的地址映射表获取当前读闪存请求FR所要访问的物理页地址FR.PPN,根据物理页地址FR.PPN生成当前读闪存请求FR的位置向量FR.LV,当前读闪存请求FR的位置向量FR.LV,所述位置向量FR.LV包含闪存芯片号、晶圆位置标识、分组位置标识三部分;
8.2)根据当前读闪存请求FR的位置向量FR.LV,确定当前读闪存请求FR的闪存芯片,并确定闪存芯片对应的读高并行密度优先队列R-HPD和读先进先出队列R-FIFO;
8.3)将当前读闪存请求FR分配到读高并行密度优先队列R-HPD和读先进先出队列R-FIFO的可并行闪存请求组PFRG中。
4.根据权利要求3所述的物理地址感知的固态盘请求调度方法,其特征在于,步骤8.3)的详细步骤包括:
8.3.1)取读高并行密度优先队列R-HPD的第一个可并行闪存请求组PFRG为当前可并行闪存请求组PFRG;
8.3.2)判断当前可并行闪存请求组PFRG的晶圆标识位CVdie、当前读闪存请求FR的晶圆标识位CVdie的与逻辑结果是否为0,如果与逻辑结果为0,则跳转执行步骤8.3.7);否则,跳转执行下一步;
8.3.3)判断当前可并行闪存请求组PFRG的分组标识位CVplane、当前读闪存请求FR的分组标识位CVplane的与逻辑结果是否为0,如果为0则跳转执行下一步;否则,跳转执行步骤8.3.5);
8.3.4)判断当前可并行闪存请求组PFRG、当前读闪存请求FR是否具有相同的块内偏移地址,如果具有相同的块内偏移地址,则跳转执行步骤8.3.7);否则,跳转执行下一步;
8.3.5)判断当前可并行闪存请求组PFRG是否为读高并行密度优先队列R-HPD中最后一个可并行闪存请求组PFRG,如果是则在读高并行密度优先队列R-HPD中新建一个可并行闪存请求组PFRG,跳转执行步骤8.3.8);否则,跳转执行下一步;
8.3.6)将读高并行密度优先队列R-HPD中的下一个可并行闪存请求组PFRG作为当前可并行闪存请求组PFRG和当前读闪存请求FR进行冲突检测,跳转执行步骤8.3.2);
8.3.7)将当前读闪存请求FR分配到读高并行密度优先队列W-HPD中当前可并行闪存请求组PFRG中,不改变现有的读先进先出队列R-FIFO,跳转执行步骤8.3.9);
8.3.8)将当前读闪存请求FR分配到读高并行密度优先队列W-HPD中新创建的可并行闪存请求组PFRG中,记录当前时间到新创建的可并行闪存请求组PFRG的时间戳TS中,并将新创建的可并行闪存请求组PFRG链接到读先进先出队列R-FIFO的末尾;
8.3.9)将当前读闪存请求FR被分配的可并行闪存请求组PFRG的并行密度PD加1,并更新该可并行闪存请求组PFRG的冲突向量CV;
8.3.10)结束。
5.根据权利要求1~4中任意一项所述的物理地址感知的固态盘请求调度方法,其特征在于,步骤9)的详细步骤包括:
9.1)针对固态盘每个闪存芯片的读先进先出队列R-FIFO、写先进先出队列W-FIFO、读高并行密度优先队列R-HPD、写高并行密度优先队列W-HPD四个队列,判断读先进先出队列R-FIFO中是否有可并行闪存请求组PFRG等待超时,如果有则执行读先进先出队列R-FIFO中的首个可并行闪存请求组PFRG,跳转执行步骤9.1);否则跳转执行下一步;
9.2)判断写先进先出队列W-FIFO中是否有可并行闪存请求组PFRG等待超时,如果有则执行写先进先出队列W-FIFO中的首个可并行闪存请求组PFRG,跳转执行步骤9.1);否则跳转执行下一步;
9.3)判断读高并行密度优先队列R-HPD是否为空,如果读高并行密度优先队列R-HPD为空,则执行写高并行密度优先队列W-HPD中的首个可并行闪存请求组PFRG,跳转执行步骤9.1);否则跳转执行下一步;
9.4)执行读高并行密度优先队列R-HPD中的首个可并行闪存请求组PFRG,跳转执行步骤9.1)。
6.一种物理地址感知的固态盘请求调度系统,包括带有控制单元的闪存固态盘,其特征在于,所述控制单元被编程以执行权利要求1~5中任意一项所述物理地址感知的固态盘请求调度方法的步骤。
CN201811554794.0A 2018-12-19 2018-12-19 物理地址感知的固态盘请求调度方法及装置 Active CN109697032B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811554794.0A CN109697032B (zh) 2018-12-19 2018-12-19 物理地址感知的固态盘请求调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811554794.0A CN109697032B (zh) 2018-12-19 2018-12-19 物理地址感知的固态盘请求调度方法及装置

Publications (2)

Publication Number Publication Date
CN109697032A CN109697032A (zh) 2019-04-30
CN109697032B true CN109697032B (zh) 2022-01-07

Family

ID=66231820

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811554794.0A Active CN109697032B (zh) 2018-12-19 2018-12-19 物理地址感知的固态盘请求调度方法及装置

Country Status (1)

Country Link
CN (1) CN109697032B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103135945A (zh) * 2013-03-25 2013-06-05 中国人民解放军国防科学技术大学 用于ssd的多通道动态读写调度方法
CN103336669A (zh) * 2013-05-21 2013-10-02 华中科技大学 一种基于固态盘内部并行性的i/o调度方法及调度器
CN104090847A (zh) * 2014-06-25 2014-10-08 华中科技大学 一种固态存储设备的地址分配方法
CN107820142A (zh) * 2017-12-15 2018-03-20 中国人民解放军国防科技大学 基于高密度存储器的单裸片光交换结构
CN108153682A (zh) * 2017-12-12 2018-06-12 西安交通大学 一种利用闪存内部并行性进行闪存转换层地址映射的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI240863B (en) * 2003-09-05 2005-10-01 Megawin Technology Co Ltd Method for efficiently controlling flash memory read/write
CA2882446A1 (en) * 2014-02-21 2015-08-21 Coho Data, Inc. Methods, systems and devices for parallel network interface data structures with differential data storage service capabilities

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103135945A (zh) * 2013-03-25 2013-06-05 中国人民解放军国防科学技术大学 用于ssd的多通道动态读写调度方法
CN103336669A (zh) * 2013-05-21 2013-10-02 华中科技大学 一种基于固态盘内部并行性的i/o调度方法及调度器
CN104090847A (zh) * 2014-06-25 2014-10-08 华中科技大学 一种固态存储设备的地址分配方法
CN108153682A (zh) * 2017-12-12 2018-06-12 西安交通大学 一种利用闪存内部并行性进行闪存转换层地址映射的方法
CN107820142A (zh) * 2017-12-15 2018-03-20 中国人民解放军国防科技大学 基于高密度存储器的单裸片光交换结构

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《一种自适应负载的I/O调度算法》;徐炜遐;《计算工程与科学》;20091105;全文 *
《闪存在存储体系结构中的应用研究》;宋振龙;《第十八届计算机工程与工艺年会暨第四届微处理器技术论坛》;20140731;全文 *

Also Published As

Publication number Publication date
CN109697032A (zh) 2019-04-30

Similar Documents

Publication Publication Date Title
CN104090847B (zh) 一种固态存储设备的地址分配方法
KR101486987B1 (ko) 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
US10049040B2 (en) Just in time garbage collection
US7733892B2 (en) Buffer management method based on a bitmap table
CN107885456B (zh) 减少io命令访问nvm的冲突
RU2661280C2 (ru) Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных
US7818505B2 (en) Method and apparatus for managing a cache memory in a mass-storage system
CN109388590B (zh) 提升多通道dma访问性能的动态缓存块管理方法和装置
US10248350B2 (en) Queue management method and apparatus
WO2016141735A1 (zh) 缓存数据的确定方法及装置
US8255663B2 (en) System and method for processing read request
US10895991B2 (en) Solid state device with improved sustained data writing speed
US7012926B2 (en) Packet receiving method on a network with parallel and multiplexing capability
CN108228470B (zh) 一种处理向nvm写入数据的写命令的方法和设备
CN108496161A (zh) 数据缓存装置及控制方法、数据处理芯片、数据处理系统
US20210109673A1 (en) Memory controller and storage device including the same
CN108829346A (zh) 一种适应闪存页差异的固态硬盘的用户写请求处理方法
CN109656483B (zh) 一种固态盘静态磨损均衡方法及装置
EP3657744A1 (en) Message processing
CN109213423A (zh) 基于地址屏障无锁处理并发io命令
CN113126911B (zh) 基于ddr3 sdram的队列管理方法、介质、设备
CN109697032B (zh) 物理地址感知的固态盘请求调度方法及装置
CN102779017B (zh) 一种固态盘中数据缓存区的控制方法
CN117806989A (zh) 基于持久化内存的高速数据处理方法、装置、设备及介质
CN107885667A (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