CN106445849B - 一种多控制器中处理有序命令的方法 - Google Patents

一种多控制器中处理有序命令的方法 Download PDF

Info

Publication number
CN106445849B
CN106445849B CN201610918151.4A CN201610918151A CN106445849B CN 106445849 B CN106445849 B CN 106445849B CN 201610918151 A CN201610918151 A CN 201610918151A CN 106445849 B CN106445849 B CN 106445849B
Authority
CN
China
Prior art keywords
command
controller
order
ordered
orderly
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
CN201610918151.4A
Other languages
English (en)
Other versions
CN106445849A (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.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201610918151.4A priority Critical patent/CN106445849B/zh
Publication of CN106445849A publication Critical patent/CN106445849A/zh
Application granted granted Critical
Publication of CN106445849B publication Critical patent/CN106445849B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the program performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0028Serial attached SCSI [SAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种多控制器中处理有序命令的方法,该方法包括:在存储系统中,当一个控制器接收到有序命令Ordered Command时,所述控制器中的事件处理器EM向存储系统中所有的控制器发送请求消息Qr;所述所有的控制器接收请求消息Qr,均继续执行当前的无序命令Unordered Command,执行完毕后向所述事件处理器EM发送反馈消息Qc;当所述事件处理器EM接收到的反馈消息Qc的数量与存储系统中所有控制器的数量一致时,接收到所述有序命令Ordered Command的控制器开始执行所述有序命令Ordered Command。该方法实现在多控制器中完成有序命令Ordered Command的正常执行。

Description

一种多控制器中处理有序命令的方法
技术领域
本发明涉及存储系统技术领域,特别是涉及一种多控制器中处理有序命令的方法。
背景技术
目前,SCSI(Small Computer Systems Interface,小型计算机系统接口)协议规定执行Ordered Command的顺序必须与接收到Ordered Command的顺序一致,因此对于有序命令Ordered Command,只有在保证所有的SCSI Command即SCSI命令执行完毕之后OrderedCommand才能开始执行。现有技术中,在多个控制器中,每个控制器都是各自执行各自的SCSI命令中的无序命令Unordered Command,当一个控制器接收到有序命令OrderedCommand后,仅仅只能考虑自身无序命令Unordered Command是否已完成,不能考虑到其他所有控制器是否都已经执行完Unordered Command命令,因此无法保证所有UnorderedCommand命令执行完毕之后Ordered Command才能开始执行,无法实现在多控制器中完成有序命令Ordered Command的正常执行。
发明内容
本发明的目的是提供一种多控制器中处理有序命令的方法,以实现在多控制器中完成有序命令Ordered Command的正常执行。
为解决上述技术问题,本发明提供一种多控制器中处理有序命令的方法,该方法包括:
在存储系统中,当一个控制器接收到有序命令Ordered Command时,所述控制器中的事件处理器EM向存储系统中所有的控制器发送请求消息Qr;
所述所有的控制器接收请求消息Qr,均继续执行当前的无序命令UnorderedCommand,执行完毕后向所述事件处理器EM发送反馈消息Qc;
当所述事件处理器EM接收到的反馈消息Qc的数量与存储系统中所有控制器的数量一致时,接收到所述有序命令Ordered Command的控制器开始执行所述有序命令OrderedCommand。
优选的,所述所有的控制器接收请求消息Qr之后,还包括:
所述所有的控制器均停止执行新接收到的SCSI命令,并将新接收到的SCSI命令插入到静止队列Quiesce Queue中。
优选的,所述接收到所述有序命令Ordered Command的控制器开始执行所述有序命令Ordered Command之后,还包括:
执行所述有序命令Ordered Command完毕后,所述接收到所述有序命令OrderedCommand的控制器向所述事件处理器EM发送命令完成消息Qd。
优选的,所述接收到所述有序命令Ordered Command的控制器向所述事件处理器EM发送命令完成消息Qd之后,还包括:
所述事件处理器EM将所述命令完成消息Qd发送至所述所有的控制器;
所述所有的控制器开始执行静止队列Quiesce Queue中的命令。
优选的,所述方法还包括:
对于存储系统中每一个控制器,当控制器接收到队列命令头信息时,将所述队列命令头信息插入到静止队列Quiesce Queue的队头。
优选的,所述执行完毕后向所述事件处理器EM发送命令完成消息Qc之后,还包括:
所述所有的控制器均停止执行任何命令。
优选的,所述存储系统中所有的控制器中包括接收到所述有序命令OrderedCommand的控制器。
优选的,所述,存储系统中所有的控制器的个数为至少两个。
本发明所提供的一种多控制器中处理有序命令的方法,在存储系统中,当一个控制器接收到有序命令Ordered Command时,所述控制器中的事件处理器EM向存储系统中所有的控制器发送请求消息Qr;所述所有的控制器接收请求消息Qr,均继续执行当前的无序命令Unordered Command,执行完毕后向所述事件处理器EM发送反馈消息Qc;当所述事件处理器EM接收到的反馈消息Qc的数量与存储系统中所有控制器的数量一致时,接收到所述有序命令Ordered Command的控制器开始执行所述有序命令Ordered Command。可见,在存储系统中,当Qc的数量与存储系统中所有控制器的数量一致时,表示所有控制器执行Unordered Command命令结束,即所有的控制器中的Unordered Command命令执行完毕之后,接收到有序命令Ordered Command的控制器才开始执行有序命令Ordered Command,保证所有Unordered Command命令执行完毕之后Ordered Command才能开始执行,实现在多控制器中完成有序命令Ordered Command的正常执行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明所提供的一种多控制器中处理有序命令的方法的流程图;
图2为Ordered Command命令执行流程图。
具体实施方式
本发明的核心是提供一种多控制器中处理有序命令的方法,以实现在多控制器中完成有序命令Ordered Command的正常执行。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明所提供的一种多控制器中处理有序命令的方法的流程图,该方法包括:
S11:在存储系统中,当一个控制器接收到有序命令Ordered Command时,控制器中的事件处理器EM向存储系统中所有的控制器发送请求消息Qr;
S12:所有的控制器接收请求消息Qr,均继续执行当前的无序命令UnorderedCommand,执行完毕后向事件处理器EM发送反馈消息Qc;
S13:当事件处理器EM接收到的反馈消息Qc的数量与存储系统中所有控制器的数量一致时,接收到有序命令Ordered Command的控制器开始执行有序命令OrderedCommand。
可见,在存储系统中,当Qc的数量与存储系统中所有控制器的数量一致时,表示所有控制器执行Unordered Command命令结束,即所有的控制器中的Unordered Command命令执行完毕之后,接收到有序命令Ordered Command的控制器才开始执行有序命令OrderedCommand,保证所有Unordered Command命令执行完毕之后Ordered Command才能开始执行,实现在多控制器中完成有序命令Ordered Command的正常执行。
基于所述方法,具体的,所有的控制器接收请求消息Qr之后,所有的控制器均停止执行新接收到的SCSI命令,并将新接收到的SCSI命令插入到静止队列Quiesce Queue中。然后所有控制器均继续执行当前的无序命令Unordered Command,执行完毕后向事件处理器EM发送反馈消息Qc。
其中,无序命令Unordered Command为没有顺序的指令,执行过程没有先后顺序。有序命令Ordered Command为有顺序的指令,执行过程有先后顺序。有序命令OrderedCommand应该在所有的无序命令Unordered Command都执行完后再执行。
其中,存储系统中所有的控制器中包括接收到有序命令Ordered Command的控制器。
进一步的,步骤S12中,执行完毕后向事件处理器EM发送反馈消息Qc之后,还包括:所有的控制器均停止执行任何命令。
进一步的,步骤S13中,接收到有序命令Ordered Command的控制器开始执行有序命令Ordered Command之后,还包括:执行所述有序命令Ordered Command完毕后,接收到有序命令Ordered Command的控制器向事件处理器EM发送命令完成消息Qd。
进一步的,接收到有序命令Ordered Command的控制器向事件处理器EM发送命令完成消息Qd之后,事件处理器EM将命令完成消息Qd发送至所有的控制器;所有的控制器开始执行静止队列Quiesce Queue中的命令。
具体的,所述方法还包括:对于存储系统中每一个控制器,当控制器接收到队列命令头信息时,将队列命令头信息插入到静止队列Quiesce Queue的队头。
其中,存储系统中所有的控制器的个数为至少两个。
详细的,每个控制器都有一个EM,用于发送或者接受控制器之间同步的消息,消息包括Quiesce Request,Quiesce Complete,Quiesce Command Done。接收到OrderedCommand之后,所有控制器停止执行新接收到的SCSI Command,并将其插入到QuiesceQueue中,包括Ordered Command和Unordered Command。控制器接收到的Ordered Command,Ordered Command的顺序必须与接收到Ordered Command 的顺序一致,只有在保证所有Unordered Command命令执行完毕之后Ordered Command才能开始执行。
队列命令头信息即为Head Of Queue Command,Head Of Queue Command是一种特殊的Ordered Command,在接收到Head Of Queue Command之后必须将其插入到CommandQueue的队头,以保证其最先执行,即便接收到的下一条命令任然是Head Of QueueCommand,也需要把它插入到队头。每一个控制器需要维护一个命令接收队列QuiesceQueue,即每一个控制器中对应有一个Quiesce Queue。
对于事件处理器Event Manager,简称EM,每个控制器都有一个EM,用于发送或者接受控制器之间同步的消息,消息包括Quiesce Request、Quiesce Complete、QuiesceCommand Done。
对于Quiesce Request消息,该消息为请求消息,具体是静止请求消息,简称Qr,当控制器接受到Ordered Command的时候会发送给EM Qr消息,EM随后将Qr发送到所有控制器。
对于Quiesce Complete消息,该消息为反馈消息,具体是静止完成消息,简称Qc,控制器执行完在执行的Unordered Commad之后向EM发送Qc消息,EM再将Qc消息发送到所有控制器。
对于Quiesce Command Done消息,该消息为命令完成消息,具体为静止命令完成消息,简称Qd,当控制器执行完Ordered Command之后,会向EM发送Qd消息,EM再将Qd发送到所有控制器,控制器在接收到Qd消息之后就可以执行Quiesce Queue队列中的消息。
对于Quiesce Queue队列,接收到Ordered Command之后,所有控制器停止执行新接收到的SCSI Command,并将其插入到Quiesce Queue中,包括Ordered Command和Unordered Command。
对于多控制器存储,主机端可以通过存储的任何一个控制器访问逻辑卷,当任一个控制器接收到Ordered Command的时候,需要保证其他所有控制器在执行完在执行的命令之后停止继续处理下一条命令,这就需要控制器之间有相应的通信协调机制。
具体的,每一个控制器都有一个事件处理器Event Manager(EM),EM负责在控制器之间接收和发送消息,消息包括Quiesce Request,Quiesce Complete,Quiesce CommandDone,控制器根据接收到的消息来执行对应的事件处理函数,以保证Ordered Command的执行顺序。
当一个存储控制器接收到Ordered Command的时候,会发送Qr消息到EM,EM将Qr发送到所有的控制器,包括发出Qr的控制器也会接收到。当接收到Qr之后控制器停止继续执行命令,并将新接收到的SCSI命令插入到Quiesce Queue队列中。此时控制器中会有正在执行的Unordered Command,当控制器中正在执行的unordered command执行完毕之后向EM发送Qc消息,EM在接收到Qc消息之后向所有控制器发送Qc消息,包括所在控制器,每个控制器会记录接收到的Qc消息。当Quiesce Complete消息数量达到系统中所有控制器的数量时,表示所有控制器执行Unordered Command命令结束,接收到Ordered Command的控制器可以执行Ordered Command命令。当Ordered Command命令执行完毕之后,控制器向EM发送Qd消息,EM将此消息发送到所有控制器,包括所在控制器。接收到Qd消息的控制器开始执行Quiesce Queue中的消息。参考图2,图2为Ordered Command执行流程,图中是将控制器A和控制器B的EM抽象为一个单独的EM,实际每个控制器一个EM,Qc1、Qc2均为QuiesceComplete消息,Qd1和Qd2均为Quiesce Command Done消息。
Quiesce Queue中的SCSI命令中包含Ordered Command的时候,会再次执行上述步骤,完成Ordered Command命令。由于主机端发送Ordered Command命令的几率比较小,所以并不会影响到存储控制器的效率。
对于命令接收队列Quiesce Queue,也称为静止队列,在存储端接收到OrderedCommand之后会继续接收主机端发送过来的SCSI命令,所以每一个存储端控制器需要维护一个命令接收队列Quiesce Queue,队列包括Unordered Command和Ordered Command,所有新接收到的SCSI Command都要插入到此队列中。当接收到Head Of Queue Command的时候需要将其插入到Quiesce Queue队列的队头。
综上,本发明所提供的一种多控制器中处理有序命令的方法,在存储系统中,当一个控制器接收到有序命令Ordered Command时,控制器中的事件处理器EM向存储系统中所有的控制器发送请求消息Qr;所有的控制器接收请求消息Qr,均继续执行当前的无序命令Unordered Command,执行完毕后向事件处理器EM发送反馈消息Qc;当事件处理器EM接收到的反馈消息Qc的数量与存储系统中所有控制器的数量一致时,接收到有序命令OrderedCommand的控制器开始执行有序命令Ordered Command。可见,在存储系统中,当Qc的数量与存储系统中所有控制器的数量一致时,表示所有控制器执行Unordered Command命令结束,即所有的控制器中的Unordered Command命令执行完毕之后,接收到有序命令OrderedCommand的控制器才开始执行有序命令Ordered Command,保证所有Unordered Command命令执行完毕之后Ordered Command才能开始执行,实现在多控制器中完成有序命令OrderedCommand的正常执行。
以上对本发明所提供的一种多控制器中处理有序命令的方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (8)

1.一种多控制器中处理有序命令的方法,其特征在于,包括:
在存储系统中,当一个控制器接收到有序命令Ordered Command时,所述控制器中的事件处理器EM向存储系统中所有的控制器发送请求消息Qr;
所述所有的控制器接收请求消息Qr,均继续执行当前的无序命令Unordered Command,执行完毕后向所述事件处理器EM发送反馈消息Qc;
当所述事件处理器EM接收到的反馈消息Qc的数量与存储系统中所有控制器的数量一致时,接收到所述有序命令Ordered Command的控制器开始执行所述有序命令OrderedCommand。
2.如权利要求1所述的方法,其特征在于,所述所有的控制器接收请求消息Qr之后,还包括:
所述所有的控制器均停止执行新接收到的SCSI命令,并将新接收到的SCSI命令插入到静止队列Quiesce Queue中。
3.如权利要求2所述的方法,其特征在于,所述接收到所述有序命令Ordered Command的控制器开始执行所述有序命令Ordered Command之后,还包括:
执行所述有序命令Ordered Command完毕后,所述接收到所述有序命令OrderedCommand的控制器向所述事件处理器EM发送命令完成消息Qd。
4.如权利要求3所述的方法,其特征在于,所述接收到所述有序命令Ordered Command的控制器向所述事件处理器EM发送命令完成消息Qd之后,还包括:
所述事件处理器EM将所述命令完成消息Qd发送至所述所有的控制器;
所述所有的控制器开始执行静止队列Quiesce Queue中的命令。
5.如权利要求4所述的方法,其特征在于,还包括:
对于存储系统中每一个控制器,当控制器接收到队列命令头信息时,将所述队列命令头信息插入到静止队列Quiesce Queue的队头。
6.如权利要求1所述的方法,其特征在于,所述执行完毕后向所述事件处理器EM发送命令完成消息Qc之后,还包括:
所述所有的控制器均停止执行任何命令。
7.如权利要求1所述的方法,其特征在于,所述存储系统中所有的控制器中包括接收到所述有序命令Ordered Command的控制器。
8.如权利要求1至7中任意一项所述的方法,其特征在于,所述存储系统中所有的控制器的个数为至少两个。
CN201610918151.4A 2016-10-21 2016-10-21 一种多控制器中处理有序命令的方法 Active CN106445849B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610918151.4A CN106445849B (zh) 2016-10-21 2016-10-21 一种多控制器中处理有序命令的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610918151.4A CN106445849B (zh) 2016-10-21 2016-10-21 一种多控制器中处理有序命令的方法

Publications (2)

Publication Number Publication Date
CN106445849A CN106445849A (zh) 2017-02-22
CN106445849B true CN106445849B (zh) 2019-05-28

Family

ID=58176544

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610918151.4A Active CN106445849B (zh) 2016-10-21 2016-10-21 一种多控制器中处理有序命令的方法

Country Status (1)

Country Link
CN (1) CN106445849B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101208675A (zh) * 2005-06-29 2008-06-25 英特尔公司 帧序处理装置、系统和方法
CN105183568A (zh) * 2015-08-19 2015-12-23 山东超越数控电子有限公司 一种存储双控制器间scsi命令同步机制

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090094385A1 (en) * 2007-10-08 2009-04-09 Freking Ronald E Techniques for Handling Commands in an Ordered Command Stream
US9558143B2 (en) * 2014-05-09 2017-01-31 Micron Technology, Inc. Interconnect systems and methods using hybrid memory cube links to send packetized data over different endpoints of a data handling device
US9594713B2 (en) * 2014-09-12 2017-03-14 Qualcomm Incorporated Bridging strongly ordered write transactions to devices in weakly ordered domains, and related apparatuses, methods, and computer-readable media

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101208675A (zh) * 2005-06-29 2008-06-25 英特尔公司 帧序处理装置、系统和方法
CN105183568A (zh) * 2015-08-19 2015-12-23 山东超越数控电子有限公司 一种存储双控制器间scsi命令同步机制

Also Published As

Publication number Publication date
CN106445849A (zh) 2017-02-22

Similar Documents

Publication Publication Date Title
CN101946244B (zh) 降低保留设备的访问竞争的方法和设备
US9110843B2 (en) Rack and method thereof for simultaneously updating basic input output systems
US10067793B2 (en) Data processing method and apparatus for executing task code using reservation instruction and release instruction
CN106569891B (zh) 一种存储系统中任务调度执行的方法和装置
CN104601668B (zh) 基于状态管理的数据推送方法、装置和系统
EP2600249A2 (en) Storage device, controller, and program
CN103809502B (zh) 控制器及记录介质
US10013367B2 (en) I/O processing system including dynamic missing interrupt and input/output detection
US10268521B2 (en) Electronic system with data exchange mechanism and method of operation thereof
CN106445849B (zh) 一种多控制器中处理有序命令的方法
JP2006285810A5 (zh)
KR102781592B1 (ko) 다중 명령어 큐 스토리지에서 순서 보장 단위를 정하는 방법 및 장치
US10678744B2 (en) Method and system for lockless interprocessor communication
US20170010839A1 (en) Storage system, storage control method, and computer system
CN105242915B (zh) 一种数据操作的处理方法及装置
CN108170377A (zh) 一种支持磁带库多驱动并发写的备份方法
CN111061474B (zh) 一种Lamda编程装置及其数据处理方法
RU2714219C1 (ru) Способ и система для планирования передачи операций ввода/вывода
JP2014197346A (ja) コントローラおよびプログラム
CN107590088B (zh) 一种dma读操作的处理方法、系统及相关装置
KR20160076148A (ko) 가상 머신 환경에서의 입출력 방법
CN120606405B (zh) 一种电子器件的插拔方法、系统、设备、介质和程序产品
CN110471388A (zh) 管理纺织设备的通讯方法和纺织设备
KR101947221B1 (ko) 가상 클러스터 구동 시간 스케줄링 방법 및 장치
US20170366371A1 (en) Communication device setting apparatus

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