专利名称:管理scsi总线上的再选择的方法和系统的制作方法
技术领域:
本发明一般涉及小型计算机系统接口(SCSI)操作领域,尤其涉及用于管理在一个SCSI总线上的目标对一个启动器的再选择的方法和系统。
在小型计算机系统接口(SCSI)设备的执行中,允许在一个给定时间在两个设备之间通过一个SCSI总线进行信息传输。一个启动器设备(典型的是一个主适配器)引起一个输入/输出(I/O)处理,并且一个目标设备(例如一个盘驱动器)执行由启动器引起的I/O处理。SCSI总线是联接启动器和目标从而完成I/O处理的公共资源。如果启动器和目标各自至少有一个,总线上的SCSI设备可以是启动器和目标的任何组合。可以物理地连接到总线上的SCSI总线的最大数量由执行的数据路径的宽度决定。
可以在一个选择周期或一个再选择周期传输信息。由一个启动器来启动一个启动器选择周期以开始在启动器和所选择的目标之间的I/O处理。有时在一个选择周期可能不完成一个I/O处理。例如,在写操作期间,目标的输入数据缓冲器可能是满的。这时目标可能从SCSI总线断开,并释放该总线供其它传输,而目标则去处理其缓冲器中的信息。再如,在读操作期间,目标可能需要多于一个特定量的时间来搜索以获得信息。另外,目标可能从总线断开,并然后释放总线,而它自己则搜索盘上的一个特定的位置。在任何情况下,当目标准备重新开始I/O处理时,它通过开始一个再选择周期来做到这一点。
选择和再选择周期均通过阶段(phase)来进行。一个仲裁阶段是一种机制,其中确保一个SCSI设备在一个选择周期或一个再选择周期取得对SCSI总线的控制。从一个总线空闲阶段进入仲裁阶段。每个SCSI设备被分配一个SCSI ID。通常一个主适配器被分配最高的SCSI ID。较低优先权的设备被分配较低的SCSI ID。在仲裁阶段期间,每个希望对总线进行控制的设备声明其在总线上的SCSI ID。在仲裁阶段的结束时,每个设备检查数据总线以确定它的ID是否是最高的。如果设备在仲裁中失败,则它将释放所有的信号并等待下一个总线空闲阶段。
在仲裁中获胜的设备继续到下一个阶段并控制SCSI总线直到它释放所有的信号至总线空闲阶段。当一个启动器在仲裁中获胜时,它继续到一个选择阶段以选择它想发送一个I/O处理的目标设备。当一个目标在仲裁中获胜时,它继续到一个再选择阶段以使用一个特定的I/O处理再选择一个启动器。
标签排队协议允许一个启动器发送多个I/O处理给一个目标,并允许目标管理每个I/O处理的完成。发送给一个目标的每个I/O处理占用一个选择周期。在标签排队选择周期,目标在其命令队列中放置一个I/O命令并然后断开。一个启动器可以继续发送I/O处理给该目标,直到它的命令队列满为止。当目标准备执行由其命令队列中的一个命令所指定的I/O处理时,目标试图启动一个再选择周期。每个I/O处理要占用一个或多个再选择周期来完成处理。
当标签排队被使能并且许多I/O处理被发送到一个目标时,或多个启动器和目标被连接到SCSI总线上时,发生总线争用。当一个启动器和目标被同时进行仲裁以确定谁对SCSI总线进行控制时,仲裁中失败的设备必须等待到下一个总线空闲阶段以等待再次仲裁。同时,如果一个特定的目标在仲裁中失败,并且它是启动器所选择的设备,则该目标在可以进行再次仲裁以进行再选择之前必须完成将从启动器接收的I/O处理放到它的队列中的操作。这需要一些时间来将I/O处理进行排队,并开始再次仲裁处理以进行再选择。该延迟时间将降低总线的利用和I/O吞吐量。
本发明提供一种用于管理在一个SCSI总线上的目标对一个启动器的再选择的方法和系统。根据本发明,目标试图在一个第一个再选择周期取得对总线的控制以再选择启动器。如果在第一个再选择周期目标失去对总线的控制,并且该目标在一个选择周期被启动器所选中,则目标首先处理选择周期。但是与处理选择周期同时,几乎立即是在总线成为空闲之后,并且在目标完成处理选择周期之前,目标试图在一个第二再选择周期控制总线以再选择启动器。
如果目标在第二个再选择周期取得对SCSI总线的控制,则该目标暂停该第二再选择周期,直到目标至少部分地处理选择周期。最好是,目标通过保存终端状态寄存器来至少部分地处理选择周期。在目标至少部分地处理选择周期之后,该目标完成第二再选择周期并同时处理选择周期。
本发明的目标包括一个接口控制器,一个可编程排序器,及一个接口处理器。接口控制器物理地与SCSI总线相连接,包括一个再选择状态机。可编程排序器与接口控制器相连接。如果目标被启动器所选中并且一个再选择启动标识符被设置,则几乎立即在总线成为空闲之后可编程排序器被编程以启动再选择状态机。接口处理器与可编程排序器和接口控制器相连。该接口处理器被编程以在一个再选择周期的开始处设置再选择开始标识符以再选择该启动器。
如果目标占用了总线并且设定了再选择开始标识符,可编程排序器被编程以暂停一个再选择周期。该接口处理器被编程,使得如果再选择开始标志被设置,则在接口处理器至少部分处理启动器的选择周期后,设置一个转移再选择标识符。可编程排序器被编程以在接口处理器设置了转移再选择标识符后完成再选择周期。
图1是示出与一个SCSI总线相连的一个主适配器和多个设备的方框图。
图2是一个SCSI接口的方框图。
图3示出一个典型的SCSI选择周期的诸阶段。
图4示出一个典型的SCSI再选择周期的诸阶段。
图5是根据本发明由接口处理器微代码进行的开始再选择处理的流程图。
图6是根据本发明的接口处理器微代码中断处理的流程图。
图7是根据本发明对可编程排序器进行编程的流程图。
现在参照附图,首先参照图1,一个主适配器11和多个设备12与一个SCSI总线13相连。设备12包括I/O设备,例如硬盘,磁带备份,光盘驱动器,打印机和扫描仪。
每个设备12可以作为一个启动器或一个目标操作;设备12典型地作为目标操作,并且主适配器11典型地作为一个启动器操作。一个主适配器11和每个设备12具有其自己的唯一SCSI ID。根据它们的优先权,主适配器11典型地具有最高的SCSI ID并且设备12具有较低的SCSI ID。根据主适配器11和设备12各自的SCSI ID,在仲裁阶段主适配器11和设备12控制对SCSI总线的使用。
现在参考图2,该图示出了SCSI设备的接口部件,在图2中是一个存储设备。本领域的技术人员将能够理解,该存储设备包括其它部件。一个接口控制器14与SCSI总线13物理地连接。接口控制器14包括一个选择状态机15和一个再选择状态机16,它们在选择和再选择周期分别控制SCSI协议。接口控制器14也包括控制寄存器,如17所示。一个可编程排序器18与接口控制器14相连。可编程排序器18与开始状态机15和16相连。可编程排序器18还控制寄存器17。可编程排序器18嵌入SRAM/DRAM19中并被编程,首先用于监视SCSI总线13进行有效选择或再选择。可编程排序器18与一个接口处理器20相连。接口处理器20控制寄存器17并且使可编程排序器18监视何时为某个I/O处理发生一个选择或再选择周期。可编程排序器18可访问接口控制器14和接口处理器20。可编程排序器18在一个选择或再选择周期或阶段完成时中断接口处理器20。可编程排序器18可以由接口处理器20的微代码设置在控制寄存器17中的标识符操作接口控制器14中的状态机15和16。
参考图3,示出了根据本发明的典型的选择周期。一个选择周期从一个仲裁阶段23开始。在仲裁阶段23,每个希望控制总线的设备或主适配器声明它在数据总线上的SCSI ID。在仲裁阶段的结束时,具有最高的ID的设备取胜,并且所有其它的设备释放所有的信号。如果取胜的设备是一个启动器,选择周期前进到一个选择阶段25。如果取胜的设备是一个目标,则系统执行一个再选择周期,该系统执行一个再选择中期,这将参考图4进行描述。
现在仍然参考图3,在选择阶段25,启动器为I/O处理选择一个目标。接着,选择周期前进到一个消息输出(message out)阶段27。根据协议,预定位置“进入”和“输出”相对于启动器。这样,在消息输出阶段27,消息从启动器输出到目标。在根据本发明的标签排队中,消息或诸消息包括用于识别一个特定的排队I/O处理的鉴定、队列类型和队列标记。然后选择周期进入一个命令阶段29,其中目标请求发送命令字节。在目标接收到命令字节后,选择周期进入消息进入(message in)阶段31,其中目标发送一个断开消息。在断开消息执行后,目标释放总线,并且总线进入一个总线空闲阶段33。在总线空闲阶段33,具有I/O处理的目标和启动器可以分别进入一个再选择或选择周期的仲裁阶段。
现在参考图4,该图示出根据本发明的一个典型的再选择周期。一个再选择周期再次以一个仲裁阶段35开始。如果在仲裁中取胜的设备是一个目标,则系统通过进入一个再选择阶段37执行一个再选择周期,目标再选择一个启动器进行一个特定的I/O处理。接着,再选择周期进入消息进入阶段39。在消息进入阶段39,目标将一个消息或多个消息发送给再选择启动器,这些消息消息包括用于识别一个特定的排队I/O处理的鉴定、队列类型和队列标记。接着再选择周期进入数据阶段41,其中I/O数据在目标和启动器之间进行传输。在数据阶段41的结束处,再选择周期进入状态阶段42,其中在目标和启动器之间交换状态信息。然后再选择周期进入一个消息进入阶段45,其中目标发送一个命令完成消息。在命令完成消息之后,目标释放总线并且总线进入一个总线空闲阶段47。
现在参考图5,该图示出在一个再选择周期的开始处理的接口处理器微代码的流程图。如在块49处所示的,当目标准备再选择时,接口处理器微代码设置一个RESEL_START标识符,启动可编程排序器和接口硬件中的选择和再选择状态机,并等待来自于可编程排序器的中断,如块51所示。下面将详细描述RESEL_START标识符被根据本发明的可编程排序器和接口处理器微代码使用的情况。
现在参考图6,示出根据本发明的接口处理器微代码中断处理的流程图。当接口处理器从可编程排序器接收到中断时,在块52接口处理器将中断状态保存在接口状态寄存器中。然后在判定块53,接口控制器判定中断是否是一个命令已接收中断。如果不是,则在判定块55接口处理器微代码检测中断是否是个命令完成中断。如果不是,则在块57中断处理器执行例外处理,并在块59启动排序器等待选择。如果在判定块55中断是一个命令完成中断,则在块61接口处理器处理命令完成中断,处理在块59继续。
现在参考判定块53,如果中断是一个命令已接收中断,则接口处理器在判定块63检测RESEL_START标识符是否被设置。如果是,则目标已经被试图再选择它的启动器所选中,并且接口处理器设置一个GO_RESEL标识符以与完成一个再选择处理相关联。在块65设置了GO_RESEL之后,在块67接口处理器处理新命令,接口处理器在判定块69检测是否设置了RESEL_START标识符。如果是,处理结束,并且在块70接口处理器等待一个命令完成中断。如果未设置RESEL_START标识符,则在块59接口处理器启动排序器等待选择。并且图6处理结束。
现在参考图7,该图示出可编程排序器的操作的流程图。在块71可编程排序器启动接口控制器中的选择和再选择状态机。然后在判定块73可编程排序器检测目标是否在仲裁中获胜。如果是,则在块91可编程排序器清除RESEL_START标识符,完成再选择周期并在块93生成一个命令完成中断,然后处理结束。如果在判定块73,目标在仲裁中失败,则在判定块77可编程排序器检测目标是否被选择。如果不是,可编程排序器处理返回到块71启动选择和再选择状态机。如果目标被选择则在块可编程排序器等待选择周期完成及总线成为空闲的。当总线成为空闲的时候,在块81可编程排序器为接口处理器生成一个命令已接收中断,并在判定块83检测RESEL_START标识符是否被设置。如果不是,可编程排序器处理结束。如果RESEL_START标识符被设置,则在块85可编程排序器启动接口硬件中的选择和再选择状态机。如果在判定块87目标在仲裁中失败,则可编程排序器返回到判定块77。但是如果目标在仲裁中取胜,则如块89所示,可编程排序器暂停可选择周期并等待接口处理器设置GO_RESEL标识符。如参照图6所讨论的那样,暂停可编程排序器允许接口处理器保存状态寄存器。当接口处理器设置GO_RESEL标识符时,在块91可编程排序器清除RESEL_START标识符。然后,在块93,可编程排序器完成再选择周期,并为接口处理器生成一个命令完成中断。
从以上描述可知,根据本发明,当试图再选择一个启动器的目标被那个启动器选中时,在选择周期被完全处理之前,可编程排序器和接口处理器合作启动一个再选择周期。经过这种选择之后,本发明减少了实际上启动再选择的实际时间总量。本发明极大地改善了在高的SCSI总线利用程度下总体的总线使用率,从而提高了系统的吞吐量。
权利要求
1.一种管理SCSI总线上的目标再选择启动器的方法,包括步骤启动一个第一再选择周期的一个仲裁阶段以再选择所述启动器;只要所述目标在所述第一再选择周期的所述第一仲裁阶段失败,并且所述目标被所述启动器所选中等待一个选择周期完成并且所述SCSI总线成为空闲的;几乎在所述SCSI总线已经成为空闲的之后,启动一个第二再选择周期的一个仲裁阶段以再选择所述启动器;如果所述目标在所述第二再选择周期的所述仲裁阶段取胜,则暂停所述第二再选择周期,直到所述目标至少部分地处理所述选择周期并然后完成所述第二再选择周期。
2.根据权利要求1所述的方法,其特征在于所述暂停所述第二再选择周期,直到所述目标至少部分地处理所述选择周期的步骤包括保存中断寄存器状态;并且在完成所述第二再选择周期之前等待并直到所述中断寄存器状态被保存。
3.根据权利要求2所述的方法,其特征在于所述暂停所述第二再选择周期,直到所述目标至少部分地处理所述选择周期的步骤包括当所述中断状态被保存时,设置一个转移再选择标识符;并且当设置了所述转移再选择标识符时,完成所述第二再选择周期。
4.根据权利要求1所述的方法,其特征在于包括步骤几乎在所述第一再选择周期的所述仲裁阶段的开始设置一个再选择开始标识符。
5.一种管理SCSI总线上的目标再选择启动器的方法,包括步骤试图在一个第一再选择周期确保控制所述SCSI总线以再选择所述启动器;如果所述目标在所述第一再选择周期失去对所述SCSI总线的控制,并且所述目标在一个选择周期被所述启动器所选中,则几乎立即在当在所述选择周期结束时所述SCSI总线成为空闲的时候,试图确保在一个第二选择周期控制所述总线,以再选择所述启动器,而所述目标结束所述选择周期的处理。
6.根据权利要求5所述的方法,包括步骤如果所述目标在所述第二再选择周期确保对所述SCSI总线的控制,则暂停所述第二再选择周期,直到所述目标至少部分地完成处理所述选择周期。
7.根据权利要求6所述的方法,包括步骤在所述目标至少部分地完成处理所述选择周期后,结束所述第二再选择周期。
8.根据权利要求6所述的方法,其特征在于至少部分地处理所述选择周期的步骤包括保存中断状态寄存器。
9.一种管理SCSI总线上目标再选择启动器的方法,包括步骤试图在一个第一再选择周期确保控制所述SCSI总线以再选择所述启动器;如果所述目标在所述第一再选择周期失去对所述SCSI总线的控制,并且所述目标在一个选择周期被所述启动器所选中,处理所述选择周期;及几乎立即在当在所述选择周期结束时所述SCSI总线成为空闲的时候,且在所述目标结束处理所述选择周期之前,试图确保在一个第二选择周期控制所述总线,以再选择所述启动器。
10.根据权利要求9所述的方法,包括步骤如果所述目标在所述第二再选择周期确保对所述SCSI总线的控制,则暂停所述第二再选择周期,直到所述目标至少部分地完成处理所述选择周期。
11.根据权利要求10所述的方法,包括步骤在所述目标至少部分地完成处理所述选择周期后,结束所述第二再选择周期。
12.根据权利要求10所述的方法,其特征在于处理所述选择周期的步骤包括保存中断状态寄存器。
13.一种管理SCSI总线上目标再选择启动器的目标系统,所述目标系统包括一个与所述SCSI总线相耦合的接口控制器,所述接口硬件包括一个再选择状态机;一个可编程排序器,与所述接口控制器相连,所述可编程排序器被编程,使得如果所述目标被所述启动器所选择并且一个再选择开始标识符被设置,则几乎立即在所述SCSI总线成为空闲的之后启动所述再选择状态机;一个接口处理器,与所述可编程排序器相连,所述接口处理器被编程,使得在一个再选择周期开始时设置所述再选择开始标识符,以再选择所述启动器。
14.根据权利要求13所述的目标系统,其特征在于所述接口处理器被编程,使得当所述目标被所述启动器选中时处理一个选择周期。
15.根据权利要求14所述的目标系统,其特征在于所述接口处理器被编程,使得当所述接口处理器完成处理所述选择周期时,设置一个转移再选择标识符。
16.根据权利要求15所述的目标系统,其特征在于所述可编程排序器被编程,使得当在所述目标被所述启动器所选中并且所述再选择开始标识符被设置后如果所述目标在一个仲裁阶段取胜,则暂停一个再选择周期。
17.根据权利要求16所述的目标系统,其特征在于所述可编程排序器被编程,使得当所述接口处理器设置所述转移再选择开始标识符时结束所述再选择周期。
18.根据权利要求13所述的目标系统,其特征在于所述可编程排序器被编程,使得在一个选择周期结束时生成一个命令已接收中断,其中在所述选择周期选择所述目标。
19.根据权利要求18所述的目标系统,其特征在于所述接口处理器被编程,使得响应所述命令已接收中断保存中断状态寄存器,并且设置一个转移再选择标识符是指所述再选择开始标识符被设置。
20.根据权利要求19所述的目标系统,其特征在于所述可编程排序器被编程,使得当在所述目标被所述启动器所选中并且所述再选择开始标识符被设置后如果所述目标在一个仲裁阶段取胜,则暂停一个再选择周期,直到所述转移再选择标识符被设置。
全文摘要
一种管理SCSI总线上目标再选择启动器的方法和系统,目标试图在一个第一再选择周期确保控制所述SCSI总线以再选择所述启动器。如果所述目标在所述第一再选择周期失去对所述SCSI总线的控制,并且所述目标在一个选择周期被所述启动器所选中,则目标处理所述选择周期。但是,几乎立即在当在所述选择周期结束时所述SCSI总线成为空闲的时候,且在所述目标结束处理所述选择周期之前,试图确保在一个第二选择周期控制所述总线,以再选择所述启动器。
文档编号G06F13/362GK1298152SQ0013446
公开日2001年6月6日 申请日期2000年12月1日 优先权日1999年12月2日
发明者布赖恩·李.摩格, 路易丝·安.马利尔 申请人:国际商业机器公司