CN112748883B - 一种io请求流水线处理设备、方法、系统及存储介质 - Google Patents
一种io请求流水线处理设备、方法、系统及存储介质 Download PDFInfo
- Publication number
- CN112748883B CN112748883B CN202110057735.8A CN202110057735A CN112748883B CN 112748883 B CN112748883 B CN 112748883B CN 202110057735 A CN202110057735 A CN 202110057735A CN 112748883 B CN112748883 B CN 112748883B
- Authority
- CN
- China
- Prior art keywords
- request
- pipeline
- module
- cpu
- state buffer
- 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
- 238000000034 method Methods 0.000 title claims abstract description 26
- 239000000872 buffer Substances 0.000 claims abstract description 69
- 238000003672 processing method Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 18
- 239000007787 solid Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005111 flow chemistry technique Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004886 process control Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Advance Control (AREA)
Abstract
本发明公开了一种IO请求流水线处理设备,该设备主要包括:IO状态缓冲器以及流水线控制器;其中,IO状态缓冲器中包括若干元素,用于存储包括由CPU生成的模块调用顺序的上下文信息;流水线控制器用于根据上下文信息进行IO请求的流水线控制。该设备通过硬件模块的设置进行IO处理状态的流水线管理,分担了原有CPU软件控制过程巨大的工作量,也降低对CPU设计的要求,同时通过IO状态缓冲器中记录的模块调用顺序实现流水线控制器的处理逻辑的触发,可以降低实现功耗,提升实现效率。相应地,本发明还提供了与上述IO请求流水线处理设备相对应的方法、系统和可读存储介质,具有相应的技术效果。
Description
技术领域
本发明涉及请求处理技术领域,特别是涉及一种IO请求流水线处理设备、方法、系统及可读存储介质。
背景技术
固态硬盘(SSD)是一种用来存储用户数据的设备。固态硬盘由控制器、存储介质NAND(闪存)等模块组成。固态硬盘与主机进行通讯,主机将存储请求发给固态硬盘,并且将要存储的数据通知固态硬盘。固态硬盘获得请求后,将数据存储至NAND(闪存)介质中。
固态硬盘之所以性能极高,一个原因是提供了高并发性,即主机可以发送多个请求给固态硬盘,而固态硬盘在一个请求还没有处理完成之前,即可以同时处理下一个请求。这种并发性一般是由控制器中用于实现资源控制以及存储调度的软件来实现的。软件记录每一个请求(下文中称为IO请求)的处理状态,包括请求到达和获取,请求的处理(处理可能分为多个步骤,软件需要记录下来每个IO请求分别位于什么状态中),以及请求处理过程中多次与主机的交互、IO请求完成等。
该种实现方式下的整体流程控制、状态轮询以及操作处理均由SSD控制器中的CPU控制实现,功耗较高,实现成本也较高。
综上所述,如何降低CPU对于IO请求处理的控制负载,降低实现功耗,同时提升处理性能,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种IO请求流水线处理设备、IO请求流水线处理方法、系统及可读存储介质,以降低CPU对于IO请求处理的控制负载,降低实现功耗,同时提升处理性能。
需要说明的是,本申请提供的IO请求流水线处理设备、方法、系统及可读存储介质中提及的“元素”为本申请中定义的在IO状态缓冲器中,用于存储IO请求的上下文信息的存储单元,而名称不限于此,本申请中仅以“元素”为例进行介绍,以其他名称定义的在IO状态缓冲器中,用于存储IO请求的上下文信息的存储单元均算作本申请的保护范围。为解决上述技术问题,本发明提供如下技术方案:
本申请提供了一种IO请求流水线处理设备,该设备包括:IO状态缓冲器以及流水线控制器;
其中,所述IO状态缓冲器中包括若干元素,所述元素用于存储IO请求的上下文信息;所述上下文信息中包括由SSD控制器中CPU生成的模块调用顺序;
所述流水线控制器用于根据所述上下文信息进行IO请求的流水线控制。
可选地,所述流水线控制器包括:
第一处理器,用于接收到CPU发送的元素添加通知后,读取新添加的元素中的模块调用顺序,根据所述模块调用顺序确定首个待调用功能模块,将所述新添加的元素对应的IO请求发送至所述首个待调用功能模块进行操作处理;
第二处理器,用于接收到系统中功能模块发送的操作完成通知后,从所述IO状态缓冲器中读取所述操作完成的IO请求对应的下一个待处理的功能模块,将所述操作完成的IO请求发送至所述下一个待处理的功能模块;并根据调度算法确定所述操作完成的功能模块当前待处理的IO请求,并将所述当前待处理的IO请求发送至所述所述操作完成的功能模块进行操作处理。
可选地,所述流水线控制器还包括:第三处理器,所述第三处理器用于若从所述IO状态缓冲器中读取不到所述操作完成的IO请求对应的下一个待处理的功能模块,向所述CPU发送IO请求完成通知。
可选地,所述元素为按照预设空间占用大小设置的等长元素。
本申请提供了一种IO请求流水线处理方法,该方法包括:
流水线控制器读取IO状态缓冲器中IO请求对应元素的上下文信息,确定所述IO请求对应的模块调用顺序;其中,所述上下文信息中包括由SSD控制器中CPU生成的模块调用顺序;
按照所述模块调用顺序将所述IO请求发送至对应的功能模块进行请求处理。
可选地,所述流水线控制器读取IO状态缓冲器中IO请求对应元素的上下文信息,确定所述IO请求对应的模块调用顺序,包括:
所述流水线控制器接收到CPU发送的元素添加通知后,确定所述IO状态缓冲器中新添加的IO请求对应的元素位置;
读取所述元素位置对应的上下文信息,确定首个待调用功能模块;
接收到系统中功能模块发送的操作完成通知后,从所述IO状态缓冲器中读取所述操作完成的IO请求对应的模块调用顺序;
根据所述模块调用顺序确定下一个待处理的功能模块。
可选地,所述IO请求流水线处理方法还包括:
若从所述IO状态缓冲器中读取不到所述操作完成的IO请求对应的下一个待处理的功能模块,向所述CPU发送IO请求完成通知。
本申请提供了一种IO请求流水线处理系统,包括:如上所述的IO请求流水线处理设备以及SSD控制器;其中,所述IO请求流水线处理设备包括:IO状态缓冲器以及流水线控制器;
所述SSD控制器用于:接收到主机发起的IO请求后,在所述IO状态缓冲器中为所述IO请求分配用于存储上下文信息的元素;确定所述IO请求的模块调用顺序,并将所述模块调用顺序写入至所述元素;
所述IO状态缓冲器中包括若干元素,所述元素用于存储IO请求的上下文信息;所述上下文信息中包括由CPU生成的模块调用顺序;
所述流水线控制器用于根据所述上下文信息进行IO请求的流水线控制。
可选地,所述流水线控制器还用于:若从所述IO状态缓冲器中读取不到所述操作完成的IO请求对应的下一个待处理的功能模块,向所述CPU发送IO请求完成通知;
相应地,所述CPU还用于:接收到所述IO请求完成通知后,从所述IO状态缓冲器中将所述IO请求对应的元素删除。
本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述IO请求流水线处理设备的步骤。
本申请提出了一种IO请求流水线处理设备,该设备主要包括:IO状态缓冲器以及流水线控制器;其中,IO状态缓冲器中包括若干元素,元素用于存储IO请求的上下文信息;上下文信息中包括由CPU生成的模块调用顺序;流水线控制器用于根据上下文信息进行IO请求的流水线控制。该设备通过硬件模块的设置进行IO处理状态的流水线管理,分担了原有CPU软件控制过程巨大的工作量,降低了CPU的负载,也降低对CPU设计的要求,同时通过IO状态缓冲器中记录的模块调用顺序实现流水线控制器的处理逻辑的触发,可以降低实现功耗,提升实现效率。
相应地,本发明实施例还提供了与上述IO请求流水线处理设备相对应的方法、系统和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种IO请求流水线处理设备的实施流程图;
图2为本发明实施例中一种IO状态缓冲器存储示意图;
图3为本发明实施例中一种IO请求流水线处理方法的流程示意图;
图4为本发明实施例中一种IO请求流水线处理系统的结构示意图。
具体实施方式
本发明的核心是提供一种IO请求流水线处理设备,该设备可以降低CPU对于IO请求处理的控制负载,降低实现功耗,同时提升处理性能。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
控制器中包含多个硬件功能模块,如与主机交互的协议模块、数据传输的DMA模块、数据加解密相关的运算模块、资源管理模块等,一个IO请求可能涉及十几个处理步骤,每个步骤需要调用对应的功能模块进行处理。每个功能模块在一个时间内只能响应一个IO请求(为了提升性能,关键的模块可能有多个实例,每个实例可以同时响应一个IO,但是每个实例也只能响应一个IO请求)。当一个请求处理完之后,这个请求释放了功能模块,那么另外一个IO请求就可以使用这个模块了。因此控制器中软件的很重要的一个工作就是检查所有的IO请求是否从一个功能模块中运行完成,如果运行完成,则将其推送到下一个功能模块。
而一个IO请求分为多个步骤完成,即多级流水线,每一个IO请求的流水线级数不一定是相同的,有可能某些IO请求只需要n级处理,有一些需要m级。这些IO请求也可以乱序执行的,只要一个IO请求走到了完成状态就可以释放。而任何一个功能模块释放完之后,都可以选择一个请求填入此级流水线。而上述过程目前都是基于CPU轮询各功能模块的处理状态以及各IO请求的处理进度,资源开销大。
针对SSD的流水线与CPU中的流水线不同,首先,SSD的流水线中每一级流水处理的时间是不等长的,而CPU的流水线因为等长或者近似等长,所以不需要额外的数据结构存储每一个指令(即上文中的每一个IO请求的信息)。其次,SSD的流水线中每个IO指令可能会循环的使用控制器内的功能模块,在CPU中,流水线的路径是预先确定的,而在SSD的控制流程中,对控制器内的模块使用顺序是无法预先确定的。且SSD的并发度极高,可能有几千条甚至上万条指令在执行,常见的CPU流水线没有这么高的并发需求,
常规来说,SSD控制器由CPU中软件管理所有IO的状态,完成上述操作,当软件监控到某一个IO的某一个Stage(操作步骤)完成后,即会找到这个IO对应的下一个Stage,将其发送到下一个Stage对应的功能模块中。
在本发明中,设计了一个硬件IO请求流水线处理设备,针对SSD控制器,通过该设备来管理所有的IO的所有流水线操作状态,硬件监控这些状态是否完成,完成后则发给下一个功能模块。通过此结构的硬件化实现,可以极大地降低CPU的负载,从而将降低功耗和系统成本。
请参考图1,图1为本发明实施例中一种IO请求流水线处理设备的结构示意图,主要包括两部分:IO状态缓冲器以及流水线控制器;
IO状态缓冲器(IO State Buffer)100是一个存储空间,其中存储多个元素(buffer),如图2所示为一种IO状态缓冲器存储示意图,每个元素对应一个IO请求,其中记录有该IO请求的上下文信息。对于每个元素占用空间的大小本实施例中不做限定,可以根据实际使用需要进行设定。
上下文信息中的主要包括的信息种类不做限定,主要包括包括由CPU生成的模块调用顺序,模块调用顺序指示该IO请求对应的模块调度顺序,包括整体调度的模块数量以及接下来要调度的模块等,比如模块1—模块4—模块2—模块6。此外,上下文信息中还可以进一步包括IO请求的属性信息,比如IO请求的类型、参数、当前的状态等,以便于确定实时调用状态。
上下文信息可以由SSD控制器的CPU上运行的Firmware填入,配置好之后Firmware可以触发流水线控制器(比如通知流水线控制器,第几个Buffer元素已经准备好进入流水线了)。本实施例中对于具体的填入步骤不做限定,为加深理解,在此介绍一种由SSD控制器控制自动填充上下文信息的实现方式,具体如下:
SSD控制器收到主机发来的请求,由CPU上运行的Firmware进行响应。并且在IO状态缓冲器中申请分配一个元素。
firmware根据当前IO请求的种类,确定首先要进入的功能模块。
firmware根据请求的种类以及上一个功能模块的处理结果,确定预设的模块调用顺序,写在IO状态缓冲器中。
以上为一种实现方式,其它上下文信息的填充方式均可参照上述介绍,在此不再赘述。
需要说明的是,在CPU对IO请求进行分析得到上下文信息并填入至IO状态缓冲器后,后续的流程控制(即IO请求的流水线处理)过程均由本实施例提供的IO请求流水线处理设备来控制实现,而上述过程传统方法下是由CPU由软件控制实现的。通过本实施例提供的IO请求流水线处理设备分担了CPU的IO请求处理压力,相应地也可以提升CPU的其它任务处理效率。
元素的数量可能是几千个或者几万个,可以预先申请若干元素,在接收到新IO后直接利用预先申请的元素进行上下文信息的存储;也可以在存在新IO请求后再申请元素,本实施例中不做限定,可以根据SSD的设计性能而定。
每个元素的容量可以是定长的或者变长的,具体可以根据实际使用需要设置。所述元素可以为按照预设空间占用大小设置的等长元素,即所有元素占用大小相同,均为预设空间占用大小,该种设置方式可以简化元素生成步骤。
在上下文信息写入之后,就可以触发流水线控制器200。需要说明的是,存入元素的上下文信息可以根据后续功能模块处理的结果进行调整,比如CPU可以根据上一个功能模块处理的结果以及IO请求的种类可以对模块调用顺序进行调整,但是已执行的顺序无法调整,只能对未执行的模块调用顺序进行调整,则后续流水线控制器可以直接根据未执行的功能模块的调用顺序进行IO请求的流水线控制处理。
系统中所有的功能模块都与流水线控制器200相连,其中,功能模块包括与主机交互的协议模块、数据传输的DMA模块、数据加解密相关的运算模块、资源管理模块等硬件功能模块,也包括CPU,由于大多数IO请求是基于实际操作才能确定下一步状态的,首先需要流转的功能模块往往是CPU;另外,当处理较为复杂的流程和逻辑时,流水线控制器需要请CPU来操作,当CPU完成上一个请求的处理之后,即会从流水线控制器获取下一个请求。获取的方法可以是流水线控制器通过总线发给CPU的,也可以是CPU主动轮询流水线控制器的。除非没有发给CPU的新请求,否则CPU不会空转,每次都可以获得需要处理的IO请求,因此CPU也可以看成是一个功能模块。
流水线控制器200被CPU触发存在新IO请求待处理后,流水线控制器根据读取流水线控制器中元素的内容,获知接下来要操作的功能模块(编号),以及得知预设的顺序,然后调用第一个功能模块。
功能模块与流水线控制器200的连接是双向的。当功能模块完成一个IO的请求时,会通知流水线控制器,以便流水线控制器可以调度其他任务。流水线控制器也可以通知功能模块,使其处理下一个任务。
流水线控制器200主要用于根据上下文信息进行IO请求的流水线控制,其任务调度包括两部分,IO请求的调度(将IO请求发送至对应的功能模块)以及功能模块的调度(为功能模块分配下一个待处理的IO请求)。
具体地,流水线控制器可以包括:第一处理单元以及第二处理单元;
其中,第一处理单元主要用于接收到CPU发送的元素添加通知后,读取新添加的元素中的模块调用顺序,根据模块调用顺序确定首个待调用功能模块,将新添加的元素对应的IO请求发送至首个待调用功能模块进行操作处理;
第二处理单元主要用于接收到系统中功能模块发送的操作完成通知后,从IO状态缓冲器中读取操作完成的IO请求对应的下一个待处理的功能模块,将操作完成的IO请求发送至下一个待处理的功能模块;并根据调度算法确定操作完成的功能模块当前待处理的IO请求,并将当前待处理的IO请求发送至操作完成的功能模块进行操作处理。
每个功能模块的完成时间可能很长,在功能模块分配的任务完成之前,流水线控制器可能收到通知(比如CPU发来的新IO请求添加通知、其它功能模块发来的任务完成通知等)。流水线控制器判断哪些功能模块是空闲的,如果有空闲的,且是对应IO请求的模块调用数必须的下一个状态,则发给对应的功能模块。当多个请求都等待同一个功能模块时,功能模块根据内嵌的调度算法,决定排队顺序。这种顺序可以是先入先出(FIFO),也可以是优先队列,或者是随机洗牌顺序等,本实施例中对此不做限定。当一个功能模块释放出来之后(处理完一个IO请求),根据调度算法选择排队等待的IO请求中作为首个待处理的IO请求,发送给这个功能模块进行处理。
以上功能逻辑的配置以通知作为触发条件,当接收到CPU发送的元素添加通知后,触发新IO请求的处理逻辑;当接收到系统中功能模块发送的操作完成通知后,触发IO流转处理逻辑。通过以通知作为处理逻辑的触发条件,避免了传统实现方式中状态轮询带来的工作量,可以简化软件处理逻辑,从而提升处理效率。
流水线控制器200还可以进一步包括第三处理单元,第三处理单元用于:若从IO状态缓冲器中读取不到操作完成的IO请求对应的下一个待处理的功能模块(即模块调用顺序中所有模块操作完成,功能模块的流水线处理完成),可以向CPU发送IO请求完成通知,以便于CPU立即触发后续的处理流程,比如由CPU将其在State Buffer中删除等减少对于IO状态缓冲器的空间占用的手段,加快IO请求的流转。
本实施例中仅以上述流水线控制器的功能逻辑的配置为例进行介绍,其它使用需要下的功能逻辑配置的实现以及设备间的交互均可参照本实施例的介绍,在此不再赘述。
基于上述介绍,本发明实施例提出了一种IO请求流水线处理设备,该设备通过硬件模块进行IO处理状态的流水线管理,分担了原有CPU软件控制过程巨大的工作量,降低了CPU的负载,也降低对CPU设计的要求,同时通过IO状态缓冲器中记录的模块调用顺序实现流水线控制器的处理逻辑的触发,可以降低实现功耗,提升实现效率。
需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
相应于上面的设备实施例,本发明实施例还提供了一种IO请求流水线处理方法,下文描述的IO请求流水线处理方法,与上文描述的IO请求流水线处理设备可相互对应参照。
参见图3所示,该方法主要包括以下步骤:
S101:流水线控制器读取IO状态缓冲器中IO请求对应元素的上下文信息,确定IO请求对应的模块调用顺序;
IO状态缓冲器中包括若干元素,每个元素中存储有对应的IO请求的上下文信息,其中,上下文信息中包括由SSD控制器中CPU生成的模块调用顺序。
在针对某IO请求进行处理时,需要从IO状态缓冲器中读取对应元素中存储的模块调用顺序。
本实施例中对流水线控制器在IO缓冲器中确定IO请求对应的元素的实现方式不做限定,比如可以通过元素编号进行确定。
其中,本步骤流水线控制器读取IO状态缓冲器中IO请求对应元素的上下文信息,确定IO请求对应的模块调用顺序的具体实现可以包括以下步骤:
(1)流水线控制器接收到CPU发送的元素添加通知后,确定IO状态缓冲器中新添加的IO请求对应的元素位置;
(2)读取元素位置对应的上下文信息,确定首个待调用功能模块;
(3)接收到系统中功能模块发送的操作完成通知后,从IO状态缓冲器中读取操作完成的IO请求对应的模块调用顺序;
(4)根据模块调用顺序确定下一个待处理的功能模块。
以上实现步骤中将流水线控制的处理逻辑划分为两部分,当接收到CPU发送的元素添加通知后,指示存在新的IO请求待处理,则从其元素对应的模块调用顺序中读取第一个未调用的功能模块,并将该请求发送至该功能模块,以启动对于该IO请求的流水线处理。接收到系统中功能模块发送的操作完成通知后,从IO状态缓冲器中读取下一个该调用的功能模块,并将该刚刚完成一个阶段操作的IO请求发送至该模块,开启下一个阶段的请求处理,以实现该IO请求的流水线流转。
S102:按照模块调用顺序将IO请求发送至对应的功能模块进行请求处理。
模块调用顺序中指示每一个阶段IO请求处理对应的功能模块,根据该模块调用顺序将IO请求逐一发送至对应的功能模块进行请求处理,以实现对于IO请求的流水线控制。
进一步地,流水线控制器可以进一步执行以下步骤:若从IO状态缓冲器中读取不到操作完成的IO请求对应的下一个待处理的功能模块,向CPU发送IO请求完成通知,以结束一个IO请求的处理。
本实施例提供的IO请求流水线处理方法,基于上述实施例提供IO请求流水线处理设备实现,该方法中通过调用IO状态缓冲器以及流水线控制器这两个硬件模块进行IO处理状态的流水线管理,分担了原有CPU软件控制过程巨大的工作量,降低了CPU的负载,也降低对CPU设计的要求,同时通过IO状态缓冲器中记录的模块调用顺序实现流水线控制器的处理逻辑的触发,可以降低实现功耗,提升实现效率。
相应于上面的方法实施例,本发明实施例还提供了一种IO请求流水线处理系统,下文描述的一种IO请求流水线处理系统与上文描述的一种IO请求流水线处理方法以及设备可相互对应参照。
参见图4所示,该系统主要包括:IO请求流水线处理设备以及SSD控制器;其中,IO请求流水线处理设备主要包括:IO状态缓冲器以及流水线控制器;
IO状态缓冲器中包括若干元素,元素用于存储IO请求的上下文信息;上下文信息中包括由CPU生成的模块调用顺序;
流水线控制器用于根据上下文信息进行IO请求的流水线控制。
针对于IO请求流水线处理设备的相关介绍可以参照上述实施例的介绍,在此不再赘述。
SSD控制器主要用于:接收到主机发起的IO请求后,在IO状态缓冲器中为IO请求分配用于存储上下文信息的元素;确定IO请求的模块调用顺序,并将模块调用顺序写入至元素;
例如,SSD控制器收到主机发来的请求,由CPU上运行的Firmware进行响应。并且在IO State Buffer中分配一个元素。
分配的Buffer元素中标记这个IO的信息,包括IO的类型,IO的参数,IO当前的状态。
firmware根据请求的种类,确定接下来要进入的功能模块。由于大多数IO请求是基于实际操作才能确定下一步状态的,所以接下来的功能模块往往是CPU(CPU也可以看作是一个功能模块,或者看作是某一级流水线)。
firmware根据请求的种类,确定预设的模块调用顺序,写在IO状态缓冲器中。
配置好之后,Firmware触发流水线控制器,通知流水线控制器,第几个Buffer元素已经准备好进入流水线了,以便于流水线控制器的流转处理。
本实施例中仅以上述实现方式为例进行介绍,其它实现方式均可参照本实施例的介绍,在此不再赘述。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种IO请求流水线处理方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的IO请求流水线处理方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (8)
1.一种IO请求流水线处理设备,其特征在于,该设备包括:IO状态缓冲器以及流水线控制器;
其中,所述IO状态缓冲器中包括若干元素,所述元素用于存储IO请求的上下文信息;所述上下文信息中包括由SSD控制器中CPU生成的模块调用顺序;
所述流水线控制器用于根据所述上下文信息进行IO请求的流水线控制;
所述流水线控制器包括:
第一处理器,用于接收到CPU发送的元素添加通知后,读取新添加的元素中的模块调用顺序,根据所述模块调用顺序确定首个待调用功能模块,将所述新添加的元素对应的IO请求发送至所述首个待调用功能模块进行操作处理;
第二处理器,用于接收到系统中功能模块发送的操作完成通知后,从所述IO状态缓冲器中读取操作完成的IO请求对应的下一个待处理的功能模块,将所述操作完成的IO请求发送至所述下一个待处理的功能模块;并根据调度算法确定所述操作完成的功能模块当前待处理的IO请求,并将所述当前待处理的IO请求发送至所述操作完成的功能模块进行操作处理。
2.根据权利要求1所述的IO请求流水线处理设备,其特征在于,所述流水线控制器还包括:第三处理器,所述第三处理器用于若从所述IO状态缓冲器中读取不到所述操作完成的IO请求对应的下一个待处理的功能模块,向所述CPU发送IO请求完成通知。
3.根据权利要求1所述的IO请求流水线处理设备,其特征在于,所述元素为按照预设空间占用大小设置的等长元素。
4.一种IO请求流水线处理方法,其特征在于,该方法包括:
流水线控制器读取IO状态缓冲器中IO请求对应元素的上下文信息,确定所述IO请求对应的模块调用顺序;其中,所述上下文信息中包括由SSD控制器中CPU生成的模块调用顺序;
按照所述模块调用顺序将所述IO请求发送至对应的功能模块进行请求处理;
所述流水线控制器读取IO状态缓冲器中IO请求对应元素的上下文信息,确定所述IO请求对应的模块调用顺序,包括:
所述流水线控制器接收到CPU发送的元素添加通知后,确定所述IO状态缓冲器中新添加的IO请求对应的元素位置;
读取所述元素位置对应的上下文信息,确定首个待调用功能模块;
接收到系统中功能模块发送的操作完成通知后,从所述IO状态缓冲器中读取操作完成的IO请求对应的模块调用顺序;
根据所述模块调用顺序确定下一个待处理的功能模块。
5.根据权利要求4所述的IO请求流水线处理方法,其特征在于,还包括:
若从所述IO状态缓冲器中读取不到所述操作完成的IO请求对应的下一个待处理的功能模块,向所述CPU发送IO请求完成通知。
6.一种IO请求流水线处理系统,其特征在于,包括:如权利要求1至3任一项所述的IO请求流水线处理设备以及SSD控制器;其中,所述IO请求流水线处理设备包括:IO状态缓冲器以及流水线控制器;
所述SSD控制器用于:接收到主机发起的IO请求后,在所述IO状态缓冲器中为所述IO请求分配用于存储上下文信息的元素;确定所述IO请求的模块调用顺序,并将所述模块调用顺序写入至所述元素;
所述IO状态缓冲器中包括若干元素,所述元素用于存储IO请求的上下文信息;所述上下文信息中包括由CPU生成的模块调用顺序;
所述流水线控制器用于根据所述上下文信息进行IO请求的流水线控制;
所述流水线控制器包括:
第一处理器,用于接收到CPU发送的元素添加通知后,读取新添加的元素中的模块调用顺序,根据所述模块调用顺序确定首个待调用功能模块,将所述新添加的元素对应的IO请求发送至所述首个待调用功能模块进行操作处理;
第二处理器,用于接收到系统中功能模块发送的操作完成通知后,从所述IO状态缓冲器中读取操作完成的IO请求对应的下一个待处理的功能模块,将所述操作完成的IO请求发送至所述下一个待处理的功能模块;并根据调度算法确定所述操作完成的功能模块当前待处理的IO请求,并将所述当前待处理的IO请求发送至所述操作完成的功能模块进行操作处理。
7.根据权利要求6所述的IO请求流水线处理系统,其特征在于,所述流水线控制器还用于:若从所述IO状态缓冲器中读取不到所述操作完成的IO请求对应的下一个待处理的功能模块,向所述CPU发送IO请求完成通知;
相应地,所述CPU还用于:接收到所述IO请求完成通知后,从所述IO状态缓冲器中将所述IO请求对应的元素删除。
8.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求4或5所述IO请求流水线处理方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110057735.8A CN112748883B (zh) | 2021-01-15 | 2021-01-15 | 一种io请求流水线处理设备、方法、系统及存储介质 |
US18/270,138 US12019909B2 (en) | 2021-01-15 | 2021-09-28 | IO request pipeline processing device, method and system, and storage medium |
PCT/CN2021/121206 WO2022151766A1 (zh) | 2021-01-15 | 2021-09-28 | 一种io请求流水线处理设备、方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110057735.8A CN112748883B (zh) | 2021-01-15 | 2021-01-15 | 一种io请求流水线处理设备、方法、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112748883A CN112748883A (zh) | 2021-05-04 |
CN112748883B true CN112748883B (zh) | 2023-01-10 |
Family
ID=75652276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110057735.8A Active CN112748883B (zh) | 2021-01-15 | 2021-01-15 | 一种io请求流水线处理设备、方法、系统及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112748883B (zh) |
WO (1) | WO2022151766A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112748883B (zh) * | 2021-01-15 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种io请求流水线处理设备、方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733585A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 缓存系统及相关方法 |
CN109766056A (zh) * | 2018-11-28 | 2019-05-17 | 上海威固信息技术股份有限公司 | 一种存储阵列控制器io队列调度方法与装置 |
CN110618794A (zh) * | 2019-09-20 | 2019-12-27 | 苏州浪潮智能科技有限公司 | 一种SSD固件访问NandFlash的方法和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547492B (zh) * | 2016-12-08 | 2018-03-20 | 北京得瑞领新科技有限公司 | 一种nand闪存设备的操作指令调度方法及装置 |
CN107291392A (zh) * | 2017-06-21 | 2017-10-24 | 郑州云海信息技术有限公司 | 一种固态硬盘及其读写方法 |
CN111796771B (zh) * | 2020-06-30 | 2024-01-26 | 深圳大普微电子科技有限公司 | 闪存控制器、固态硬盘及其控制器、闪存命令管理方法 |
CN112748883B (zh) * | 2021-01-15 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种io请求流水线处理设备、方法、系统及存储介质 |
-
2021
- 2021-01-15 CN CN202110057735.8A patent/CN112748883B/zh active Active
- 2021-09-28 WO PCT/CN2021/121206 patent/WO2022151766A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733585A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 缓存系统及相关方法 |
CN109766056A (zh) * | 2018-11-28 | 2019-05-17 | 上海威固信息技术股份有限公司 | 一种存储阵列控制器io队列调度方法与装置 |
CN110618794A (zh) * | 2019-09-20 | 2019-12-27 | 苏州浪潮智能科技有限公司 | 一种SSD固件访问NandFlash的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20230393782A1 (en) | 2023-12-07 |
CN112748883A (zh) | 2021-05-04 |
WO2022151766A1 (zh) | 2022-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US6629124B1 (en) | Multimedia data transferring method | |
CN111338779B (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN108304272B (zh) | 一种数据io请求的处理方法及装置 | |
WO2023201987A1 (zh) | 请求处理方法、装置、设备及介质 | |
CN113791917A (zh) | 延迟消息处理方法、装置与系统 | |
CN112748883B (zh) | 一种io请求流水线处理设备、方法、系统及存储介质 | |
CN116149559A (zh) | 队列处理方法、装置、服务器、电子设备和存储介质 | |
US9507637B1 (en) | Computer platform where tasks can optionally share per task resources | |
JP2012059152A (ja) | データ処理を行うシステムおよびメモリを割り当てる方法 | |
CN110413398B (zh) | 任务调度方法、装置、计算机设备和存储介质 | |
CN115981893A (zh) | 消息队列任务处理方法、装置、服务器及存储介质 | |
CN112306827A (zh) | 日志采集装置、方法和计算机可读存储介质 | |
CN112214299A (zh) | 多核处理器及其任务调度方法和装置 | |
US12019909B2 (en) | IO request pipeline processing device, method and system, and storage medium | |
CN109478151B (zh) | 网络可访问数据卷修改 | |
CN112650693B (zh) | 一种静态内存管理方法及装置 | |
CN112269649A (zh) | 实现主机任务异步执行的方法及装置、系统 | |
CN114675954A (zh) | 任务调度方法及装置 | |
CN114138626A (zh) | 用于自动化固件测试的水平可扩展分布式系统及其方法 | |
CN113094170B (zh) | 一种5g通信虚拟化网元的内存总线分配方法和终端 | |
CN112003860B (zh) | 适用于远程直接内存访问的内存管理方法、系统及介质 | |
JP2019164510A (ja) | ストレージシステム及びio処理の制御方法 | |
CN112631743B (zh) | 任务调度方法、装置及存储介质 | |
CN111858011A (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 |