计算系统的命令传递的制作方法

文档序号:6405851阅读:273来源:国知局
专利名称:计算系统的命令传递的制作方法
技术领域
本发明属于计算系统领域,特别是以命令传递机制为其目标。明确地说,本发明的目标是从个人计算机一类机器向一组可以带有附加设备的智能子系统传递命令。
本发明中参考了序号 ,申请日 ,其题目是“计算系统的中断处理”,的美国专利申请。该项申请已转让给本专利申请的受让人,它指述的中断处理机制可以被用于本项申请中的命令传递系统。
在一个由主系统及至少一个子系统构成的数据处理系统或计算系统中,通常需要经过输入/输出(I/O)通被将直接命令和间接命令传送给一个单个的子系统。
直接命令(direct command)是指能够在一次操作中直接送给一个子系统的命令,它是完全独立和完整的,完整地指定了要由子系统完成的一个操作。与此相反,一个间接命令(indirect command)为了指定一个操作所需要的数据量超过了一个I/O通道周期所能提供的数据量。间接命令本身是一个指向系统存贮器中一块(block)的指针(Pointer),这一块中包含了要完整地指定由子系统完成的一个操作所需要的全部参数。这一个存贮块常被称作“控制块(Control block)”。
在所有的计算机系统中,都至少存在一个I/O指令(instruction),它使主系统中运行的程序能够通过外部接口或通道发送数据和/或命令。每次I/O操作所能发送的数据量以及从通道或子系统收到的与接收或完成操作有关的状态都是取决于系统的。
“系列/1操作原理”(IBM出版物号GA34-0152-0)描述了属于IBM系列/1的那一类计算机中的操作,每个I/O操作把下述信息传送给安装在系列/1 I/O通道中的外部设备附加插件(1)命令所指向的子系统的地址。
(2)一个8位(bit)命令字段,用于指出该操作是直接的或是间接的。
(3)一个18位数据字,它或者包含了关于一个直接命令的数据,或者在间接命令情况下的一个设备控制块(DCB)的地址。
此外,在通道上执行每个I/O指令周期期间,还通过各种指示代码表示出状态,记录下代表I/O操作状态的状态代码。这种立即反映的实时的状态指示使主程序能够确定该命令是否被子系统成功地接收,或者是否出现误操作,例如“设备未联接”或“立即命令拒绝”在出错情况下,主程序能够在稍后再送入这个命令。
因为系列/1子系统能够立即接收或拒绝一个I/O命令,所以不需要使用优先中断或其他机制来向主程序报告立即状态。
为了保证整个系统的完整性,总是必须有一种机制来报告一个I/O命令是否为子系统接收去执行。主系统不能假定一个命令被子系统成功地接受,因为有很多种失败方式(mode of failure),它们不能被检侧出来,因而也不能被修复。
现代化计算系统中使用的I/O子系统的复杂性不断增长,这表明在个人计算机一类机器上也需要有复杂的命令。
根据本发明,这种需要是这样满足的提供一种以子系统控制块(SCB)的形式在主系统和一组子系统之间传送命令的机制。不象在系列/1中那样用一个独特的处理器指令来传递地址段和命令类型段,而是把这些字段提供给一个单一端口,称作“引起注意端口”(attention port)“,以适应于一般以Intel 80286/386/486为基础的处理器系统中当前使用的指令集。值得称道的是,本发明的实际应用中可以使用以其它处理器为基础的系统。
再有,如在系列/1类型机器中那样,在个人计算机类机器中不存在用于报告经I/O通道传送直接或间接命令时的立即状态的机制。
为满足这一需要,在每个子系统内部提供了一个“命令忙/状态端口(Command Busy/status Port)”,由它提供前一个I/O操作的状态以及子系统的当前状态。这个端口可以由主程序使用一个I/O读命令来读出,而该命令不会修改或更新该端口中的状态。只有指向子系统内其它端口的输出(写)命令才会影响“命令忙/状态端口”的状态。
本发明的一个目的是为计算系统提供一种命令传递机制。
本发明的又一目的是提供一种计算系统,其中的一个系统向至少一个可能带有附加设备的子系统提供直接或间接命令。
本发明的一个目的是提供一种计算系统,其中的主处理器向至少一个可能带有附加设备的子系统提供一个立即命令(immediate Command)或子系统控制块(SCB)地址,于是子系统执行这个立即命令或者取回SCB供下一步去执行。
本发明的再一个目的是提供一种计算系统。其中一个命令接口(Command interface)在主处理器和至少一个智能子系统之间传送信息,该能子系统可能带有一组附加设备。这个命令接口包括一个“命令接口端口”和一个“引起注意端口”,命令接口端口接收一个立即命令或者存储在系统存储器中的SCB的地址,而引起注意端口接收来自主处理器的代码,它指出在命令接口端口接收的是立即命令还是SCB地址,它还指出是该智能子系统还是一个设备要去执行这一命令。一个初始命令和一个初始代码分别被锁存在命令接口端口和引起注意端口,这样,在初始命令被处理之前,下一个命令和代码便不能够重写各自的端口。
本发明还有一个目的是提供一个计算系统,其中的命令接口在主处理器和至少一个可能带有附加设备的智能子系统之间传送信息。该命令接口包括命令接口端口、引起注意端口和命令忙/状态端口。命令接口端口接收一个立即命令或存贮在系统存贮器中的SCB的地址。引起注意端口接收来自主处理器的代码,指出在命令接口端口接收的是立即命令还是SCB地址,还指出是该智能子系统还是一个设备要执行该命令。命令忙/状态端口接收来自一个子系统的代码,指出命令接口端口和引起注意端口是否处于智状态,还指出该智能子系统是否是在接收或拒绝命令。这个端口能由主处理器读出而不改变或更新该端口状态。
本发明还有一个目的是提供一种计算系统,其中的命令接口在主处理器和至少一个可能带有附加设备的智能子系统之间传送信息。该命令接口包括一个命令接口端口和一个引起注意端口。命令接口端口接收一个立即命令或存贮在系统存贮器中的SCB的地址。引起注意端口接收来自主处理器的代码,指出在命令接口端口接收的是立即命令还是SCB地址,还指出是该智能子系统还是一个设备要去执行这一命令。SCB命令可以按一种特定的顺序链接,并作为一个逻辑请求(logical request)来处理。SCB命令的链接使智能子系统接收和执行这些命令时不必引起与主处理器操作的过多的交接(interfacing)。对一个具体的命令,还可能有多个数据缓存器的链接。缓存器的链接是用间接表(indirectlist)来构成的。每个SCB包含一个“终止状态块(Ter-mjnation Status Block)”(TSB)在系统存贮器中的地址,正在处理SCB的那个子系统把SCB的完成或终止状态存贮到TSB之中。
本发明的目标是一个命令接口,它包括若干端口用于在主处理器和至少一个可能带有附加设备的智能子系统之间传送信息。一个命令接口端口接收来自主处理器的一个直接命令或一个间接命令,这里所说的直接命令包含了一个智能子系统要立即执行该命令所必需的全部信息,而间接命令是一个子系统控制块(SCB)的地址,该子系统控制块存贮在主处理器中系统存贮器的一个可寻地区间。一个引起注意端口接收来自主处理器的代码,代码的第一部分指出在命令接口端口所接收的是直接命令还是间接命令,代码的第二部分指出是这个智能子系统还是一个附加设备要去执行这一命令,一个命令忙/状态端口包含可由主处理器读出的信息,这些信息反映了要下一步执行命令的子系统或其附加设备是立即接收了还是拒绝了一个命令。根据写在引起注意端口的代码的第二部分,由一个智能子系统或所附加的设备来直接执行一个直接命令,如果是一个间接命令,该智能子系统便按照所指出的SCB地址直接访问系统存贮器。然后该智能子系统或一个设备去完成由被访问的SCB所指定的操作。


图1是一个计算系统的框图,该系统包括一个主系统联接一组智能子系统,每个子系统又可能联接一组设备;
图2的框图给出主系统和一个智能子系统的详细情况;
图3是在主系统和一个智能子系统之间交换信息的命令接口的框图;
图4是给出引起注意端口详细情况的框图;
图5是给出命令忙/状态端口详细情况的框图;
图6具体说明了用于立即命令的命令接口端口与引起注意端口的(信息)一般格式;
图7具体说明了用于子系统控制块(SCB)的命令接口端口和引起注意端口的(信息)一般格式;
图8具体说明了用于本发明的计算系统中的控制块SCB的详细格式;
图9给出一个详细的扩展SCB格式;
图10给出详细的SCB终止状态块(TSB)格式;
图11给出详细的扩展TSB格式;
图12是计算系统的框图,详细给出系统存贮器中的SCB格式;
图13是在提供命令期间子系统状态变换过程的状态图;
图14是本发明的命令传递系统的流程图;
图15A、15B和15C放在一起示于图15,图15和图16是写子系统控制端口过程的详细流程图,它的概况已示于图1410;
图17A和18B一起放在图18中,给出写引起注意端口过程的详细流程图,它的概况已示于图14;
图19是写接口端口过程的详细流程图,它的概况已示于图14;
图20A和20B合起来作为图20,图21A和21B合起来作为图21,它们给出命令译码处理的详细流程图。
本发明的总体目标是为主计算机系统中运行的程序提供一个命令传递系统。直接或间接命令经由命令接口传递给至少一个可能带有一组附加设备的智能子系统。为便于描述,把本发明置于在IBM个人系统/2(PS/2)计算机上运行的程序所使用的命令传递系统范围内来描述。个人系统2(Personal System 2)和PS/2各为IBM公司的注册商标。直接命令(诸如立即命令)和间接命令(诸如存贮在PS/2系统存贮器中的子系统控制块的地址)经由IBM微通道(Micro Channel(微通道)是IBM公司的注册商标)传送给一个智能子系统的命令接口,这个子系统可能有一组附加设备,例如磁带驱动器、磁盘驱动器、打印机、通讯设备和显示设备等等。然而,值得称道的是,本发明可以在其它主计算机系统中实现,经由接口网络把命令传递给智能子系统。
定义了一种子系统控制块(SCB)结构,它提供了主处理器和具有存贮器直接存取(DMA)能力以及处理命令级操作能力的子系统之间的一个控制块级接口。一个SCB内包含了一个单个命令。而命令链接可以把一个SCB指向一个或多个其它SCB的地址,而把这个链作为一个逻辑命令来处理。还有伴随一个给定命令的多个缓存器的数据链接。用一个间接表(indirect list)来构成这种缓存器链。
一个SCB包含系统存贮器中一个终止状态块(TSB)的地址址,由处理命令的子系统把给定SCB的完成或终止状态放到TSB中。为了能在命令链中的任何一点处理终止操作,对链中的每个SCSCB都定义了一个TSB。
在下面对命令传递系统做一般性描述之后,将详细描述SCB和TSB。
现在参考图1,它是根据本发明绘出的一个计算系统的总体框。一个主计算机系统100通过总线结构110与一组智能子系统102、104、106和108交换信息。总线结构110把主计算机系统100的通道112与每个子系统的一个接口(例如子系统102中的接口114)连接起来。子系统104、106、108的每一个都与子系统102相似。总线结构包括一个用于交换控制信号的控制总线116、交换数据信号用的数据总线118以及交换地址的地址总线120。
图2给出系统100和子系统102的细节,其它子系统的构成方式与子系统102相似。
主系统100包括一个系统处理器组合或主处理器122,它经由总线126与系统存贮器124相连。系统处理器组合122与一个个人计算机类微处理器组成,例如所提到的PS/2,由微通道126连到系统存贮器124上。PS/2和微通道的操作在“PS/2硬件接口技术参考书”(IBM出版序号68X-2330-0)描述。存贮器124可由主处理器122访问,也可由子系统102通过存贮器直接存取(OMA)访问。
子系统102包含一个附加器(attachmend)或适配器,它包括一个与微通道126相连的微通道接口。该接口包含一组输入/输出(I/O)端口,它们的详细情况将由参考图3来描述,这个接口使系统主处理器能直接向子系统发出命令和接受来自系统的回答。这些端口可以被映射(map)到系统存贮器空间或I/O空间。这个接口还向微通道提供适配器所需要的主控和/或受控功能。
命令包括直接(或立即)命令(如系统存贮器124中的子系统控制块(SCB)的地址)。SCB传递支持逻辑130把SCB命令提供给一个本机微处理器132,例如Intel 80188类微处理器(其操作在“Intel微处理器和外围设备手册”中描述)在那里处理该SCB命令。SCB传递逻辑130还把本机处理器中断提供给处理器132中的中断逻辑134。图17-23中给出了详细的流程图来解释包含在SCB传递逻辑130和微处理器132中的命令处理器和译码处理器功能。
微处理器132响应SCB命令,通过附加设备接口146(例如,它可以是小型计算机系统接口(SCSI))对附加设备136138、140和142的各项任务安排时间顺序。对SCSI接口操作的描述见“信息系统美国国家标准研究所(ANSI)-小型计算机系统接口(SCSI)”,其出版号为ANSI×3.131-1986。附加设备可以是磁盘驱动器、磁带驱动器、直接存贮器存取设备(DASD)、打印机、显示器以及其他类似设备。设备D(O)136用于把命令指向子系统。智能子系统136和设备13138、140、142的每一个都被主处理器看作是一个逻辑设备对每一个都指定一个设备标识号,分别为D(0)、D(1)、D(2)和D(3)、这些设备便借助这些标识号被访问。
图3给出微通道接口128的I/O端口。定义为控制一个子系统的端口必须按如下顺序分配在I/O地址空间中(1)命令接口端口148。
(2)引起注意端口150。
(3)子系统控制端口152。
(4)中断状态端口154。
(5)命令状态/忙端口156。
这些端口能映射到系统存贮器地址空间而不放在I/O地址空间但为了便于描述,所以选择了I/O地址空间。因此,在本文中使用“OUT(输出)”或“IN(输入)”命令的地方,如果各端口被映射到系统存贮器空间,则应该用“系统写”或“系统读”命令代替替。
命令接口端口148也可以称作命令端口,它是一个“子系统读/系统写”寄存器,这个32位寄存器用于把一个双字(32位)指示(Direct)从系统传送到子系统。该双字指示可以是一个立即命令或者一个间接命令(如SCB地址)。该立即命令或SCB指定了要由子系统完成的操作。
系统程序把一个立即命令或一个SCB地址写入命令接口端口1148,然后去写引起注意端口150。子系统在命令忙/状态端口156写入“忙(busy)”位。当系统已经写入引起注意端口1150时,便通过中断134向本机级处理器132发出了信号(图2)。子系统响应中断,读引起注意端口和命令接口端口,然后确定要完成的操作的类型,以及命令指向的设备,子系统或者将按命令接口端口提供的地址去取出SCB,或者执行立即命令。
引起注意端口150是一个“子系统读/系统写”寄存器。这个8位或16位寄存器由系统程序用于要求子系统注意去完成一个命令令。寄存器中的各位指出所要求的动作及相应的设备号。换句话说,引起注意端口接收的代码有两部分,第一部分指出在命令接口端口148接收的是立即命令还是SCB地址,第二部分指出是子系统还是一个附加设备要去完成在命令接口端口148所接收的命令。当引起注意端口150由系统写入时,在命令忙/状态端口156中的“忙”位立即由子系统置1。这个“忙”位将一直保持置位,直到子系统读出注意请求(attention request)及相应的命令接口端口内容,并确定了它能否接受此命令时为止。在“忙”位为零时,子系统必须在任何时候都能接收新的命令。“忙”位也将保持置位直到子系统完成“子系统复位”时为止。
现在参考图4来说明引起注意端口(AP)的详细情况。主处理器具有对AP的读/写访问。当对AP进行“系统软件写(SSW)”或(系统软件读(SSR)”操作时,微通道I/O地址必须等于“建立(set up)”微通道来选定子系统时赋予AP的值。
AP在AP寄存器143的输入端接收8位引起注意命令141。当“与(AND)”门153为有效(active)时。输入的引起注意命令被记录在寄存器143中,其引起注意命令被提供给寄存器输出端157。每当门153有效时,便在线155上提供一个“置AP中断(SET-AP-INTRPT”信号。这个信号是对子系统本机处理器的一个中断,通知它已经由主处理器向AP写入了一个命令。每当门153失效时,引起注意命令便不能被记录寄存器143,因而被子系统忽略。
有4个输入端来控制门153是否有“1”输出。用正号(+)代表正逻辑输入,用负号(-)代表负逻辑输入。线145上的第一输入是一个+MC-AP-SEL信号,当它为1时,指出AP的微通道地址有效,而且主处理器已选定了该子系统的AP。在线147上的第二输入是一个+SSW-REG-CLK信号,当它为1时,指出对于这个子系统I/O地址空间其微通道I/O写是有效的。第三和第四个信号是由命令忙/状态端口(CBSP)提供的。在线149上的第三信号是一个-CDSP-BITO-2B信号,它是一个“忙”位(B)信号。由于它是一个负逻辑信号,当B为零时线149上的信号为1,当B为1时线149上的信号是零。线151上的第四输入是一个-CBSP-BIT4-(REJ)信号,它是拒绝(REJ)信号。由于这是一个负逻辑信号,当REJ为零时在线151上的信号为1,而当REJ为1时在线151上的信号为零可以看到,每当线145、147、149和151均为1时,线141上的引起注意命令便被记入寄存器143,而线155上的SSET-AP-INTRPT信号便通知本机处理器在AP上已写入了一个命令。反之,如果这些线上有任意个为零,则门153提供一个零输出,它禁止把命令写入AP寄存器143。具体地说,如果BBusy(忙)位或REG位有任一个为1,则对AP寄存器143的命令写被封锁。
子系统控制端口152是一个子系统读/系统写寄存器。这是一个8位读/写端口,它提供了对子系统范围内几个功能的直接硬件控制。在这个端口包括的各位用于控制子系统和全部附加设备的复位,允许或不允许子系统向主处理器呈现物理中断,子系统DMA允许/不允许功能,以及使命令被拒绝因而没有被子系统执行时所引起的错误复位的功能。子系统控制端口152的格式和功能示于图3中的位0-7,其功能如下位O-EI-使子系统允许中断。这一位置1时允许子系统向系统发出物理中断。当子系统被接通电源或由“子系统复位”命令使子系统复位时,EI位被初始化成零。当EI位为零时,子系统不允许物理中断,不允许向主处理器发送一个物理中断。这一位保持不变,直到由发给该端口的“OUT(输出)”命令或子系统复位命令来明确复位时为止。
位1-DMA-允许DMA。当这一位置零时,不允许子系统起动任何DMA操作。当置该位为零时,便把该子系统置于这样的状态态它不能执行任何SCB命令或存贮任何SCB逻辑中断状态((TSB)。当子系统接通电源时,这一位被置零。当执行“子系统复位”操作时这一位被复位为零。这一位保持置位,直到被发给该端口的“OUT”命令或“子系统复位”来明确复位为止。(DMA位预定作为硬件查错的手段,它也可以用作强迫子系统停止微通道活动的手段。)位2和位3-S.D.-子系统独立。该端口的位2和位3被保留用于子系统的独立功能。
位4和位6-R-保留位。位4和位6被保留而且必须置零。
位5-RR-拒绝(状态)复位。当主处理器置这一位置为1,而同时子系统又处于拒绝(Reject)状态时,通过对RR位置“通(ON)”(也就是置4)将清除拒绝状态。当拒绝状态被清除时,在“命令忙状态”中的“忙”(B)位和拒绝(RET)位被置零。如果子系统不是处于拒绝状态,那么对RR写入1时会引起效应。当子系统接通电源或被子系统复位操作来复位时,RR位被置成零。这一位的设置将保持不变,直到由特定的“OUT”命令发到该端口或由子系统复位操作才明确地收该位复位。对RR位写入零不会影响子系统的内部状态。
位7-RST-子系统复位,这一位用于提供一个由硬件控制的子系统及其附加的全部设备的复位。当该位被置1时,子系统进入复位未决状态(Reset Pending State),并对命令忙状态端口中的忙位(B)置1。在子系统上的全部设备的活动均被停止。程序必须在子系统指定的时间周期内对RST写入一个零。如果在复位未决状态时RST位从1转换到零值便把子系统放到“进行置位状态(Reset in Progress State)”。在这一状态,子系统完成对它本身及它的所有附加设备的复位。当复位完成时,“忙”位将置零,并将申请主处理器中断。
中断状态端口154是一个系统读/子系统写寄存器、这个8位或16位寄存器被子系统用于向程序呈送中断数据。在这一端口呈送的中断有立即命令中断、SCB命令带有严重硬件失效中断、无任何SCB命令中断以及SCB命令中断。在伴随每个SCB的终止状态块(TSB)区域提供了附加的SCB完成状态指示。TSB的功能在下文中描述。在ISP被系统软件明确复位之前,任何新的中断都不能通过ISP呈交给系统。
这个用于中断状态端口154的8位寄存器的构成示于图3,其各个位的定义如下位7-4-中断标识码(Interrupt ID)。这些位以一个数字编码,用以识别提交的中断的原因。程序借助检查TSB状态能够得到有关SCB中断的更多信息。
位3-0-设备地址。这是引起所提出的中断的设备地址。
16位中断状态端口(未画出)的格式如下位15-12-中断标识码。这些位以一个数字编码,用以识别提交的中断的原因。程序借助检查TSB状态能够得到有关SCB中断的更多信息。
位11-0-设备地址,这是引起所提出中断的设备地址。
命令忙/状态端口156是一个子系统写/系统读寄存器。这个8位端口有两个功能第一,在每个命令被提交之前必须由系统读这个端口,以确定先前提交的命令的状态。在提交一个命令之后,程序必须允许子系统有一个规定的延迟时间段,然后再试图读此端口来获得命令状态。
第二、该端口指出子系统是否有一个有效的中断值呈交给中断状态端口ISP154。除非命令忙/状态端口指出所呈交的是有效值即IV(中断有效标志)为1,这个ISP不应被程序读出。
命令忙状态端口156的格式和功能如下位O-B-忙位。这一位指出当前命令接口和引起注意端口是否被使用。当忙(B)位为1时,程序不应该试图向子系统写入命令或引起注意端口。如果子系统处于下述状态,则忙位(B)为1复位未决(Reset Pending),复位正在进行、拒绝、或译码(下文将解释这些状态)。如果主程序在忙位(B)为1的情况下去写引起注意端口和/或命令端口,那些向这些端口写的企图被子系统所忽略,而且最新的试图执行的命令被子系统忽略而不给出任何出错指示。
当子系统进入如下状态时这一位置1复位未决、复位正在进行拒绝或译码。当子系统控制端口的RST位置1时,该子系统进入复位未决状态。如果子系统处于复位未决状态,而子系统控制端口的RRST位被置零,那么子系统便进入“复位正在进行”状态。当向设备O(即子系统本身)发出一个“设备复位命令”时,该子系统也进入“复位正在进行”状态。
当子系统完成了子系统复位命令后退出“复位正在进行”状态之后,忙位被置零。
当程序利用写引起注意端口而提交一个新命令时,如果该子系统又不处于复位未决、复位已在进行或译码状态,那么该子系统便进入译码状态。当子系统接收一个命令而退出译码状态时,忙位也被置零当在译码状态被处理的命令遭到拒绝时,子系统退出译码状态而进入拒绝状态。在拒绝状态,拒绝位(REJ)和忙位(B)均被置1,状态位S将指出该命令被子系统拒绝的原因。当子系统进入复位未决状态时,拒绝状态或译码状态便被清除掉。
位1-IV-中断有效,在子系统向该子系统的中断状态端口((ISP)写入一个中断值之后,这一位便被置1。当IV为零时,ISP中不包含一个有效的中断值。当IV为1时,读ISP将给出一个有效的中断标识(ID)和设备号。
位2-保留位3-保留位4-REJ位,当子系统决定拒绝经由命令接口端口和引起注意端口提交的一个命令时,这一位将被置1。于是子系统退出译码状态而进入拒绝状态。在命令忙状态端口的状态(S)位将包含一个编码值,用以指出命令被拒绝的原因。当子系统接受了提交给它的命令而退出译码状态时,在命令忙状态端口的拒绝(REJ)位和忙(B)位都被置零。
当子系统处于拒绝状态时,程序不能靠向命令端口或引起注意端口写入来提交新的命令。这些写的企图均被忽略,而这些端口继续保持被拒绝的命令的那些值。当子系统处于拒绝态时,拒绝(REJ)位和忙(B)位都被子系统置1。
对子系统控制端口的RST位置1可以便子系统脱离拒绝状态,这时执行了一个硬件控制的子系统复位;或者可以对子系统控制端口的RR位置1,这时发出一个硬件控制的“清除拒绝状态(Reset Reject)”。使用RR位是清除拒绝状态的通常方法。当子系统脱离拒绝状态之后,拒绝(REJ)位和忙(B)位都被子系统置零。
位5-7-状态位。当通过引起注意端口提交的命令在译码状态被拒绝之后,便在命令忙/状态端口置入一个三位编码值。于是子系统退出译码状态并进入拒绝状态,其拒绝(REJ)位和忙(B)位等于1。除非REJ位为1,否则状态(S)的各位之值是没有定义的,因而应该由主程序忽略。
S位的编码值是S=000被保留S=001“得不到设备,因而拒绝”。当子系统能够确定一个设备的功能不足以执行这个命令时,便出现这一状态。对于“设备复位”和“子系统复位”命令不能产生这一状态。这一状态可以被这两个命令之一来清除。
S=010无效命令。当子系统不能认出引起注意端口的引起注意代码,或者在命令端口提交的一个立即命令的0至7位指定的立即命令代码无效的时候,便出现这一状态。
S=011设备忙。当设备忙于执行一个命令而不能在此时接受一个新命令时,便出现这一状态。“对“设备复位”和“子系统复位”命令不能产生这一状态。
S=100设备拒绝执行SCB。当程序发出“挂起”命令,从而把设备置于不允许执行任何SCB命令的状态时,便出现这一情况。这一状态可由“恢复(Resume)”、“设备复位”或“子系统复位”命令来清除。
S=101设备地址无效。当系统在引起注意端口放入一个无效的、不存在的设备号时便出现这一状态。如果引起注意端口是8位宽的,则表明位3至位0包含一个无效的设备号。对于16位宽的引起注意端口,则是位11至位0包含了一个无效设备号。
S=110被保留。
S=111设备中断排队满。设备为那些尚未存入子系统中断状态端口的那些中断保持了供中断排队用的内部存贮器。当设备已经把这些内部存贮器全部用完时,便出现这一状态。如果处于这一状态,那么除了“设备复位”、“子系统复位”和“由清除中断”命令之外,所有其它命令都将被该设备拒绝。一旦该设备能够从它的中断排队向子系统中断状态端口写入数据。该设备的这一状态便被清除。
现在参考图5,它详细说明了命令忙/状态端口(CBSP)156的各个位是怎样产生的。
忙位(B),即CBSP-BITO-(B)(CBSP的第0位),是由S/R寄存器302与极性(PH)寄存器300的寄存器组合来来实现的。如果忙位是零或者是无效的(inactive)那少由如下三个特定动作之一能把它置成1。
1.如果在线314上的微通道CHRESET信号为1,那么在或(OR)门310的输出便为1,它被提供给寄存器302的置位(S)输入端,这样便把寄存器302置为1,它被加到寄存器3300的D输入端。来自反向器312的反向MC_AP_SEL信号被加到寄存器300的计时(C)输入端,于是其输出端+CBSP-BITO-(B),即忙位(B),被置成1。
2、如果系统程序对子程序控制端口(SCP)的位7写入一个1,其表现是在线316上的+SCP-BIT7(RST)信号为1,“或”门310的输出变为1,于是如上述第一项动作那样,寄存器302、300以及忙位(B)都被置1。
3、如果由软件向AP“写”,则在线304上的信号+MC-AP-SEL及线306上的信号+SSW-REG-CLK都成为1,从而使“与”门308的输出为1。来自门308的这个1使““或”门310输出为1,于是如上述第一项和第二项动作那样,寄存器302、300以及忙位(B)都被置1。
如果忙位(B)是1,那么它可以由下述两种方式之一来清掉,即置成零。
1、由系统程序向子系统控制端口(SCP)的位5(RR)写入1,便清除了忙位(B)。这也同时清掉拒绝(REJ)位(见下述)。当SCP中的RR位为1时,线328上的信号+PIC-SSCP-SEL、线326上的信号+IC-BUS-RCVR-BBIT5信号以及线306上的+SSW-REG-CIK信号都变为1,于是在“与/或”门318的输出端产生一个1。这个1被加到寄存器302的“复位”(R)位,它的输出变成零,这个零又加到寄存器300的D输入端。此时在线304上的信号+MC-AP-SEL为零,这个零由反向器312变换成1。这个1被加到寄存器300的C输入端,而在D输入端此时记入的是零,因此是寄存器300为零。当寄存器300被置零时,忙位(B),即输出信号+CBSP-BITO-(B)变为零。
2、在命令处理器从译码状态退出而进入“接受(Accept)”状态之后,忙位(B)也由子系统清掉,子系统的局部处理器对CBSP的位,写入一个零。在线320上的信号-IC-BVS-BITO、线322上的信号+LP-CBSP-SEL以及线324上的信号+LPW-REG-CLK都变为1,于是在“与/或”门318的输出端产生一个1。这使寄存器302和寄存器300被置成零,与前述情况相同,当寄存器300被置零时,忙位(B)变为零。
如果系统把SSCP位7写成1,即指出子系统正在进行子系统复位,当子系统已完成子系统复位时,忙位(B)将被子系统复位。假定忙位为ON(即置为1)而且子系统先处于译码状态然后进入拒绝状态。这时将由拒绝位(CBSP位4)经过SCP中的“拒绝复位”位5以如下方式来使忙位复位系统把1写入SCP的位5(RR)位置。一旦由子系统检测到了向SCP的写入,线326(IC-BUS-RCVR-BIT5)即变为有效,线328(M(MC-SCP-SEL)和线306(SSW-REG-CLK)也变为有效。这些线处于有效状态使门318开启(ON),从而使寄存器302复位为“关闭(OFF)”。寄存器302变为OFF的同时反向器312变为ON,如前所述,便使寄存器300复位为OFF,置忙位(B)为OFF。
CBSP REJ位(4)和CBSP状态位(5,6,7)分别由寄存器330和332代表。当子系统已进入拒绝状态,CBSP位4便被置1,而CBSP的位5,6,7(状态)被置成拒绝代码。当线334、332和324为有效时,S/R寄存器被置成1。这是由线334、332和324使“与”门336变成OON,它又置S/R寄存器330为ON,使REJ位变成ON。把状态代码置于线326、336和338,使寄存器332的状态位被置成ON。线322和324为有效时使“与”门340变成ON从而使寄存器332的C输入端变为有效,于是状态代码被记入寄存器332。
每当“或”门346为ON时拒绝(REJ)位便被置成OFF当线326(CHRSET)为有效,或线316(RST)为有效或“与”门342为ON,都会使“或”门346为ON,如果线326和线328和线306都为有效,则“与”门342为ON。这表示系统已把“拒绝复位”位5(SCP)置成1,使子系统从拒绝状态解脱出来。
CBSP-BIT1-IV是作为S/R寄存器348的输出来实现的。每当“与”门350为ON,寄存器348便被置1。如果线322和324和352均为有效的,则“与”门350变为ON。当子系统向中断状态端口(ISP)写入之后,IV位被置1。
主处理器读出IV位,作为由子系统要求的微通道中断的结果;或者可以用IV位来登记(p·ll)要求中断的子系统。在主处理器已读出ISP而且主中断处理器已处理了中断之后,主处理器经由引起注意端口向子系统发出清除中断注意代码(1110h)命令。
每当“或”门354为ON时S/R寄存器348被置成OFF如果线314(CHRESET)或线316(CORESET)或“与”门356或“与”门358为ON,则“或”门354变为OON。
如果在线360、362、364和366上的IC-BUS-RCVR-位(7-4)分别由引起注意端口位7-4置成二进位值“0000”(立即设备复位),而且线304和306为有效,则“与”门356为ON。
如果线338、336、326和366上的IC-BUS-RRCVR位(7-4)为置成2进位值“1110”(中断复位),而且线304和306为有效,则“与”门358变为ON。
CBSP保留(R)位由寄存器368代表。当线370和372,IC-BUS-Bits(位)(2,3)为有效时,两个数据(D)输入端被置位。当“与”门374为ON时这些位被记入寄存器368。当线322和324为ON时,“与”门374为ON。
命令接口端口和引起注意端口使用的格式取决于主系统向子系统提供的是立即命令还是SCB命令。
立即命令主要是指向设位的而且是控制定向的。参照图6来看一看由160指出的命令接口端口的一般格式以及由162、164和166分别指出的在引起注意端口三种类型立即命令的代码。如果一个命令是指向一个设备的,那么设备在执行该立即命令之前要确认接收了完整的命令。为确定命令类型,要检验引起注意端口的位7至位4。如果接受的是设备复位命令型,则代码如162处所指出的那样如果接受了一个立即命令(命令型),则代码如164处指出的那样;如果接受的是中断复位(EOI)命令型,则代码如166处指出的那样。
命令接口端口的位7-0指定了操代码,如160处所指出的那样。当接受命令时,设备使命令忙/状态端口(图中未画出)的忙位置位。在执行子系统复位命令时,子系统必须使端口保持忙状态,直至完成了复位为止。
对于立即命令,其命令接口端口的定义如下IC位8-指定立即命令格式。IC位8用于指定所使用的立即命令格式类型。“如果IC位8=1”,则该立即命令的格式定义为类型1。
IC位31-16-保留(在发出命令之前由软件置成零)。“如果IC位8=0”,则立即命令格式定义为类型2。
“如果IC位8=0”,IC位8用于指定使用的是立即命令格式类型2。
下文中将说明按位不同的定义。
IC位31-16-依赖于OP代码IC位15-使不能命令中断。如果位15=0,则在完成立即命令后中断并在中断状态端口(ISP)报告状态。如果位15=1,则在立即命令完成时不中断,除非出现了错误,某些命令忽略这一指示。
IC位14-使不能设备中断。如果位14=0,则能使系统为指定设备中断。如果位14=1,则使系统能为指定设备中断。
IC位13-9-依赖于OP代码位。这些位允许修改命令字段,当前,位13和12用于设备复位命令。位12-9用于立即清除SSCB中断命令来指定要清除的中断号。
IC位7-0-立即命令代码。它们的编码如下位7654321000000000 -立即设备复位00000001 -保留00000010 -空操作(no-op)00000011 -保留00000100 -中断状态端口复位00000101 -保留00000110 -保留00000111 -保留00001000 -SCB中断清除00001001 -保留
00001010 -保留00001011 -保留00001100 -取决于设备00001101 -取决于设备00001110 -取决于设备00001111 -取决于设备00010000 -保留00010001 -保留00010010 -运行立即诊断00010011 -取决于设备00010100 -保留00010101 -保留00010110 -保留00010111 -取决于设备00011000 -保留00011001 -保留00011010 -保留00011011 -保留00011100 -保留00011101 -保留00011110 -保留00011111 -挂起00100000 -恢复在发出命令之前,要由系统软件使所有被保留位置零。位0-7的所有其它编码都是被保留的。
参照图7,来看一看对于SCB命令在168处指出的命令接口端口一般格式及在170处指出的引起注意端口的一般格式。命令接口端口包含了SCB的起始地址。这个起始地址是一个物理地址,它必须处在双字边界。为起动SCB注意请求(SCB attention request),引起注意端口的格式在170处指出。
如前面所说明的,间接命令包含在SCB内。多个SCB可以按指定顺序链接并被当作一个逻辑请求来处理。数据缓存区可以用一个间接表(indirect list)来链接。在处理一个请求时如果出现错误,这个结构还能够用于处理复杂的状态信息。状态信息放在终止状态块(TSB)中。为了能在命令链中的任何一点处理终止,在链中为每个SCB定义了一个TSB。
对于一个SCB配置,有两个细节不同的形态。它们称作基本格式(见图8)和扩展格式(见图9)。扩展格式是由基本格式在其末端增加若干字段构成的。这些字段的简要定义及所使用的简称如下1.命令字用于定义正在被传递的SCB命令类型。这个字有三个字段。
-OP代码-包含该SCB命令的8位操作码。
-A-一位指示位,指明该SCB包含的命令代码是有结构的(architected)还是无结构的(unarchitected)。所展示的格式适用于有结构的和无结构的两种命令代码。
-保留段2.使能字(enable word)
SCB中的各字段允许用于多种由命令指定的操作。使能字包含若干字段,用以指出SCR中的这些字段对该命令的用途。它还有一些指示位,用以定义要使用的回答指示的类型。
-CH-如果无错误则链接到下一个SCB(下一个SCB的地址是在链地址的1字段)。
-COND CH-位1指出在由位2、3和4定义的某些条件下链接的SCB的地址在链地址2之中。
-A1-指出这个命令使用地址1来指向一个缓存区还是指向一个间接表(它有一组指向各缓存区的指针)(具体用途由该命令规定)。
-A2-指出这个命令使用地址2来指向一个缓存区还是指向一个间接表(它有一组指向各缓存区的指针)(具体用途由该命令规定)。
-I-当命令完成而无差错时清除中断。
-EXT-指出该SCB有扩展格式。
-R-保留-SES-删除异常短(Suppress Exception Short)、(当读入数据少于所提供的缓存区时)。
-SEL-删除异常长(Suppress Exception Long)(当从一个设备读入的数据超过该命令所提供的缓存区大小时)。
-PT-指出该命令使用一个间接表指向一个缓存区链(数据链起用命令)。
-TSB-指出只有在出错时才去存贮TSB状态。
3.使能字2
当使用扩展格式时,位于扩展段的使能字2当中提供了附加指针。这些指针是-PT2-指出地址2指向一个间接表(表长度由字节计数1给出)-DEC1-指出存贮器地址1应该被减量而不是被增量。
-DEC2-指出存贮器地址2应该被减量而不是被增量。
4.地址1它包含32位地址,指向数据缓存区或间接表。其使用由该命令规定。一个使能字指针(PT)指出正在使用的是哪一种地址形式。
5.地址2它包含32位地址,指向数据缓存区或间接表。其使用由该命令规定,一个使能字指针(PT2)指出正在使用的是哪一种地址形式式。
6.字节计数1包含一个四字节计数,它规定了由地址1或地址2中的地址所指示的缓存区或间接表的长度。
7.字节计数2包含一个四字节计数,它规定了由地址2中的地址向指示的缓存区或间接表的长度。这一字段位于扩展部。
8.TSB地址包含一个伴随该SCB的32位地址。
9.链地址1在使用命令链接的请求中,用来指向下一个SCB。
10.链地址2
当条件链接所要求的条件被满足时,用来指向一个SCB。
11.链接标识符包含该链的16位标识符。该值对一个链请求中的所有SCB都是相同的。
12.扩展长度除了在中断状态端口154中的有错/无错指示外,本发明还提供了对SCB链中的每个命令要由子系统向计算机报告的详细状态信息。这是在终止状态块(TSB)中报告的。每个SCB包括系统存贮器中的一个TSB地址,子系统向该地址指示的位置写入该SCB的完成或终止状态。TSB的基本格式示于图10,而其扩展格式示于图11。当对基本格式加上扩展部分时,用于指出依赖于设备的信息长度的计数在TSB中的位置改变了。
下面是在基本TSB格式和扩展TSB中使用的各字段的简要定义1.结束状态字该字包含若干个指针,它们确定了与指向该TSB的那个SCB中所包含的命令的执行情况有关的具体状态信息。
-D-指出“请求被正确完成”。
-SES-指出“短长度”-伴随SCB使能字中的SES指针。
-R-保留-SC-指示对SCB进行规格检查,SCB无效。
-SEL-指出“长长度”-伴随SCB使能字中的SEL控制。
-HLD-指出SCB命令链被停止了。
-INT-指出逻辑中断请求。
-ASA-指出可得到结构状态。
-DSA-指出可得到取决于设备的状态(使用ASA和DSA共同指出是扩展格式)。
-DO-指出设备运行过量(over run)。
-INI-指出设备未初始化。
-ERR-指出已发生了主要错误。
-CD-指出链接方向(遵循正常链还是条件链)。
-SUS-指出对SCB挂起的命令完成了。
-ES-指出使用了扩展状态。
2.扩展结束状态这个字有增加的状态指针。当前只有一个指针被纳入结构。
-CT-指出命令类型(SCB或立即命令)3.剩余缓存区计数这是一个4字节计数,包含由剩余缓存区地址所指示的缓存区中剩余字节数。
4.剩余缓存区地址这是在“请求”终止时使用的缓存区的32位地址。它可能是由这最后一个SCB给出的地址1或地址2缓存区地址,也可能是由这最后一个SCB中的地址1或地址2指向的一个间接表中的一个地址。其具体意义由命令指定。
5.剩余缓存区计数2这是一个4字节计数(在TSB扩展部中),包含由剩余缓存区地址2所指示的缓存区的剩余字节数。
6、剩余缓存区地址2这是在“请求”终止时使用的缓存区的32位地址(在TSB扩展部中)。它可能是由该最后一个SCB给出的地址2缓存区地址,也可能是由该最后一个SCB中的地址2指向的一个间接表中的一个地址。它是在一个命令使用二个地址时使用的。
7.与设备有关的状态信息区尺度(SIZE OF DEVICE DEPENDENT AREA)除了一组纳入结构的状态外,还采取措施提供更多的信息。这些附加信息量取决于使用的是基本格式还是扩展格式。这一字段在基本格式和扩展格式中的位置不同。附加信息是与子系统有关的。
8.与设备有关的(状态信息)数据这一信息区包含了与设备有关的状态信息。这一信息区的最大尺度取决于使用哪一种格式。
使用刚才描述的SCB格式的本发明的计算系统的详细情况显示于图12。如前面描述的那样,主系统200与至少一个智能子系统通道总线结构(如微通道204)交换信息。
主系统200中的系统程序206经过线210在系统存贮器2208中建立各SCB块。在下列资料中描述了系统程序的操作“PS/2 BIOS接口技术参考书”(IBM出版物号68×-2341-00”;“IBM PS/2操作系统指南”(IBN出版物号为GG24-3225-0)。如前文所述,一个SCB格式提供了缓存区地址、链地址和TSB地址。在分页存贮器系统中,SCB、缓存区地址、链地址及TSB地址都是被操作系统“钉(pinned)”在系统存贮器中的。就是说,有一段系统存贮器为此目的而被锁住。为便于描述,图中给出一个SCB 212,它包括一个TSB 214、一个指向数据缓存区218和220的间接表216以及指向SCB 222的链地址。需要理解,根据图8-11所示的格式,在系统存贮器208中可以格式化一组类似的SSCB。
子系统202与图2中的子系统102相似,其唯一差别是子系统202显示得更详细些,以便于描述命令的传递。子系统202包括一个总线接口和控制单元228,它有一个命令传递逻辑230和总线控制器(bus master)232;子系统202还包括一个带有中断(I)逻辑236的本机(local)微处理器234本机存贮器238、以及设备接口和控制逻辑240,它与一组设备242、244、246及248相连。
下面先参照图12来概括描述命令处理系统,它包括命令处理器和译码过程。然后再参照图19-25以流程图形式详细描述其功能能。
系统程序读出命令忙/状态端口(图中未画)以确认引起注意端口和命令接口端口空闭。系统程序206通过命令接口端口(未画出出)向总线接口与控制单元228的命令传递逻辑230提供一个SSCB的地址,通过线250向引起注意端口(未画出)提供命令类型和要执行命令的设备。
作为译码处理的一部分,该命令要被进行有效性检验进而被接受或被拒绝。假定该命令被接受了,则子系统把该状态写入命令忙/状态端口(图中未画出),并指向要执行的命令。
子系统利用总线控制器232中的总线控制功能启动微通道204上的总线周期。此时系统存贮器是一个受控微通道存贮器(Mrcro Channel memory slave),其微通道控制和地址线均由总线控制器232来驱动。系统存贮器驱动微通道数据总线线,而总线控制器功能把SCB(一个或多个)传送给子系统的本机存贮器238。一旦子系统接受了一个SCB,在微处理器中运行的程序便对命令译码并把它指向指令的设备。这个程序操作将参考图119-25中的流程图来详细解释。为完成传送,要把缓存区地址装入总线控制器232。
具体地说,一旦SCB地址被译码,该地址便被提供给系统存贮器208,而SCB被取到子系统202。例如,如果SCB212要被寻址,则总线控制器232以SCB地址来启动地址线252,同时通过线254将SCB的第一部分返回。在对地址增量之后再重复这一过程,直到整个SCB被取完为止。对要处理的数据的访问(access)是通过地址线256和258实现的,它们指向由间接表216指定的数据缓存区218和220。数据经线260和262从缓存区218和220返回。然后,总线控制器232按照引起注意端口(未画出)中的命令第二部分的规定,经接口240将数据传送给本机存贮器238或者设备之一,SCB的完成或终止状态经线264和266存贮于TSB214中,其状态数据经线268和270提供给TSB214。
SCB212指向SCB222,它经由线272寻址,而SCB222经线274返回信息。来自缓存区226的要处理的数据经由地址线256来访问,经线262将数据返回总线控制器232,然后总线控制器232经接口240(如前所述)将数据传送给本机存贮器238或设备之一。SCB222的完成或终止状态经由线2264寻址存贮于TSB224,其状态数据经线268提供给TSB224。
子系统202还把SCB或SCB链的中断状态装入中断状态端口(未画出),它经由线264向主系统提供了一个物理中断返回((back)。
在给出命令处理系统的流程图描述之前,先作一般性描述,以便使图19-25的流程图中使用的术语更易于理解。
提交命令方法与命令类型本发明规定了两种向子系统传递命令的方法。某些子系统范围内的硬件规定功能可由硬件控制来调用,这个硬件控制可借助子系统控制端口中的程序修改位来访问。硬件控制提供了改变子系统状态的一种快速高优先级方式,以这种方式提出的子系统复位命令的优先级超过把数据写入命令端口和引起注意端口而提交给子系统的所有其它命令。
利用发给子系统控制端口的OUT(输出)命令和修改某些规定位,可启动硬件控制。
对于RR、DMA以及EI位的修改不能由某些具体命令来说明但这些位对子系统也具有子系统范围内的效用它们将在下文中的“主处理器试图设置I/O端口的结果”一节以及图14中的表中概要地描述。
通过写命令端口和引起注意端口来提交的命令归于两大类间接命令(以SCB为基础)和直接命令。由引起注意请求代码3来区分以SCB为基础的命令。在SCB命令情况下,命令接口端口包含SCB起点的实际存贮器地址。直接命令有三种类型,由唯一的引起注意代码设置来决定。所有的直接命令在命令端口中有一个32位的值,它与引起注意代码一起定义了要由子系统完成的动作。提供了两个引起注意代码0(复位)和E(中断复位),以便能在具有引起注意代码“01h”的其他直接命令之上来对这些命令进行特殊情况处理。有时把直接命令用术语“立即命令”来描述,以指出命令端口中包含的32位值完全定义了必须完成的操作。这与SCB命令相反,SCB命令必须从命令端口给出的系统存贮器地址中取出来,以确定要完成的动作。
在体系结构中定义了一个为1的引起注意代码F(与设备有关的注意(device dependent attention)。提供引起注意代码F是为了使一个实际应用能为希望最优化的命令提供特殊情况处理。
提交命令过程中的子系统状态转换。
这一节中定义使用硬件控制或通过引起注意端口提交一个命令值所发生的那些状态变换与动作。在图13中的状态转换图里提供了这些资料。当子系统处于译码状态时,它对所提交命令的接受或拒绝将在下文中“命令处理与译码过程”一节中详细讨论,它对译码过程给出了更多的细节,并在附表2,3中提供了一套决策表,说明命令是这样被译码过程接受或拒绝的。
下述状态是为提交命令转换中的应用而定义的,关于子系统状态和译码过程的更多细节可参见有关“命令处理与译码过程的讨论。
子系统状态
1、“接受命令”或ACCEPT。
子系统处于能够接受经命令端口和引起注意端口提交的命令的状态,在这一状态,在命令忙/状态端口中的拒绝位和忙位双双为零。
主处理器的引起注意端口写入将使子系统脱离这一状态而进入““进行译码”状态,在这一状态将决定该命令将是否被接受。
2、“子系统复位未决开始”或PENDS。
子系统控制端口的RST位已被主程序置1,而子系统已开始了对它的微处理器进行硬件控制的复位。在这一状态期间,主处理器对命令端口和引起注意端口的写入被忽略。子系统控制端口的由主系统写入的各位被忽略,而RST位不被忽略。当完成了硬件复位,子系统进入“子系统复位过程完成”状态。
当在这一状态时,命令忙/状态端口的忙(B)位为1,拒绝位(R)为零。
3、“子系统复位未决完成”或PENDC,此时子系统已经完成了它的微处理器的硬件控制复位,正在等待主处理器向子系统控制端口的RST位写入一个零位。在这一状态时主处理器向命令端口和引起注意端口的写入均被忽略。但允许主处理器向子系统控制端口写写。向子系统控制端口的RST位写入零将使子系统进入“子系统复位正在进行”状态。
在这一状态,命令忙/状态端口的忙位(B)为1,而拒绝位(R)为零。
某种实施方案中也许不能区分“复位未决开始”与“复位未决完成”两个状态的差别,因而可能只有一个“复位未决”状态,在这种情况下,如果对RST位置零将把子系统从未决状态转换到“复位正在进行”状态。
4、“子系统复位正在进行”或RESETS子系统控制端口的RST位已经置零,在“子系统复位未决开始始”状态之后经过了一段由具体实际系统所决定的延迟时间,便进入这一状态。一旦进入这一状态,子系统便完成了它对子系统的复位。当子系统处于这一状态时,主处理器被允许去修改子系统控制端口的内容。主处理器向命令端口和引起注意端口的写入均被忽略。
在这一状态的命令忙/状态端口的忙位是1,而拒绝位是零。
一旦子系统复位完成了,子系统便进入“接受命令”状态。这时命令忙/状态端口的忙位和拒绝位均是零。这时IV位置1,以指出ISP中包含有完成的子系统复位的中断值。
5、“子系统拒绝”或REJECT经过命令端口和引起注意端口提交的命令以被译码过程拒绝。在拒绝状态被清除之前,不会通过命令端口和引起注意端口再接收任何命令。当在这一状态时,主处理器向命令端口与引起注意端口的写入被忽略。而主处理器向子系统控制端口写入是允许的。命令忙/状态端口将使拒绝位和忙位都是成1。在命令忙/状态端口的S位将给出命令被译码过程拒绝的理由。
当子系统控制端口的RR位被置1,或者由硬件控制的子系统复位来置子系统控制端口的RSP位为1,可以使子系统退出拒绝状态态。
6、“译码在进行”或DECODE当检测到主处理器向引起注意端口写入时,子系统便从接受命令状态进入这一状态。在这一状态子系统决定它将是否接收该命令。
当子系统进入这一状态,命令忙/状态端口的忙位便被置1,而拒绝位被置零。当在这一状态时主处理器向命令端口和引起注意端口的写入被忽略。主系统向子系统控制端口的写入除了改变RST位之外也被忽略。
如果译码过程接受了该命令,子系统进入“接受命令”状态。如果命令未被接受执行,则子系统进入“拒绝”状态。
各个动作是a、主处理器向子系统控制端口RST位写入1,或者说RST=1。
主处理器向子系统控制端口发出“OUT(输出)”命令,使RST位之值置1。
b、主处理器向子系统控制端口RST位写入零,或者说RST=0。
主处理器向子系统控制端口发出“OUT”命令,使RST位之值置零。
c、主处理器向引起注意端口写,或者说W/AP。
主处理器以一个OUT命令向引起注意端口写。
d、主处理器对子系统控制端口RR位写入1,或者说RR=1。
主处理器向子系统控制端口发出“OUT”命令,使RR位之值置1。
e、“复位未决完成”,或PEND COMPLETE。
子系统已经完成了对它的微处理器复位动作以及允许它等待完成子系统复位所需要的任何其它动作。
f、“子系统复位完成”或RESET COMPLETE。子系统已经完成了子系统复位动作。
g、“译码接受命令”或DECODE ACCEPT。
子系统译码过程已经接受了通过命令端口和引起注意端口提交的命令。
h、“译码拒绝命令”或DECODE REJECT。
子系统译码过程已经拒绝了通过命令端口和引起注意端口提交的命令。
在图13的状态图中以这些状态和动作定义了各状态的转换。
主处理器试图置I/O端口的结果在图14的决策表中,概括了子系统处于不同状态时主处理器试图置I/O端口的结果。各状态是在图12中的状态图里所使用的那些,其中SSCP的意义是“子系统控制端口”。
对图14中表的注释所作的解释1、系统把RSP置1,使子系统处于“复位未决开始”状态。
2、如果RST被置1,则在子系统控制端口中的所有其他位均被子系统置1,这是进入“复位未决开始”状态的一部分。
3、当子系统处于“接受命令”状态时,系统对引起注意端口写把子系统带入“译码”状态。
4、当子系统处在“复位未决完成”状态时,系统对RST置零把子系统放入“复位正在进行”状态。
5、当子系统处于“拒绝”状态时,若系统置RR为1则把子系统置于“接受命令”状态,除非置RR的输出(OUT)命令也置RST为1。如果RST被置1,则RR的改变被忽略,于是子系统被置于“复位未决开始”状态。当子系统处于“拒绝”状态时,RR被置零将不会清除“拒绝”状态。
命令处理和译码处理过程这一节中关于命令处理部分的讨论集中于译码过程。与译码过程中的接受命令有关的决策表示于图15、与译码过程中的拒绝命令有关的决策表示于图16、17和18。
需要存在一个硬件控制的处理,子系统用它来监视主处理器对命令,引起注意及子系统控制三个端口的写入。这个处理称作命令处理器,它对写子系统控制端口的RST位这一类动作的反应是调用硬件控制来对子系统复位。命令处理器还负责调用一个在硬件或固件(firmnare)中的一个处理过程,子系统用它来确定是否接受一个经引起注意和命令端口提交的命令。当子系统处于“接受命令令”状态并检测到一个主处理器对引起注意端口的写入时,命令处理器便调用这一处理过程。命令处理器把子系统放在“译码”状态,并调用“译码处理过程”来决定它是否能接受这个新提交的命令。当当处于译码状态时,命令处理器还负责保证主处理器通过写命令端口或引起注意端口来试图提交的新命令被锁存起来。命令处理器还响应主程序对子系统控制器的写入,保证子系统在任何状态都允许由主程序来改变RST位。正是这一功能使来自主处理器的硬件控制的“子系统复位”命令能被接受。根据子系统的状态,命令处理器还允许进行其他硬件控制。
由于译码处理过程有确定子系统是否能接受一个指向设备的命令的任务,需要注意下列各类数据*命令类型,命令的引起注意代码决定了一个命令将被如何处理。命令被分成如下各类设备复位、中断复位、SCB、立即命令。如果一个实际应用系统中支持“依赖设备的注意(Device Dependent Attention)”,它将根据该实际应用的规定,列入SCB类或立即命令类。不被支持的引起注意代码被译码处理过程所拒绝,这些不是SCB命令的无效命令注意代码被称作直接命令。
*设备号。命令指向的设备包含在引起注意端口。为了确定命令指向哪一个设备,故需要这个数据。译码处理过程还利用这个数据来设备状态信息,它使子系统确定这个新命令是否能被接受或拒绝。无效设备地址会使命令被拒绝。
*命令代码,当处理直接命令时,该命令的位0-7中的8位命令代码被检验,以确认命令代码。不能辨认的8位立即命令代码会使命令作为无效命令被拒绝。
*设备状态,这是设备的当前状态,它规定了在给定的当前设备状态下该命令能否被接受。本发明定义了一组状态,并指出了在一个给定状态下一个命令是否可以被接受。这一数据将在下文中的“译码处理过程决策表”中详细陈述。
当译码处理过程决定接受一个命令时,它需要保证设备状态被更新以表明接受了新命令,还要使该设备定时开始执行新命令。译码处理过程还必须保证命令处理器把子系统从译码状态脱出并进入“接受命令”状态。本发明并不坚持要求设备状态复位及新命令定时要在译码处理过程中完成,但认为是这种情况在概念上较为简单。
译码过程必须使所要求的新命令被安排好预定时间以便在所要求的设备上执行,认识到这一点也很重要。“安排预定时间(scheduled)”这个词用于“设备O复位”以外的所有其它命令,因为子系统处理器周期的使用需要在其它设备正在完成的各任务之间分。在“设备零复位”的情况下,这是一个特殊情况,因为这一动作产生一个由软件调用的子系统复位,并要求子系统当前为其它设备安排的所有活动全部停止。
当一个命令被告知已经接受时,是命令处理器把命令忙/状态端口置位,从而使忙位和拒绝位都被置0。
当译码过程拒绝一个命令时,命令处理器便得到拒绝的理由。子系统从译码状态过渡到拒绝状态。在命令忙/状态端口的忙位和拒绝位被置1。在拒绝位被置1的同时,该端口的S位被设置,使其包含的代码值指出命令被拒绝的原因。
在完成译码处理过程时,若干目标得到了满足*被译码处理过程接受的立即命令将不会在以后要求拒绝命令中断。除非有硬件故障,否则该立即命令由译码处理过程接受之后将正确地执行。
*任何由于当前设备状态的原因而不能被执行的命令都尽可能快地被拒绝而不引起子系统中断。拒绝状态和拒绝理由被保持下来共主程序使用,直至明确地清除掉时为止。
*“设备复位”之类的特殊引起注意代码尽可能快地被安排执行行。
*SCB命令被安排时间取出。译码处理过程不检查SCB中字段值的有效性。
对于当各种命令呈交给一个设备时该设备如何作出反应的描述都定义在“译码处理过程决策表”中的一组决策表里,对它将作简要讨论。作为总概括,这些规则可描述如下1.硬件控制的子系统复位总会被子系统接受。
2.子系统处于下列状态时,指向引起注意端口的命令将被忽略略译码在进行、子系统拒绝、子系统复位在进行、子系统复位未决开始、或子系统复位未决完成。
3.即使一个设备正忙于执行其它命令,该设备也将接受“设备复位”命令。对这条规则有三个例外。
-在引起注意端口指定的设备号无效。
-在位0-7中的8位立即命令代码不等于零。
一个系统处于上述第二款所规定的状态之一,就是说,它忽略靠试图写入引起注意端口所提交的任何命令。
4.当一个设备正忙于执行一个命令,它将以设备忙代码拒绝一个新命令,但下列情况例外-新命令是“设备复位”。
-设备在忙于执行一个SCB,而该新命令是“挂起”的。(这种情况下,在设备被置于“以不能执行SCB”状态之前允许完成正在执行的SCB。一个“挂起”总是使该设备中被执行的最后一个SSCB请求中断。)-设备在忙于执行一个SCB,而新命令是“SCB中断复位”。(当前执行的SCB立即停止,转而执行SCB中断复位功能。被停止的SCB允许继续执行。)5.当设备的中断排队满时,它将拒绝一个新命令,除非有下列情况-设备复位
-中断复位(SCB或“立即的”)-子系统复位(硬件或软件控制的)6、当一个设备没有忙于执行一个命令时,如果该设备已经被置于“因先前挂起的命令而不能执行SCB”的状态时,它将拒绝一个SSCB命令。
7、如果设备处于不能可靠地执行命令的状态时,它将拒绝所有命令,除非是-设备复位-子系统复位(硬件或软件控制)-如果在引起注意端口的设备地址无效,该命令被拒绝。
译码处理过程决策表译码处理过程的结构规定了进行拒绝检验的顺序,因此当存在多种拒绝理由时,它会指出要给定的是那一个拒绝理由。这一点在下表中给出译码处理过程步骤步骤1-检查引起注意代码和命令的有效性。拒绝代码=010拒绝原因不可识别的注意代码 无效注意代码引起注意复位代码(00) 无效8位立即命令代码中断注意复位代码(OE) 无效8位立即命令代码立即命令注意代码(01) 无效8位立即命令代码步骤2-检查“引起注意端口给出的设备有效”的有效性。拒绝代码=101拒绝理由设备复位 在引起注意端口的设备号无效SCB或与设备有关的 在引起注意端口的设备号无效注意码作为SCB立即挂起、恢复空操作 在引起注意端口的设备号无效(NOOP)立即诊断 在引起注意端口的设备号无效中断状态端口复位 在引起注意端口的设备号无效SCB中断复位 在引起注意端口的设备号无效与设备有关的注意码作 在引起注意端口的设备号无效为非SCB立即命令 在引起注意端口的设备号无效步骤3-检验“设备处于可得到状态”的有效性拒绝代码=001拒绝理由SCB或与设备有关的 设备处于不可得到状态注意码作为SCB立即、挂起、恢复空操 设备处于不可得到状态作立即诊断 设备处于不可得到状态SCB中断复位 设备处于不可得到状态中断复位 设备处于不可得到状态状态端口 设备处于不可得到状态与设备有关的注意码作 设备处于不可得到状态为非SCB
立即命令 设备处于不可得到状态(上述任何一个)步骤4-检验“设备非忙”的有效性拒绝代码=011拒绝原因SCB或与设备有关的 设备忙注意码作为SCB立即、恢复、空操作 设备忙立即诊断中断状态端口复位 设备忙设备中断复位、挂起 设备忙,(没有在执行SCB)与设备有关的注意码作 设备忙为非SCB立即命令(非上述任何 设备忙一个)步骤5-检查“设备中断排队未满”的有效性拒绝代码=111拒绝理由SCB或与设备有关的 中断排队满注意码作为SCB恢复、挂起、立即空操 中断排队满作立即诊断 中断排队满与设备有关的注意作为 中断排队满非SCB立即命令(非上述任何 中断排队满一个)步骤6-检查“使能执行SCB”的有效性拒绝代码=100拒绝理由SCB或与设备有关的 由挂起使不能执行SCB注意码作为SCB首先由于规定了详细的设备和子系统状态,然后又有一套决策表从而使译码结构体系被完全地确定了。
子系统及设备状态定义子系统有如下状态组分*子系统执行状态有ACCEPT,PENDS,PENDC,RESETS,REJECT,DECODE。这些状态确定了该子系统是否能接受一个新命令或硬件控制。
*“可得到”状态,确定该子系统是否已进入了可以预料它能可靠地执行命令的状态。如果它的值是YES(是),该子系统是可得到的,若为NO(否),则该子系统为不能得到的。
*使能DMA,这一状态指出该子系统是否允许DMA活动,为YES或NO。当不允许DMA活动时,对于该子系统便不允许取出SCB命令、存贮TSB状态,或按SCB命令传送数据。这一状态相应于子系统控制端口中的DMA位。
*使能中断。这一状态指出该子系统能否在一个命令要求中断时向主处理器发出一个物理中断。它相应于子系统控制端口中的EI位当其值为YES时,可以发出物理中断信号。当其值为NO时,则不能发出物理中断信号。
*IV有效。这一状态相应于命令忙/状态端口中的IV位。如果其值为YES,则该子系统的中断状态端口在其中有一个有效中断值,它尚未被主程序清除。如果其值为NO,则中断状态端口清除了任何中断值。
*任何设备有效(Any Device Active)。这一状态分量由子系统用于确定在它已经处理了一个来自主处理器的请求之后如何恢复处理过程。这个主处理器请求或者是要处理一个硬件控制或者要处理一个通过引起注意端口提交的命令。例如,当子系统处处于ACCEPT状态时写入RR位,而该状态分量为YES,则意味着子系统应该返回到在RR被置位之前所进行的访问。如果这一状态分量之值为NO,则子系统没有要完成的设备动作,于是它进入等待下一个主处理器动作的发生。
设备状态设备被规定有如下状态分量1、忙状态。这一状态确定了设备当前是否忙于执行一个命令。这个状态有两个值忙(busy)和闭(idle)。如果值为“闭”,表明该设备当前没有执行任何命令。如果其值为“忙”,则表明设备正在执行一个命令,而“忙”状态的子状态”及CMD状态将进一步确定在该设备上正在进行的命令或硬件控制。
2、忙状态的子状态(Busy Substates),如果一个设备正忙于执行一个命令,则这个状态分量指出正在进行的命令的类型如下立即命令,SCB、子系统复位(硬件控制的)、子系统复位(软件控制的)、设备复位、挂起、以及SCB中断复位。
当“忙状态的子状态”为立即命令或SCB时,则CMD段确定了在设备中将要执行的显式命令。当“忙状态的子状态”是子系统复位(硬设备控制的)、子系统复位(软件控制的)、设备复位、挂起或SCB中断复位时,则CMD状态分量指出这些命令之一被接受的时候在该设备中正在进行的那个命令。
当“忙状态的子状态”是子系统复位(硬件控制的)、子系统复位(软件控制的)、设备复位、挂起、或SCB中断复位时,设备状态分量“旧有的(old)忙状态子状态”包含有这些命令之一被接受时“忙状态的子状态”的行为。
当设备的忙状态是“闭”时,则对该设备不确定“忙状态的子状态”。
3、CMD状态,它给出设备中正在执行的命令的详细情况如下如果设备的“忙状态的子状态”是立即命令,则CMD状态给出在该设备中正在执行的命令。这时,它的值是立即运行诊断测试立即空操作中断状态端口复位立即命令如果“SCB忙子状态”,那么CMD状态是从主处理器存贮器中取下一个SCB,作为单个SCB。
从主处理器存贮器中取下一个SCB作为SCB链中的元素。
检验单个SCB的有效性(完成SCB的规格测试)。
检验SCB链元素的有效性(完成SCB的规格测试)。
执行单个SCB。
执行SCB链元素这些CMD状态是在设备执行一个SCB时由设备任务来设置的就是说,命令状态从取SCB起持续到执行单个SCB或执行SCB链元素。当一个单个SCB在执行时,一旦SCB完成了执行,设备便进入“闭”状态。当设备执行一个SCB链时,从取出和执行SCSCB命令状态直到该链全部完成或SCB执行被“挂起”命令挂起为止,命令状态一直保持。“挂起”命令总是在完成“挂起”动作后迫使设备进入“闭”状态。
如果该设备的“忙状态的子状态”等于子系统复位(硬件控制的)、子系统复位(软件控制的)、设备复位、挂起、或SCB中断复位,CMD段的使用依赖于状态分量“旧有的忙状态子状态”。如果其值为立即命令或SCB,那么CMD段反映的是当子系统复位、设备复位、挂起或SCB中断复位终接受执行的时候曾经在动作的那个命令如果该设备的旧有的忙状态子状态是子系统复位(硬件或软件控制的)设备复位、挂起、或SCB中断复位,则CMD被忽略,因为在接受时动作的命令完全由状态分量”旧有的忙状态子状态”所确定了。
4、“设备中断排队端”或“中断排队满”。这个状态分量指出该设备的中断排队空间是否满了。若值为“是(YES)”,则表明当前排队满,若值为“否(NO)”,则表明设备中断排队还有空间可供使用。当一个中断被设备排队时,被分配中断排队空间,而在这一点上中断排队可能变成满的了。
5、“使能执行SCB”,或“SCB Exec Enable”。这一状态分量指出该设备是否允许执行SCB。如果已经不允许执行SCB,这个分量为“否”。这是由执行“挂起”命令引起的。如果允许执行SCB,这个分量之值为“是”。这个“是”是由恢复、设备或子系统复位命令设置的。
6、“SCB链挂起”或“链挂起”,只有当对设备发出“挂起”命令时,这一状态的值才有效。如果发出了一个“挂起”命令,而且对链中的下一个SCB的提取被“挂起”命令停止。则这一状态分量的值为“是(YES)”。这意味着在这一状态下向设备发出“恢复(Resume)”命令将使该设备重新进入SCB忙子状态,并且利用挂起命令时在“SCB取地址”中保存的SCB地址来恢复执行被挂起的链。如果在一个SCB链未曾活动(active)时发生了“挂起”命令,或者如果该链被当前SCB的完成所停止,则这一状态分量之值将为“否(NO)”。在这种状态下向设备发出“恢复”命令将不会使设备重新进入SCB忙子状态,它将退出“恢复”而进入“闭”状态。
7、SCB取地址。当一个SCB命令是首次被一个设备接受时在命令端口的地址被译码处理过程送到这一个区。当链中的下一个SSCB要被设备任务取出时,这一状态分量便被更新为那个SCB的地址。设备任务根据SCB的结束状态来决定从SCB中选择哪一个链地址。
8、“设备可得到”或“Device Avail”。如果设备处于能够可靠地执行命令的状态,则这个状态分量有值“是”。如果设备处于不能可靠地执行命令的状态,则这一状态值为“否”。
9、“立即命令值”或“IC”。当译码处理过程接受一个直接命令时,在命令端口的值便被传送到这一状态分量。它能被设备任务用于取直接命令中的值。当前只有位15-0影响直接命令的执行。
10、“使能设备中断”,这一状态分量确定一个设备是否能要求一个物理中断。如果这一分量的值为“使能(enable)”,则一个中断能够被请求。如果值为“使不能(disable)”,则不能有物理中断被请求。一个设备总是被要求把一个中断排列设备内部中断排队之中,而与这一分量之值无关。这一分量或者由发给该设备的立即命令的位14设置,或者由子系统复位命令设置。
11、“后中断(intenupt after”。这一状态分量确定一个立即命令在成功地完成之后是否将要求一个中断。对于子系统复位、SCB中断复位、及立即中断复位,这一状态被忽略。这一状态分量有“是”和“否”两个值,由指向该设备的立即命令的位15来设置。
12、“旧有忙子系统”(old Busy Substate)”这一状态分量包含着当接受了“挂起”、子系统复位(软件控制的)设备复位、子系统复位(硬件控制的)、或SCB中断复位时曾经作用的“忙子状态”值。
13、旧有的CMD状态。这一状态分量包含的内容是当因为设备中断排队已满而不能取出一个SCB时曾经有效的SCBCMD值,当产生这一状态时设备被置于“闭”状态。SCB中断复位或立即中断复位能使该设备重新进入SCB状态,如果在执行这些之后中断排队不再满的话。
14、“中断排队满使SCB挂起”。如果因为设备中断排队已满而把该设备从SCB状态脱出而置于“闭”状态,则这一状态分量有值“是”。当中断复位使设备中断排队退出这一状态等于“是”时的排队状态时,状态分量“旧的CMD状态”和“SCB取地址”被用于重新启动SCB的执行。当设备不处于因中断排队满而使SCB执行被“挂起”的状态时,这一分量之值为“否”。
15、“在执行SCB的接受SCB中断复位”。当一个设备正忙于执行一个SCB时接受了SCB中断复位命令,则这一状态分量等于“是”。当该设备处于“闭”状态时接受了SCB中断复位,则该值等于“否”。
16、设备中断排队,这一状态分量为设备的内部中断排队分配空间。它得要包括当前最老的中断元素的位置以及为其后的中断所能提供的条目的位置和数量。
17、SCB逻辑中断计数。每当设备产生一个SCB逻辑中断这一状态分量便增1。
利用这些状态分量中的一些,译码处理过程按图15、16、117、18所示决策表来接受或拒绝一个命令。在这些表中,符号DC意思是“不必管它(Don′t Care)”,于是这个状态不被测试来确定译码处理过程的输出。符号NA意思是“不能应用的(Not Applicable)”,意思是说这一状态不能作为译码处理过程所需要测试的一部分而存在。
命令传递系统包括一个命令处理器和一个译码处理器。这些功能可以在硬件和/或软件中实现。因此,它们的实施以流程图形式示于图19-25,作为前文中用于解释系统操作的图2和图12所示框图的补充。特别是,在图12中,命令处理器和译码处理器是以硬件形式作为举例包含在子系统202的命令传递逻辑230和微处理器234中。命令处理器处理在I/O端口接受的命令,而译码处理器对命令译码以供子系统或其附加设备之一去执行。
图19是命令传递系统的总流程图。当子系统检测到主处理器向下列任何一个I/O地址的写入时,便以中断方式进入命令处理器。这些I/O地址是子系统控制端口(SSCP),引起注意端口((AP),或命令接口端口(CP),(如块500所示)。如块5502所指出的,如果命令处理器能这样做了,它便使其处理主处理器对命令接口端口和引起注意端口的写入过程不能受任何中断。如果这类中断不能被阻止,那么对这些端口的写入便被忽略,直至其后命令处理器重新进入它的处理过程。在决策块504,确定进入命令处理器是否是试图写SSCP的结果。如果是,则此逻辑继续前进到块506去处理对SSCP的写入。这一过程参考图21和图22详细描述。在写完SSCP之后,该逻辑进入块508,在那里命令处理器重新使能处理主处理器对引起注意端口和命令接口端口的写入,然后循环返回块500。
如果在决策块504发现不是对SSCP写入,则进入决策块5510以确定主计算机是否是试图写命令接口端口。如果是这样,则该逻辑进入块512去处理对命令接口端口的写入。这一过程参照图23详细描述。在写入命令接口端口之后,该逻辑再次进入块508在那里命令处理器重新使能处理主处理器对引起注意端口的写入,然后循环返回块500。
如果决策块500处发现不是写命令接口端口,便进入块514去处理对引起注意端口的写入,这一过程参照图22详细描述。
下关对照图20和图21来详细描述图19中的块506。对照图20,主处理器写入SSCP的值在块516被读入。在块518确定是否是试图对子系统复位。如果是,则进入块520,在那里对SSCP的RST位置1。再进入决策块522,在那里确定子系统执行状态是否接受命令状态。如果是,则子系统状态被置于“子系统复位未决开始”状态,如块524所指出的那样。然后,如块526所指出的那样,调用子系统硬件功能来执行子系统复位未决。当执行子系统复位未决功能的硬件功能完成时,子系统执行状态被置于“子系统未决完成”状态,如块528所示。然后返回图19中的块50508使能主处理器中断,如前面所解释的那样。
如果在决策块522确定该子系统执行状态不是接受命令状态,则进入决策块530以确定子系统执行状态是否是“子系统复位未决开始”。如果是,则进行块532、重新使主处理器能够写入命令接口端口和引起注意端口。然后命令处理器把控制转向硬件处理过程,执行复位未决功能,如块534所示。
如果在决策块530确定了子系统执行状态不是“子系统复位未决开始”,则进行决策块536,以确定子系统执行状态是否是“子系统复位未决完成”。如果是,则返回图19中的决508,使能主处理器中断,如前面描述的那样。如果不是,则进入决策块538以确定子系统执行状态是否是“拒绝”状态。如果是,进入决524,把子系统放在“复位未决开始”状态,然后继续前面描述过的过程。如果不是,则进行决策块540以确定子系统执行状态是否等于“译码”。如果是,进入决542。在那里,当主计算机把RST置1的时候正在进行的译码处理过程的执行被放弃了。对RST置1使子系统放弃了“复位在进行”状态,如果546所示。继续进行决524把子系统放入“复位未决开始”状态,如前已解释那样。
如果在决策块578确定了不曾试图使子系统复位,则进入块548,那里使SSCP的RST位置0。继续进入决策块550,在那里确定确定是否子系统的执行状态是“译码”。如果是,则进入块552,在那里命令处理器重新使能处理主处理器写命令端口和引起注意端口。然后命令处理器把控制转向译码处理过程,如块554所示。
如果在决策块550确定子系统执行状态不是“译码”,则进入决策块556,以确定子系统执行状态是否是“子系统复位未决开始”如果是,则进入块558去迫使所有SSCP位除RST位外均置零然后进入块532使能写入命令接口端口和引起注意端口,再继续如前面解释的过程。
如果在决策块556所作的判定是子系统执行状态不是“子系统复位未决开始”,则继续进入决策块560,在那里确定子系统决策状态是否是“复位未决结束”。如果是,则进入块562,在那里子系统执行状态被设置为“子系统复位在进行”状态。在块564,命令处理器重新使能处理主处理器写命令接口端口和引起注意端口。然后命令处理器调用“子系统复位在进行”功能,如块566所示。在此时,子系统执行状态是“准备好接受命令”,如块568所示,然后返回图19中的块508使能主处理器中断,如前面解释的那样。
如果在决策块560确定子系统执行状态不是“复位未决完成”则进入块570,在那里子系统执行为“拒绝”或“接受”。在块5572,SSCP的位。被置成SSCP的EI位。子系统执行状态的中断使能分量就置成“是(YES)”,如块574所示。在块5576,检测中断功能被调用来确定是否有任何设备(从设备0开始)能发生中断。SSCP的位1被置入子系统控制端口的DMA,如块578所示。SSCP的位6、4、3和2被置入SSCP中的相应位置,如块580所示。SSCP的位5被置入SSCP的RR位,如块582所示。
写SSCP过程在图21中在决策块584处继续,在那里确定SSCP中的RR位是否等于零。如果是,则进入决策块586,在那里确定子系统执行状态是否为“接受命令”。如果是,则进入决策块588以确定子系统是否有任何“设备在活动(active)”分量等于“否(NO)”。如果是,则进入图19中的块508使能主处理器中断,如前文解释的那样。如果任何“设备在活动”分量等于“是(YES)”,则进入块590,在那里命令处理器重新使能处理器写命令接口端口和引起注意端口。在块592,命令处理器从处理它的活动返回,把控制转向子系统的被中断了的活动。
如果在决策块586确定子系统执行状态不是“接受命令”,则进入决策块594,在那里确定子系统执行状态是否是“系统复位在进行”状态。如果是,则进入块596,在那里命令处理器重新使能处理主处理器写命令接口端口和引起注意端口。然后命令处理器从““中断”转向块598所指出的“子系统复位在进行”功能。
如果在决策块594确定子系统执行状态不是“复位在进行”,则进入决策块588,进而继续前面解释过的过程。
如果在决策块584确定RR位不等于零,则进入决策块600在那里确定子系统执行状态是否等于“拒绝”。如果是,则进入块602,在那里子系统被从拒绝态脱出而放入接受命令状态,下一步进入决策块588,然后按前面解释的那样进行。如果在决策块600确定子系统执行状态。不等于“拒绝”,则进入决策块588并按前面解释的那样继续进行。
下面对照图22详细描述图19中的块514,这是处理对引起注意端口写。在决策块604,确定子系统执行状态是否等于“译码”如果是,则如块606所示忽略主处理器写引起注意端口,并返回图20A所示块552继续进行前面解释的过程。如果在决策块604确定子系统执行状态不等于“译码”,则进入决策块608确定子系统执行状态是否等于“拒绝”。如果是,则如块610所示忽略主计算机写引起注意端口,并返回图21中的块588,继续前面解释的过程。
如果在决策块608确定子系统执行状态不等于“拒绝”,则进入决策块612,在那里确定子系统状态是否等于“复位未决开始”如果是,则如块614所示忽略主计算机写引起注意端口并返回图221C中的块532,继续前面解释的过程。
如果在决策块612确定子系统执行状态不等于“复位未决”,则进入决策块616,以确定子系统状态是否等于“复位未决完成”如果是,则如块618所指示,主计算机对引起注意端口写被忽略,然后返回图19中的块508,使能主处理器中断,如前面解释的那样。
如果在决策块616确定子系统执行状态不等于“复位未决完成”则进入决策块620,在那里确定子系统执行状态是否等于“子系统复位在进行”。如果是,则如块622所示忽略主计算机对引起注意端口的写入,然后返回图21中的块596,继续前面解释过的过程。
如果在块620确定子系统执行状态不等于“子系统复位在进行”则继续进行块624,在那里子系统执行状态是在“接受”状态,引起注意端口在块626中更新。然后子系统执行状态被设置成“译码”如块628所示。然后命令处理器在块630调用译码处理过程,其细节将在下文中参考图24和25来描述。
在决策块632确定译码处理过程是否接受了该命令。如果是,则进入块634,在那里子系统执行状态被设置成“接受命令”,然后返回图21中的决策块588去进行前已解释的过程。
如果在决策块632中确定译码处理过程未曾接受命令,则进入块636,在那里将子系统执行状态置成“拒绝”。在块638,命令忙/状态端口中的B位和REJ位均被置1,而S位的设置由译码处理过程来确定。然后返回决策块图21中的决策块588,继续前面解释的过程。
下面对照图23详细描述图19中的块512,即处理对命令接口端口的写入。在决策块640,确定子系统执行状态是否等于“译码”。如果是,则如块642所示,忽略主计算机写命令接口端口,然后返回图20A中的块552,继续前面已解释的过程。如果在块640确定子系统执行状态不等于“译码”,则进入决策块644,在那里确定子系统执行状态是否等于“拒绝”。如果是,主计算机对命令接口端口的写入被忽略,如块646所示,然后返回图21中的块588去继续前面解释过的过程。
如果在决策块644中确定子系统执行状态不等于“拒绝”,进入决策块648,在那里确定子系统执行状态是否等于“复位未决开始”。如果是,例如块650所示,忽略主计算机写命令接口端口,然后返回图20C中的块532,继续前面解释的过程。
如果在决策块648确定子系统执行状态不等于“复位未决开始”进入决策块652,在那里确定子系统执行状态是否等于“复位未决完成”。如果是,则如块654所示,忽略主计算机写命令接口端口然后返回图19中的块508,继续前面解释过的过程。
如果在决策块652确定子系统执行状态不等于“复位未决完成”则进入决策块656,在那里确定子系统执行状态是否等于“子系统复位在进行”。如果是,则如块658所示忽略主计算机写命令接口端口,而返回图21中的块596去继续前面已解释的过程。
如果在决策块656确定子系统执行状态不等于“子系统复位在进行”,则进入块660,在那里子系统执行状态是“接受”状态。于是如块662所示,命令接口端口被主计算机提供之值更新。然后返回图21中的决策块588,继续前面解释过的过程。
命令处理器使用一个“与调用(call)相似的“过程来调用“译码处理过程”,以确定一个命令是否能被接受。如果该命令被接受了,则译码处理过程安排一个设备任务,在它把控制转向由命令处理器指出一个命令是否被接受或拒绝之后,该设备任务便去执行该命令。如果一个命令被接受去执行,则译码过程相应地设置设备状态。如果一个命令被拒绝,则译码过程回送一个值,命令处理器把它作为S位之怎写入命令忙/状态端口。
译码过程是通过来自命令处理器的调用而进入的。一旦进入了译码过程,则可以命令接口端口得到要被处理的命令。引起注意端口包含命令类型,并识别出命令所指向的设备。
下面参照图24和图25来详细描述译码处理过程。在决策块664,确定该命令的引起注意代码是否是“设备复位”。如果是,则进入决策块666来确定命令接口端口的位7-0中的立即命令代码是否等于零。如果不是,则进入块672,在那里译码过程设定它的回送值以指出命令被拒绝。如果决策块698或700的回答为“否(NO)”,也会发生这种情况,这些操作还将简要地解释。
如果在决策块666确定命令接口端口的位7-0中的立即命令代码等于零,进入决策块668,在那里确定如果被访问的设备地址为“0”(即子系统地址),则该命令为一个软件控制的子系统复位。如果是这样,则进入块680,在那里子系统的执行状态被设置为“子系统复位在进行”。这个软件控制的子系统复位功能是在块682中由译码处理过程调用的。在块684,译码处理过程把它的回送代码设为“命令接受”。然后返回块676,返回命令处理器。
如果在决策块668确定设备地址不是地址“0”(子系统地址)则进入块670,在那里确定在引起注意端口的设备标识码(ID)是否有效。如果是,则进入块686,在那里被命令指定的设备的当前“忙子状态”被保存在设备状态分量”旧有的(OLD)忙子状态之中。在块688,该命令指定的设备的设备状态分量IC被设置成命令接口端口中的值。然后,在块690,被访问的设备的忙状态被设置成“忙”。然后,在块692调用子系统任务排序功能,把命令ICMD安排给被访问的设备供其后去执行。然后返回块684去继续前面解释过的过程。
如果在决策块670确定在引起注意端口的设备标识符(ID)无效,则进入块671,在那里命令回送码被设为“拒绝”,且说明理由为无效设备标识符。然后进入块676返回命令处理器。
如果在决策块664确定该命令的引起注意代码不是“设备复位”,则进入决策块694,在那里确定该命令的引起注意代码是否等于“中断复位”。如果不是,则进入决策块696,确定新命令的引起注意代码是否为立即命令。如果是,则进入决策块700,这一块将再简要地描述;如果不是,则进入决策块698,在那里确定新命令的引起注意代码是否是SCB。如果是,则进入决策块702,这也将再简要描述;如果不是,则进入块672,继续前面解释的过程。
如果在决策块694确定该命令的引起注意代码等于“中断复位”则进入决策块700,在那里确定命令接口端口中的命令的位7-0中的立即命令代码是否有效。如果该命令是无效的,则进入块672并继续前面解释过的过程。如果该命令有效,则进入决策块702,在那里确定在引起注意端口的设备标识符是否有效。如果不是,则进入块671并进行前面解释过的过程。如果是,则进入决策块704在那里确定该设备是否处于“可得到”状态。如果不是,则进入块7706,在那里把回送代码设为“拒绝”。具体的拒绝代码为“设备不可得到”,如块708所示。然后返回块676继续前面解释过的过程。
如果在决策块704确定该设备处于“可得到”状态,现在参考图25A,继续进入决策块710,在那里确定该设备是否处于“忙”状态。如果是,则进入决策块712,在那里确定这个新命令是否是“中断复位”。如果不是,则进入决策块714以确定新命令是否为“挂起”。如果不是,则在块716把回送码设为拒绝”,其理由为“设备忙”,如块718所示。然后返回图24B中的块676,继续前面解释过的过程。
如果在决策块712或714中有一个的决策结果为“是”,则进入决策块720,在那里确定当前该设备是否在执行一个SCB。如果不是,则返回块716去继续前面解释过的过程。如果是,则进入决策块722。如果在决策块710确定设备“不忙”,则逻辑过程也进入决策块722,在决策块722确定该新命令的引起注意代码是否为“中断复位”。如果是,则返回图24A的块686。如果不是,则进入决策块724,在那里确定该设备中断排队是否满。如果是,则译码处理过程在块726中把它的回送代码设置为“拒绝”。具体拒绝代码为“中断排队满”,如块728中所示。然后返回图24B中的块676去继续前面解释过的过程。
如果在决策块724确定设备中断排队不满,则进入决策块73730,在那里确定新命令是否是“挂起”。如果是,则返回图24A中的块686并继续前面解释过的过程。如果不是,则新命令必定是SCB,如块732所示。接下来,在决策块734确定设备状态是否允许SCB的执行。如果是,则返回图24A中的块688,并继续前面解释过的过程。如果不是,则在块736中把回送代码置成“拒绝”。拒绝原因是“SCB执行被拒绝”。然后返回图24B中的块676去继续前面解释过的过程。
总之,已经描述了在主计算机和至少一个可能有附加设备的智能子系统之间传送信息的命令接口。以主处理器发送的信息包括直接命令和间接命令,后者如子系统控制块(SCB)的地址,该SCB中包含了指定要由识别出的一个智能子系统或设备来完成的操作。从一个智能子系统传回主处理器的信息包括“忙信号”和状态信号。忙信号指示出一个智能子系统的命令接口端口和引起注意端口是否“忙”而状态信号指出这个智能子系统及其附加设备的操作状态。
权利要求
1.一种数据处理系统,包括主系统和至少一个可能有附加设备的子系统,其特点是一个命令接口,用于在所述主系统和所述一个子系统之间传送信息,该命令接口包括第一端口,用于接受来自所述主系统的直接命令或间接命令,这些命令指出要由该子系统或一个附加设备来完成的操作的类型;和第二端口,用于接收来自所述主系统的代码,指出在所述第一端口接受的是所述直接命令还是所述间接命令,还指出是所述一个子系统还是一个附加设备要去执行在所述第一端口接受的命令。
2.如权利要求1所述的数据处理系统,其特点是所述直接命令是一个立即命令,它包含了所述一个子系统或一个设备立即去执行该命令所必须的全部信息;而间接命令是一个子系统控制块(SCB)的地址,子系统要从主系统取出这个SCB供其后去执行。
3.权利要求2中的数据处理系统,其特点是在所述第二端口接收的代码不仅指示出是否为间接命令,还编码指出所接收的是一组不同的立即命令中的哪一个。
4.权利要求2中的数据处理系统,其特点是有一个第三端口用于从所述一个子系统向所述主系统提供代码,以指出所述三端口(*)和第二端口是否为“忙”,还指出是否一个子系统在接受或拒绝命令。
5.权利要求4中的数据处理系统,其特点是有一个第四端口用于从所述主系统向所述子系统提供控制信号,所述控制信号包括一个子系统复位信号。
6.权利要求5中的数据处理系统,其特点是有一个第五端口,用于从所述子系统向所述主系统提供一个代码,指出是所述一个子系统还是一个设备在向主系统提供中断。
7.一个计算机系统,包括一个具有系统存贮器的主处理器,以及至少一个可能有附加设备的智能子系统,其特点是在每个这类子系统中有一个命令接口,用于在所述主处理器和所述一个智能子系统之间传送信息,所述命令接口包括一个命令接口端口,用于从所述主处理器接受一个直接命令或一个间接命令,这些命令指出了要由一个智能子系统或一个附加设备所完成的操作的类型;以及一个引起注意端口,用于从所述主处理器接受一个代码,它的第一部分指出在所述命令接口端口接受的是所述直接命令还是所述间接命令;代码的第二部分指出是一个智能子系统还是一个附加设备要去执行在所述命令接口端口接受的命令。
8.权利要求7中的计算系统,其特征是所述直接命令是一个立即命令,它包含了该子系统立即去执行该命令所必须的全部信息;而间接命令是存贮在所述系统存贮器中的一个子系统控制块(SCB)的地址,该子系统从主处理器取出这个SCB供其后执行。
9.权利要求8中的计算系统,其特点是在所述引起注意端口接受的代码不仅指出是否是间接命令,还编码指出接受的是一组不同类型立即命令中的哪一个。
10.权利要求9中的计算系统,其特点是所述SCB包括主处理器要求子系统从系统存贮器取出的至少一个另外的SCB的地址
11.权利要求10中的计算系统,其特点是所述SCB包括一个地址,它指向一个间接表,在表中有一组指示字,指向所述系统存贮器中的若干个缓存区,缓存区中包含了为执行SCB包含的各操作所必需的数据。
12.权利要求10中的计算系统,其特点是所述SCB包括系统存贮器中一个终止状态块(TSB)的地址,这个TSB地址被子系统或一个设备用作存贮所述SCB的完成状态或终止状态的地点点。
13.一个计算系统由下列各项组成一个主处理器;一个系统存贮器,用于在一组可寻址空间存贮信息;至少一个可能带有附加设备的智能子系统。其特点是一个命令接口,用于在所述主处理器和所述一个智能子系统之间传递信息。所述命令接口包括一个命令接口寄存器,所述主系统向它写入一个直接命令,该直接命令包含了所述一个智能子系统去立即执行该命令所必需的全部信息;或者所述主系统向它写入一个间接命令,该间接命令是存贮在所述系统存贮器中一个可寻址区间的子系统控制块(SCB)的地址;一个引起注意寄存器,所述主处理器向它写入一个代码,其第一部分指出是所述直接命令还是所述间接命令被写入了所述命令接口寄存器,其第二部分指出是所述一个智能子系统还是一个附加设备要去执行写入所述命令接口寄存器的命令;以及包括在所述一个智能子系统中的手段,用于读出写在所述引起注意寄存器中的代码及写入所述命令接口寄存器中的命令,若为直接命令,则根据写入所述引起注意寄存器的代码的第二部分的指示,由所述智能子系统或一个附加设备来直接执行;如果是间接命令,则根据所指出的SCB地址直接访问所述系统存贮器,再根据写入所述引起注意寄存器中的代码的第二部分的指示,由所述智能子系统或一个附加设备来执行这个SCB。
14.权利要求13中的计算机系统,其特点是在所述引起注意寄存器接受的代码不仅指出是否是间接命令,还编码指出接受的是不同立即命令类型中的哪一个。
15.权利要求13中的计算机系统,其特点是有一个命令忙/状态寄存器,它包括一个“忙”位,为响应所述主处理器对引起注意端口的写入,该位被置成第一状态,当已经响应了写入所述命令接口寄存器的命令时,该位被置成第二状态;命令忙/状态寄存器还包括一个“拒绝”位,当初始命令被写入所述命令接口寄存器或所述引起注意寄存器时,该位被置成第一状态,用于禁止后后续命令向所述命令接口寄存器或所述引起注意寄存器的写入。在初始命令已经被处理了之后,该位被置成第二状态,以允许后续命令被写入所述命令接口寄存器和所述引起注意寄存器。
16.权利要求15中的计算机系统,其特点是有一个中断状态寄存器,所述一个智能子系统可以向其中写入标识代码和关于该智能子系统执行来自所述主处理器的命令的完成情况的信息,而主处理器包括有读取所述中断状态寄存器内容的手段。
17.权利要求16中的计算机系统,其特点是有一个子系统控制寄存器,所述主处理器向其中写入信息来控制子系统功能,所述一个智能子系统读出这一信息并对它作出响应。
18.权利要求17中的计算机系统,其特点是所述SCB包括至少一个其它SCB的地址,那个其它的SCB也是主处理器要该智能子系统从系统存贮器中取出的。
19.权利要求18中的计算机系统,其特点是SCB包括一个地址,指向一个间接表,表中有一组指示字,指向所述系统存贮器中的若干缓存区,在这些缓存区中含有要完成SCSCB中所包含的操作必须的数据。
20.权利要求17中的计算机系统,其特点是SCB中包括一个在系统存贮器中终止状态块(TSB)的地址,这个TSB地址被该子系统或一个设备用于存放给定SCB的完成或终止状态。
21.操作一个数据处理系统的方法,该系统包括一个主系统和至少一个可能带有附加设备的子系统,还有一个在所述主系统和所述一个子系统之间传递信息的命令接口。该方法以下述步骤为特征从所述主系统向所述命令接口上的第一端口提供一个直接命令或间接命令,这些命令指出要由所述子系统或一个附加设备完成的操作类型;以及从所述主系统向所述命令接口的第二端口提供一个代码,它指出在所述第一端口接受的是所述直接命令还是所述间接命令,该代码指出是所述子系统还是某个附加设备要去完成在所述第一端口接受的命令。
22.权利要求21中的方法,其特征在于所述直接命令是一个立即命令,它包含为所述子系统或某一设备要立即执行该命令所必须的全部信息,而间接命令是一个子系统控制块(SCB)的地址,子系统从主系统中取出这个SCB供其后执行。
23.权利要求22中的方法,其特点在于在所述第二端口接受的代码不仅指出是否为间接命令,还编码指出是一组不同立即命令类型中的哪一个。
24.权利要求22中的方法,以下述步骤为其特征从所述一个子系统向所述命令接口上的第三个端口提供一个代码由所述主系统使用,该代码指示出所述一个子系统是否在接受或拒绝命令。
25.权利要求24中的方法,以下述步骤为特征从所述子系统向所述命令接口的第四个端口提供所述子系统需要的控制信号,这些控制信号包括一个子系统复位信号。
26.权利要求25中的方法,以下述步骤为特征从所述一个子系统向所述命令接口的第五个端口提供一个代码,指出是哪些设备正在向所述主系统提供中断。
27.操作一个计算系统的方法,该系统包括一个具有系统存贮器的主处理器,至少一个可能带有附加设备的智能子系统,以及一个命令接口,用于在所述主处理器和所述智能子系统之间传送信息,该方法以下步骤为特点从所述主处理器向所述命令接口上的命令端口提供一个直接命令或间接命令,这些命令指出要由所述智能子系统或某一附加设备完成的操作的类型;以及从所述主处理器向所述命令接口的引起注意端口提供一个代码,它指出是所述直接命令还是所述间接命令在所述命令接口端口被接受,还指出是所述智能子系统还是某个附加设备要去完成在所述命令接口端口的接受命令。
28.权利要求27中的方法,其特点是所述直接命令是一个立即命令,它包含为所述一个智能子系统或附加设备要立即执行该命令所必需的全部信息,而间接命令是一个子系统控制块(SCB)的地址,所述一个智能子系统从系统存贮器中取出这个SCB供其后执行。
29.权利要求28中的方法,以如下步骤为其特征从所述一个智能子系统向所述命令接口上的命令忙/状态端口提供一个代码,指出所述给定智能子系统是否是在接受或拒绝命令。
30.权利要求29中的方法,以如下步骤为其特征从所述主处理器向所述命令接口的子系统控制端口提供所述给定智能子系统使用的控制信号,所述控制信号包括子系统复位信号。
31.权利要求30中的方法,以下述步骤为其特征从所述一个智能子系统向中断状态端口提供代码以提供给所述主处理器,该代码指出是所述智能子系统还是一个设备在向所述主处理器提供中断,还指出该中断的理由。
32.权利要求28中的方法,其特点是所述SCB包括至少一个其他SCB的地址,那个其他的SCB是主处理器要该智能子系统从系统存贮器中取出的。
33.权利要求32中的方法,其特点是所述SCB包括一个地址,指向一个间接表,表中有一组指示字,指向所述系统存贮器中的若干缓存区,在这些缓存区中含有要完成SCB中包含的操作所必需的数据。
34.权利要求28中的方法,其特点是所述SCB包括一个在系统存贮器中终止状态块(TSB)的地址,这个TSB地址被该子系统或一个设备用于存放给定SCB的完成或终止状态。
35.操作一个计算机系统的一种方法,该系统包括一个主处理器、一个系统存贮器用于在多个可寻址区间存贮信息,至少一个可能带有若干附加设备的智能子系统,以及一个命令接口用于在所述主处理器和所述一个智能子系统之间传送信息。该方法以下述步骤为特征由所述主处理器向所述命令接口中的一个命令接口寄存器提供一个直接命令或一个间接命令,直接命令包含为所述智能子系统立即执行该命令所必需的全部信息,间接命令是存贮在所述系统存贮器中的可寻址分区之一的一个子系统控制块(SCB)的地址;由所述主处理器向所述命令接口中的引起注意寄存器提供一个代码,它的第一部分指出提供给所述命令接口寄存器的是所述直接命令还是间接命令,该代码的第二部分指出是所述智能子系统还是某个附加设备要去执行由所述命令接口寄存器提供的命令;以及由所述一个智能子系统读出提供给所述引起注意寄存器的代码,读出提供给所述命令接口寄存器的命令,然后根据所述引起注意寄存器中写入的代码的第二部分的指示,由所述智能子系统或某一附加设备来直接执行一个直接命令;如果是一个间接命令,则按所指出的SSCB地址直接访问所述系统存贮器,并根据所述引起注意寄存器中写入的代码的第二部分的指示,由所述智能子系统或某一附加设备来执行该SCB。
36.权利要求35中的方法,并以下述步骤为特征为响应正在由所述主处理器向引起注意寄存器提供一个命令,将所述命令接口中的命令忙/状态寄存器中的一个忙位置成第一状态当提供给所述命令接口寄存器的命令已经得到响应之后将该忙位置成第二状态;以及当一个初始命令被提供给所述命令接口寄存器或引起注意寄存器时,对所述命令忙/状态寄存器中的一个“拒绝”位置成第一状态,以禁止向所述命令接口寄存器或所述引起注意寄存器提供后续命令,而在初始命令已经被处理之后,对该“拒绝位”置成第二状态,以允许后续命令提供给所述命令接口寄存器和所述引起注意寄存器。
37.权利要求36中的方法,以下述步骤为特征由所述一个智能子系统向所述命令接口中的一个中断状态寄存器提供标识码和关于来自所述主处理器的命令被所述智能子系统完成情况的信息,所述主处理器读取这个中断状态寄存器的内容。
38.权利要求37中的方法,以下述步骤为特征由所述主处理器向所述命令接口中的子系统控制寄存器提供控制子系统功能的信息,该信息由所述智能子系统读出和作出响应。
39.权利要求38中的方法,其特点是所述SCB包括至少一个其他SCB的地址,那个其他的SCB是主处理器要该智能子系统从系统存贮器中取出的。
40.权利要求39中的方法,其特点是所述SCB包括一个地址,指向一个间接表,表中有一组指示字,指向所述系统存贮器中的若干缓存区,在这些缓存区中含有要完成SCB中包含的操作所必需的数据。
41.权利要求35中的方法,其特点是所述SCB包括一个在系统存贮器中终止状态块(TSB)的地址,这个TSB地址被该子系统或一个设备用于存放给定SCB的完成或终止状态。
42.操作一个计算机系统的方法,该系统包括一个主处理器和至少一个可能带有若干附加设备的子系统,以及一个在所述主处理器与所述一个子系统之间传递信息的命令接口,该命令接口包括一个命令接口端口(它在从所述主处理器接受命令时处于活动(active)状态)、一个引起注意端口(当从所述主处理器接受一个代码以指示在所述命令接口端口接受命令的是所述智能子系统还是一个设备的时候,该端口处于活动状态)、一个命令忙/状态端口(它包括一个““忙”位和一个“拒绝”位)以及一个子系统控制端口(它包括一个子系统复位位和一个拒绝状态复位位)。该方法以下述步骤为特点为响应所述引起注意端口处于活动状态,设置所述命令忙/状态端口的忙位为“通(ON)”状态,否则所述子系统控制端口的子系统复位位处于“通(ON)”状态;为响应所述子系统控制端口处于“通(ON)”状态,设置所述命令忙/状态端口的拒绝位为“通(ON)”状态,否则所述子系统控制端口的拒绝状态复位位处于“通(ON)”状态。
43.操作一个计算机系统的一种方法,该系统包括一个主处理器和至少一个可能带有附加设备的子系统,以及一个用于所述主处理器和所述一个子系统之间传递信息的命令接口,该命令接口包括一个命令接口端口(它在从所述主处理器接受命令时处于活动状态)、一个引起注意端口(当从主处理器接受一个代码来指示在所述命令接口端口接受命令的是所述一个智能子系统还是一个附加设备)、以及一个子系统控制端口(它包括使子系统复位和使子系统能或不能中断的控制)。该方法以下述步骤为特征等待所述主处理器去写所述命令接口端口、所述引起注意端口和所述子系统控制端口之一;使不能来自主处理的中断,从而使所述主处理器能写入所述命令接口端口、所述引起注意端口和所述子系统控制端口;确定是否是向所述子系统控制端口写,如果是,则处理对所述子系统控制端口的写;如果不是,则,确定是否是向所述命令接口端口写,如果是,则处理所述写;如果不是,则处理向引起注意端口写。
44.权利要求44的方法,其特点是对于写所述命令接口端口的处理包括以下步骤确定是否在处理一个先前向所述命令接口端口写入,如果是,则忽略当前正在被接受的命令;如果不是,则,处理当前正在接受的命令。
45.权利要求44的方式,其特点是对引起注意端口写的处理包括如下步骤确定是否正在处理一个先前的向所述引起注意端口的写入,如果是,则忽略当前正在被接受的命令,如果不是,则,处理当前正在接受的命令。
46.权利要求45的方法,以下述步骤为特征在处理了向所述子系统控制端口或所述命令接口端口或所述引起注意端口的写入之后,使能由所述主处理器中断。
全文摘要
一个命令接口包括若干端口用于在一个主处理器和一个可能带有若干附加设备的智能子系统之间传递信息,一个命令接口端口从主处理器接受一个直接命令或间接命令,这些命令指出要由该子系统或某一附加设备完成的操作的类型。一个引起注意端口从主处理器接受一个代码,它指出在命令接口端口接受的是直接命令还是间接命令,它还指出是这个智能子系统还是一个设备要去执行该命令。一个命令忙/状态端口从该智能子系统接受一个代码。
文档编号G06F13/12GK1048938SQ90103808
公开日1991年1月30日 申请日期1990年5月28日 优先权日1989年6月9日
发明者弗朗西斯·迈克尔·博内维托, 道格拉斯·罗德里克·奇泽姆, 萨迈·戴维斯·多兹, 迪鲁维克昂阿·M·德萨伊, 欧内斯特·纳尔逊·曼德斯, 安德鲁·博伊斯·麦克尼尔, 理查德·尼尔·门德尔斯奥 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1