CN1021380C - 计算***的命令传递 - Google Patents
计算***的命令传递 Download PDFInfo
- Publication number
- CN1021380C CN1021380C CN90103808A CN90103808A CN1021380C CN 1021380 C CN1021380 C CN 1021380C CN 90103808 A CN90103808 A CN 90103808A CN 90103808 A CN90103808 A CN 90103808A CN 1021380 C CN1021380 C CN 1021380C
- Authority
- CN
- China
- Prior art keywords
- subsystem
- command
- port
- state
- order
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Storage Device Security (AREA)
Abstract
一个命令接口包括若干端口用于在一个主处理器和一个可能带有若干附加设备的智能子***之间传递信息。一个命令接口端口从主处理器接受一个直接命令或间接命令,这些命令指出要由该子***或某一附加设备完成的操作的类型。一个引起注意端口从主处理器接受一个代码,它指出在命令接口端口接受的是直接命令还是间接命令,它还指出是这个智能子***还是一个设备要去执行该命令。一个命令忙/状态端口从该智能子***接受一个代码。
Description
本发明属于计算***领域,特别是以命令传递机制为其目标。明确地说,本发明的目标是从个人计算机一类机器向一组可以带有附加设备的智能子***传递命令。
本发明中参考了题目为“计算***的中断处理”的美国专利申请。该项申请已转让给本专利申请的受让人,它讲述的中断处理机制可以被用于本项申请中的命令传递***。
在一个由主***及至少一个子***构成的数据处理***或计算***中,通常需要经过输入/输出(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)。对一个具体的命令,还可能有多个数据缓存器的链接。缓存器的链接是用间接表(indirect list)来构成的。每个SCB包含一个“终止状态块(Termination 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所示的那样拼在一起,图16是写子***控制端口过程的详细流程图,它的概况已示于图14中;
图17A和17B如图18所示的那样拼在一起,给出写引起注意端口过程的详细流程图,它的概况已示于图14;
图18是写接口端口过程的详细流程图,它的概况已示于图14;
图19A和19B合起来作为图19,图20A和20B合起来作为图20,它们给出命令译码处理的详细流程图。
本发明的总体目标是为主计算机***中运行的程序提供一个命令传递***。直接或间接命令经由命令接口传递给至少一个可能带有一组附加设备的智能子***。为便于描述,把本发明置于在IBM个人***/2(PS/2)计算机上运行的程序所使用的命令传递***范围内来描述。个人***2(Personal System 2)和PS/2各为IBM公司的注册商标。直接命令(诸如立即命令)和间接命令(诸如存贮在PS/2***存贮器中的子***控制块的地址)经由IBM微通道(Mioro Channel(微通道)是IBM公司的注册商标)传送给一个智能子***的命令接口,这个子***可能有一组附加设备,例如磁带驱动器、磁盘驱动器、打印机、通讯设备和显示设备等等。然而,值得称道的是,本发明可以在其它主计算机***中实现,经由接口网络把命令传递给智能子***。
定义了一种子***控制块(SCB)结构,它提供了主处理器和具有存贮器直接存取(DMA)能力以及处理命令级操作能力的子***之间的一个控制块级接口。一个SCB内包含了一个单个命令。而命令链接可以把一个SCB指向一个或多个其它SCB的地址,而把这个链作为一个逻辑命令来处理。还有伴随一个给定命令的多个缓存器的数据链接。用一个间接表(indirect list)来构成这种缓存器链。
一个SCB包含***存贮器中一个终止状态块(TSB)的地址。由处理命令的子***把给定SCB的完成或终止状态放到TSB中。为了能在命令链中的任何一点处理终止操作,对链中的每个SCB都
定义了一个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))对附加设备136、138、140和142的各项任务安排时间顺序。对SCSI接口操作的描述见“信息***美国国家标准研究所(ANSI)-小型计算机***接口(SCSI)”,其出版号为ANSI×3.131-1986。附加设备可以是磁盘驱动器、磁带驱动器、直接存贮器存取设备(DASD)、打印机、显示器以及其他类似设备。设备D(0)136用于把命令指向子***。智能子***136和设备138、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地址写入命令接口端口148,然后去写引起注意端口150。子***在命令忙/状态端口156写入“忙(busy)”位。当***已经写入引起注意端口150时,便通过中断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上的SET-AP-INTRPT信号便通知本机处理器在AP已已写入了一个命令。反之,如果这些线上有任意个为零,则门153提供一个零输出,它禁止把命令写入AP寄存器143。具体地说,如果Busy(忙)位或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时,该子***进入复位未决状态。如果子***处于复位未决状态,而子***控制端口的RST特被置零,那么子***便进入“复位正在进行”状态。当向设备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,它被加到寄存器
300的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-SCP-SEL、线326上的信号+IC-BUU-RCVR-BIT5信号以及线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(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变成ON,它又置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位来登记(poll)要求中断的子***。在主处理器已读出ISP而且主中断处理器已处理了中断之后,主处理器经由引起注意端口向子***发出清除中断注意代码(1110h)命令。
每当“或”门354为ON时S/R寄存器348被置成OFF如果线314(CHRESET)或线316(CORESET)或“与”门356或“与”门358为ON,则“或”门354变为
ON。
如果在线360、362、364和366上的IC-BUS-RCVR-位(7-4)分别由引起注意端口位7-4置成二进位值“0000”(立即设备复位),而且线304和306为有效,则“与”门356为ON。
如果线338、336、326和366上的IC-BUS-RCVR位(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用于立即清除SCB中断命令来指定要清除的中断号。
IC位7-0-立即命令代码。它们的编码如下:
位
76543210
00000000 -立即设备复位
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中的各字段允许用于多种由命令指定的操作。使能字包含若干字段,用以指出SCB中的这些字段对该命令的用途。它还有一些指示位,用以定义要使用的回答指示的类型。
-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
在使用命令链接的请求中,用来指向下一个TCB。
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在***存贮器208中建立各SCB块。在下列资料中描述了***程序的操作:“PS/2 BIOS接口技术参考书”(IBM出版物号68×-2341-00;“IBM PS/2操作***指南”(IBM出版物号为GG24-3225-0)。如前文所述,一个SCB格式提供了缓存区地址、链地址和TSB地址。在分页存贮器***中,SCB、缓存区地址、链地址及TSB地址都是***作***“钉(pinned)”在***存贮器中的。就是说,有一段***存贮器为此目的而被锁住。为便于描述,图中给出一个SCB 212,它包括一个TSB 214、一个指向数据缓存区218和220的间接表216以及指向SCB 222的链地址。需要理解,根据图8-11所示的格式,在***存贮器208中可以格式化一组类似的SCB。
子***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提供一个SCB的地址,通过线250向引起注意端口(未画出)提供命令类型和要执行命令的设备。
作为译码处理的一部分,该命令要被进行有效性检验进而被接受或被拒绝。假定该命令被接受了,则子***把该状态写入命令忙/状态端口(图中未画出),并指向要执行的命令。
子***利用总线控制器232中的总线控制功能启动微通道204上的总线周期。此时***存贮器是一个受控微通道存贮器(Micre Channel memory slave),其微通道控制和地址线均由总线控制器232来驱动。***存贮器驱动微通道数据总线,而总线控制器功能把SCB(一个或多个)传送给子***的本机存贮器238。一旦子***接受了一个SCB,在微处理器中运行的程序便对命令译码并把它指向指令的设备。这个程序操作将参考图14-20中的流程图来详细解释。为完成传送,要把缓存区地址装入总线控制器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的完成或终止状态经由线264寻址存贮于TSB224,其状态数据经线268提供给TSB224。
子***202还把SCB或SCB链的中断状态装入中断状态端口(未画出)。它经由线264向主***提供了一个物理中断返回(back)。
在给出命令处理***的流程图描述之前,先作一般性描述,以便使图14-20的流程图中使用的术语更易于理解。
提交命令方法与命令类型
本发明规定了两种向子***传递命令的方法。某些子***范围内的硬件规定功能可由硬件控制来调用,这个硬件控制可借助子***控制端口中的程序修改位来访问。硬件控制提供了改变子***状态的一种快速高优先级方式,以这种方式提出的子***复位命令的优先级超
过把数据写入命令端口和引起注意端口而提交给子***的所有其它命令。
利用发给子***控制端口的OUT(输出)命令和修改某些规定位,可启动硬件控制。
对于RR、DMA以及EI位的修改不能由某些具体命令来说明但这些位对子***也具有子***范围内的效用它们将在下文中的“主处理器试图设置I/O端口的结果”一节以及附表1中的表中概要地描述。
通过写命令端口和引起注意端口来提交的命令归于两大类:间接命令(以SCB为基础)和直接命令。由引起注意请求代码3来区分以SCB为基础的命令。在SCB命令情况下,命令接口端口包含SCB起点的实际存贮器地址。直接命令有三种类型,由唯一的引起注意代码设置来决定。所有的直接命令在命令端口中有一个32位的值,它与引起注意代码一起定义了要由子***完成的动作。提供了两个引起注意代码0(复位)和E(中断复位),以便能在具有引起注意代码“O1h”的其他直接命令之上来对这些命令进行特殊情况处理。有时把直接命令用术语“立即命令”来描述,以指出命令端口中包含的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。
主处理器向子***控制端口发出“OVT”命令,使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端口的结果
在附表1的决策表中,概括了子***处于不同状态时主处理器试图置I/O端口的结果。各状态是在图12中的状态图里所使用的那些,其中SSCP的意义是“子***控制端口”。
对附表1中表的注释所作的解释:
1.***把RSP置1,使子***处于“复位未决开始”状态。
2.如果RST被置1,则在子***控制端口中的所有其他位均被子***置1,这是进入“复位未决开始”状态的一部分。
3.当子***处于“接受命令”状态时,***对引起注意端口写把子***带入“译码”状态。
4.当子***处在“复位未决完成”状态时,***对RST置零把子***放入“复位正在进行”状态。
5.当子***处于“拒绝”状态时,若***置RR为1则把子***置于“接受命令”状态,除非置RR的输出(OUT)命令也置RST为1。如果RST被置1,则RR的改变被忽略,于是子***被置于“复位未决开始”状态。当子***处于“拒绝”状态时,RR被置零将不会清除“拒绝”状态。
命令处理和译码处理过程
这一节中关于命令处理部分的讨论集中于译码过程。与译码过程中的接受命令有关的决策表示于表1、与译码过程中的拒绝命令有关的决策表示于表2、3和4中。
需要存在一个硬件控制的处理,子***用它来监视主处理器对命令,引起注意及子***控制三个端口的写入。这个处理称作命令处理器,它对写子***控制端口的RST位这一类动作的反应是调用硬件控制来对子***复位。命令处理器还负责调用一个在硬件或固件(firmware)中的一个处理过程,子***用它来确定是否接受一个经引起注意和命令端口提交的命令。当子***处于“接受命令”状态并检测到一个主处理器对引起注意端口的写入时,命令处理器便调用这一处理过程。命令处理器把子***放在“译码”状态,并调用“译码处理过程”来决定它是否能接受这个新提交的命令。
当处于译码状态时,命令处理器还负责保证主处理器通过写命令端口或引起注意端口来试图提交的新命令被锁存起来。命令处理器还响应主程序对子***控制器的写入,保证子***在任何状态都允许由主程序来改变RST位。正是这一功能使来自主处理器的硬件控制的“子***复位”命令能被接受。根据子***的状态,命令处理器还允许进行其他硬件控制。
由于译码处理过程有确定子***是否能接受一个指向设备的命令的任务,需要注意下列各类数据:
*命令类型,命令的引起注意代码决定了一个命令将被如何处理。命令被分成如下各类:设备复位、中断复位、SCB、立即命令。如果一个实际应用***中支持“依赖设备的注意(Device Dependent Attenticn)”,它将根据该实际应用的规定,列入SCB类或立即命令类。不被支持的引起注意代码被译码处理过程所拒绝,这些不是SCB命令的无效命令注意代码被称作直接命令。
*设备号。命令指向的设备包含在引起注意端口。为了确定命令指向哪一个设备,故需要这个数据。译码处理过程还利用这个数据来设备状态信息,它使子***确定这个新命令是否能被接受或拒绝。无效设备地址会使命令被拒绝。
*命令代码,当处理直接命令时,该命令的位0-7中的8位命令代码被检验,以确认命令代码。不能辨认的8位立即命令代码会使命令作为无效命令被拒绝。
*设备状态,这是设备的当前状态,它规定了在给定的当前设备状态下该命令能否被接受。本发明定义了一组状态,并指出了在一个给定状态下一个命令是否可以被接受。这一数据将在下文中的“译码
处理过程决策表”中详细陈述。
当译码处理过程决定接受一个命令时,它需要保证设备状态被更新以表明接受了新命令,还要使该设备定时开始执行新命令。译码处理过程还必须保证命令处理器把子***从译码状态脱出并进入“接受命令”状态。本发明并不坚持要求设备状态复位及新命令定时要在译码处理过程中完成,但认为这种情况在概念上较为简单。
译码过程必须使所要求的新命令被安排好预定时间以便在所要求的设备上执行,认识到这一点也很重要。“安排预定时间(scheduled)”这个词用于“设备O复位”以外的所有其它命令,因为子***处理器周期的使用需要在其它设备正在完成的各任务之间分。在“设备零复位”的情况下,这是一个特殊情况,因为这一动作产生一个由软件调用的子***复位,并要求子***当前为其它设备安排的所有活动全部停止。
当一个命令被告知已经接受时,是命令处理器把命令忙/状态端口置位,从而使忙位和拒绝位都被置0。
当译码过程拒绝一个命令时,命令处理器便得到拒绝的理由。子***从译码状态过渡到拒绝状态。在命令忙/状态端口的忙位和拒绝位被置1。在拒绝位被置1的同时,该端口的S位被设置,使其包含的代码值指出命令被拒绝的原因。
在完成译码处理过程时,若干目标得到了满足:
*被译码处理过程接受的立即命令将不会在以后要求拒绝命令中断。除非有硬件故障,否则该立即命令由译码处理过程接受之后将正确地执行。
*任何由于当前设备状态的原因而不能被执行的命令都尽可能快
地被拒绝而不引起子***中断。拒绝状态和拒绝理由被保持下来共主程序使用,直至明确地清除掉时为止。
*“设备复位”之类的特殊引起注意代码尽可能快地被安排执行。
*SCB命令被安排时间取出。译码处理过程不检查SCB中字段值的有效性。
对于当各种命令呈交给一个设备时该设备如何作出反应的描述都定义在“译码处理过程决策表”中的一组决策表里,对它将作简要讨论。作为总概括,这些规则可描述如下:
1.硬件控制的子***复位总会被子***接受。
2.子***处于下列状态时,指向引起注意端口的命令将被忽略:译码在进行、子***拒绝、子***复位在进行、子***复位未决开始、或子***复位未决完成。
3.即使一个设备正忙于执行其它命令,该设备也将接受“设备复位”命令。对这条规则有三个例外。
-在引起注意端口指定的设备号无效。
-在位0-7中的8位立即命令代码不等于零。
一个***处于上述第二款所规定的状态之一,就是说,它忽略靠试图写入引起注意端口所提交的任何命令。
4.当一个设备正忙于执行一个命令,它将以设备忙代码拒绝一个新命令,但下列情况例外:
-新命令是“设备复位”。
-设备在忙于执行一个SCB,而该新命令是“挂起”的。(这种情况下,在设备被置于“以不能执行SCB”状态之前允许完成正在执行的SCB。一个“挂起”总是使该设备中被执行的最后一个
SCB请求中断。)
-设备在忙于执行一个SCB,而新命令是“SCB中断复位”。(当前执行的SCB立即停止,转而执行SCB中断复位功能。被停止的SCB允许继续执行。)
5.当设备的中断排队满时,它将拒绝一个新命令,除非有下列情况:
-设备复位
-中断复位(SCB或“立即的”)
-子***复位(硬件或软件控制的)
6.当一个设备没有忙于执行一个命令时,如果该设备已经被置于“因先前挂起的命令而不能执行SCB”的状态时,它将拒绝一个SCB命令。
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完成了4行,设备便进入“闭”状态。当设备执行一个SCB链时,从取出和执行SCB命令状态直到该链全部完成或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命令是首次被一个设备接受时在命令端口的地址被译码处理过程送到这一个区。当链中的下一个SCB要被设备任务取出时,这一状态分量便被更新为那个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时曾经有效的SCB CMD值。当产生这一状态时设备被置于“闭”状态。SCB中断复位或立即中断复位能使该设备重新进入SCB状态,如果在执行这些之后中断排队不再满的话。
14.“中断排队满使SCB挂起”。如果因为设备中断排队已满而把该设备从SCB状态脱出而置于“闭”状态,则这一状态分量有值“是”。当中断复位使设备中断排队退出这一状态等于“是”时的排队状态时,状态分量“旧的CMD状态”和“SCB取地址”被用于重新启动SCB的执行。当设备不处于因中断排队满而使SCB执行被“挂起”的状态时,这一分量之值为“否”。
15.“在执行SCB的接受SCB中断复位”。当一个设备正忙于执行一个SCB时接受了SCC中断复位命令,则这一状态分量等于“是”。当该设备处于“闭”状态时接受了SCB中断复位,则该值等于“否”。
16.设备中断排队,这一状态分量为设备的内部中断排队分化空间。它得要包括当前最老的中断元素的位置以及为其后的中断所能提供的条目的位置和数量。
17.SCB逻辑中断计数。每当设备产生一个SCB逻辑中断这一状态分量便增1。
利用这些状态分量中的一些,译码处理过程按附表2、3、4、5所示决策表来接受或拒绝一个命令。在这些表中,符号DC意思是“不必管它(Don′t Care)”,于是这个状态不被测试来确定译码处理过程的输出。符号NA意思是“不能应用的(Not Applicable)”,意思是说这一状态不能作为译码处理过程所需
要测试的一部分而存在。
命令传递***包括一个命令处理器和一个译码处理器。这些功能可以在硬件和/或软件中实现。因此,它们的实施以流程图形式示于图14-20,作为前文中用于解释***操作的图2和图12所示框图的补充。特别是,在图12中,命令处理器和译码处理器是以硬件形式作为举例包含在子***202的命令传递逻辑230和微处理器234中。命令处理器处理在I/O端口接受的命令,而译码处理器对命令译码以供子***或其附加设备之一去执行。
图14是命令传递***的总流程图。当子***检测到主处理器向下列任何一个I/O地址的写入时,便以中断方式进入命令处理器。这些I/O地址是:子***控制端口(SSCP),引起注意端口(AP),或命令接口端口(CP),(如块500所示)。如块502所指出的,如果命令处理器能这样做了,它便使其处理主处理器对命令接口端口和引起注意端口的写入过程不能受任何中断。如果这类中断不能被阻止,那么对这些端口的写入便被忽略,直至其后命令处理器重新进入它的处理过程。在决策块504,确定进入命令处理器是否是试图写SSCP的结果。如果是,则此逻辑继续前进到块506去处理对SSCP的写入。这一过程参考图15和图16详细描述。在写完SSCP之后,该逻辑进入块508,在那里命令处理器重新使能处理主处理器对引起注意端口和命令接口端口的写入,然后循环返回块500。
如果在决策块504发现不是对SSCP写入,则进入决策块510以确定主计算机是否是试图写命令接口端口。如果是这样,则该逻辑进入块512去处理对命令接口端口的写入。这一过程参照图
18详细描述。在写入命令接口端口之后,该逻辑再次进入块508在那里命令处理器重新使能处理主处理器对引起注意端口的写入,然后循环返回块500。
如果决策块500处发现不是写命令接口端口,便进入块514去处理对引起注意端口的写入。这一过程参照图17详细描述。
下面对照图15和图16来详细描述图14中的块506。对照图15,主处理器写入SSCP的值在块516被读入。在块518确定是否是试图对子***复位。如果是,则进入块520,在那里对SSCP的RST位置1。再进入决策块522,在那里确定子***执行状态是否接受命令状态。如果是,则子***状态被置于“子***复位未决开始”状态,如块524所指出的那样。然后,如块526所指出的那样,调用子***硬件功能来执行子***复位未决。当执行子***复位未决功能的硬件功能完成时,子***执行状态被置于“子***未决完成”状态,如块528所示。然后返回图14中的块508使能主处理器中断,如前面所解释的那样。
如果在决策块522确定该子***执行状态不是接受命令状态,则进入决策块530以确定子***执行状态是否是“子***复位未决开始”。如果是,则进行块532、重新使主处理器能够写入命令接口端口和引起注意端口。然后命令处理器把控制转向硬件处理过程,执行复位未决功能,如块535所示。
如果在决策块530确定了子***执行状态不是“子***复位未决开始”,则进行决策块536,以确定子***执行状态是否是“子***复位未决完成”。如果是,则返回图14中的块508,使能主处理器中断,如前面描述的那样。如果不是,则进入决策块538以
确定子***执行状态是否是“拒绝”状态。如果是,进入块524,把子***放在“复位未决开始”状态,然后继续前面描述过的过程。如果不是,则进行决策块540以确定子***执行状态是否等于“译码”,如果是,进入块542。在那里,当主计算机把RST置1的时候正在进行的译码处理过程的执行被放弃了。对RST置1使子***放弃了“复位未决开始”状态,如前已解释那样。
如果在决策块578确定了不曾试图使子***复位,则进入块548,那里使SSCP的RST位置0。继续进入决策块550,在那里确定子***的执行状态是不是“译码”。如果是,则进入块552,在那里命令处理器重新使能处理主处理器写命令端口和引起注意端口。然后命令处理器把控制转向译码处理过程,如块554所示。
如果在决策块550确定子***执行状态不是“译码”,则进入决策块556,以确定子***执行状态是否是“子***复位未决开始”如果是,则进入块558去迫使所有SSCP位除RST位外均置零然后进入块532使能写入命令接口端口和引起注意端口,再继续如前面解释的过程。
如果在决策块556所作的判定是子***执行状态不是“子***复位未决开始”,则继续进入决策块560,在那里确定子***决策状态是否是“复位未决结束”,如果是,则进入块562,在那里子***执行状态被设置为“子***复位在进行”状态。在块564,命令处理器重新使能处理主处理器写命令接口端口和引起注意端口,然后命令处理器调用“子***复位在进行”功能,如块566所示。在
此时,子***执行状态是“准备好接受命令”,如块568所示,然后返回图14中的块508使能主处理器中断,如前面解释的那样。
如果在决策块560确定子***执行状态不是“复位未决完成”则进入块570,在那里子***执行为“拒绝”或“接受”。在块572,SSCP的位0被置成SSCP的EI位。子***执行状态的中断使能分量就置成“是(YES)”,如块574所示。在块576,检测中断功能被调用来确定是否有任何设备(从设备0开始)能发生中断。SSCP的位1被置入子***控制端口的DMA,如块578所示。SSCP的位6、4、3和2被置入SSCP中的相应位置,如块580所示。SSCP的位5被置入SSCP的RR位,如块582所示。
写SSCP过程在图16中在决策块584处继续,在那里确定SSCP中的RR位是否等于零。如果是,则进入决策块586,在那里确定子***执行状态是否为“接受命令”。如果是,则进入决策块588以确定子***是否有任何“设备在活动(active)”分量等于“否(NO)”。如果是,则进入图14中的块508使能主处理器中断,如前文解释的那样。如果任何“设备在活动”分量等于“是(YES)”,则进入块590,在那里命令处理器重新使能处理器写命令接口端口和引起注意端口。在块592,命令处理器从处理它的活动返回,把控制转向子***的被中断了的活动。
如果在决策块586确定子***执行状态不是“接受命令”,则进入决策块594,在那里确定子***执进状态是否是“***复位在进行”状态。如果是,则进入块596,在那里命令处理器重新使能处理主处理器写命令接口端口和引起注意端口。然后命令处理器从
“中断”转向块598所指出的“子***复位在进行”功能。
如果在决策块594确定子***执行状态不是“复位在进行”,则进入决策块588,进而继续前面解释过的过程。
如果在决策块584确定RR位不等于零,则进入决策块600在那里确定子***执行状态是否等于“拒绝”。如果是,则进入块602,在那里子***被从拒绝态脱出而放入接受命令状态。下一步进入决策块588,然后按前面解释的那样进行。如果在决策块600确定子***执行状态。不等于“拒绝”,则进入决策块588并按前面解释的那样继续进行。
下面对照图17详细描述图14中的块514,这是处理对引起注意端口写。在决策块604,确定子***执行状态是否等于“译码”如果是,则如块606所示忽略主处理器写引起注意端口,并返回图15A所示块552继续进行前面解释的过程。如果在决策块604确定子***执行状态不等于“译码”,则进入决策块608确定子***执行状态是否等于“拒绝”。如果是,则如块610所示忽略主计算机写引起注意端口,并返回图16中的块588,继续前面解释的过程。
如果在决策块608确定子***执行状态不等于“拒绝”,则进入决策块612,在那里确定子***状态是否等于“复位未决开始”如果是,则如块614所示忽略主计算机写引起注意端口并返回图15c中的块532,继续前面解释的过程。
如果在决策块612确定子***执行状态不等于“复位未决”,则进入决策块616,以确定子***状态是否等于“复位未决完成”如果是,则如块618所指示,主计算机对引起注意端口写被忽略,
然后返回图14中的块508,使能主处理器中断,如前面解释的那样。
如果在决策块616确定子***执行状态不等于“复位未决完成”则进入决策块620,在那里确定子***执行状态是否等于“子***复位在进行”。如果是,则如块622所示忽略主计算机对引起注意端口的写入,然后返回图16中的块596,继续前面解释过的过程。
如果在块620确定子***执行状态不等于“子***复位在进行”则继续进行块624,在那里子***执行状态是在“接受”状态,引起注意端口在块626中更新。然后子***执行状态被设置成“译码”如块628所示。然后命令处理器在块630调用译码处理过程,其细节将在下文中参考图19和20来描述。
在决策块632确定译码处理过程是否接受了该命令。如果是,则进入块624,在那里子***执行状态被设置成“接受命令”,然后返回图16中的决策块588去进行前已解释的过程。
如果在决策块632中确定译码处理过程未曾接受命令,则进入块636,在那里将子***执行状态置成“拒绝”。在块638,命令忙/状态端口中的B位和REJ位均被置1,而S位的设置由译码处理过程来确定。然后返回决策块图16中的决策块588,继续前面解释的过程。
下面对照图18详细描述图14中的块512,即处理对命令接口端口的写入。在决策块640,确定子***执行状态是否等于“译码”。如果是,则如块642所示,忽略主计算机写命令接口端口,然后返回图15A中的块552,继续前面已解释的过程。如果在块
640确定子***执行状态不等于“译码”,则进入决策块644,在那里确定子***执行状态是否等于“拒绝”,如果是,主计算机对命令接口端口的写入被忽略,如块646所示,然后返回图16中的块588去继续前面解释过的过程。
如果在决策块644中确定子***执行状态不等于“拒绝”,进入决策块643,在那里确定子***执行状态是否等于“复位未决开始”。如果是,例如块650所示,忽略主计算机写命令接口端口,然后返回图15c中的块532,继续前面解释的过程。
如果在决策块648确定子***执行状态不等于“复位未决开始”进入决策块652,在那里确定子***执行状态是否等于“复位未决完成”。如果是,则如块654所示,忽略主计算机写命令接口端口然后返回图14中的块508,继续前面解释过的过程。
如果在决策块652确定子***执行状态不等于“复位未决完成”则进入决策块656,在那里确定子***执行状态是否等于“子***复位在进行”。如果是,则如块658所示忽略主计算机写命令接口端口,而返回图16中的块596去继续前面已解释的过程。
如果在决策块656确定子***执行状态不等于“子***复位在进行”,则进入块660,在那里子***执行状态是“接受”状态。于是如块662所示,命令接口端口被主计算机提供之值更新。然后返回图16中的决策块588,继续前面解释过的过程。
命令处理器使用一个“与调用(call)相似的”过程来调用“译码处理过程”,以确定一个命令是否能被接受。如果该命令被接受了,则译码处理过程安排一个设备任务,在它把控制转向由命令处理器指出一个命令是否被接受或拒绝之后,该设备任务便去执行该命
令。如果一个命令被接受去执行,则译码过程相应地设置设备状态。如果一个命令被拒绝,则译码过程回送一个值,命令处理器把它作为S位之怎写入命令忙/状态端口。
译码过程是通过来自命令处理器的调用而进入的。一旦进入了译码过程,则可以命令接口端口得到要被处理的命令。引起注意端口包含命令类型,并识别出命令所指向的设备。
下面参照图19和图20来详细描述译码处理过程。在决策块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在那里确定该设备是否处于“可得到”状态。如果不是,则进入块706,在那里把回送代码设为“拒绝”。具体的拒绝代码为“设备不可得到”,如块708所示。然后返回块676继续前面解
释过的过程。
如果在决策块704确定该设备处于“可得到”状态,现等参考图20A,继续进入决策块710,在那里确定该设备是否处于“忙”状态。如果是,则进入决策块712,在那里确定这个新命令是否是“中断复位”。如果不是,则进入决策块714以确定新命令是否为“挂起”。如果不是,则在块716把回送码设为“拒绝”。其理由为“设备忙”,如块718所示。然后返回图19B中的块676,继续前面解释过的过程。
如果在决策块712或714中有一个的决策结果为“是”,则进入决策块720,在那里确定当前该设备是否在执行一个SCB。如果不是,则返回块716去继续前面解释过的过程。如果是,则进入决策块722。如果在决策块710确定设备“不忙”,则逻辑过程也进入决策块722,在决策块722确定该新命令的引起注意代码是否为“中断复位”。如果是,则返回图19A的块686。如果不是,则进入决策块724,在那里确定该设备中断排队是否满。如果是,则译码处理过程在块726中把它的回送代码设置为“拒绝”。具体拒绝代码为“中断排队满”,如块728中所示。然后返回图19B中的块676去继续前面解释过的过程。
如果在决策块724确定设备中断排队不满,则进入决策块730,在那里确定新命令是否是“挂起”。如果是,则返回图19A中的块686并继续前面解释过的过程。如果不是,则新命令必定是SCB,如块732所示。接下来,在决策块734确定设备状态是否允许SCB的执行。如果是,则返回图19A中的块688,并继续前面解释过的过程。如果不是,则在块736中把回送代码置成“拒绝”。
拒绝原因是“SCB执行被拒绝”。然后返回图19B中的块676去继续前面解释过的过程。
总之,已经描述了在主计算机和至少一个可能有附加设备的智能子***之间传送信息的命令接口。以主处理器发送的信息包括直接命令和间接命令,后者如子***控制块(PCB)的地址,该SCB中包含了指定要由识别出的一个智能子***或设备来完成的操作。从一个智能子***传回主处理器的信息包括“忙信号”和状态信号。忙信号指示出一个智能子***的命令接口端口和引起注意端口是否“忙”而状态信号指出这个智能子***及其附加设备的操作状态。
Claims (12)
1、一个数据处理***,包括主***和至少一个可能有附加设备的子***,其特点是:
一个命令接口,用于在所述主***和所述一个子***之间传送信息,该命令接口包括:
第一端口,用于接受来自所述主***的直接命令或间接命令,这些命令指出要由该子***或一个附加设备来完成的操作的类型;和
第二端口,用于接收来自所述主***的代码,指出在所述第一端口接受的是所述直接命令还是所述间接命令,还指出是所述一个子***还是一个附加设备要去执行在所述第一端口接受的命令。
2、如权利要求1所述的数据处理***,其特点是:所述直接命令是一个立即命令,它包含了所述一个子***或一个设备立即走执行该命令所必须的全部信息;而间接命令是一个子***控制块(SCB)的地址,子***要从主***取出这个SCB供其后去执行。
3、权利要求2中的数据处理***,其特点是:在所述第二端口接收的代码不仅指示出是否为间接命令,还编码指出所接收的是一组不同的立即命令中的哪一个。
4、权利要求2中的数据处理***,其特点是:有一个第三端口用于从所述一个子***向所述主***提供代码,以指出所述第三端口和第二端口是否为“忙”,还指出是否一个子***在接受或拒绝命令。
5、权利要求4中的数据处理***,其特点是:有一个第四端口用于从所述主***向所述子***提供控制信号;所述控制信号包括一个子***复位信号。
6、权利要求5中的数据处理***,其特点是:有一个第五端口,用于从所述子***向所述主***提供一个代码,指出是所述一个子***还是一个设备在向主***提供中断。
7、操作一个数据处理***的方法,该***包括一个主***和至少一个可能带有附加设备的子***,还有一个在所述主***和所述一个子***之间传递信息的命令接口。该方法以下述步骤为特征:
从所述主***向所述命令接口上的第一端口提供一个直接命令或间接命令,这些命令指出要由所述子***或一个附加设备完成的操作类型;以及
从所述主***向所述命令接口的第二端口提供一个代码,它指出在所述第一端口接受的是所述直接命令还是所述间接命令,该代码指出是所述子***还是某个附加设备要去完成在所述第一端口接受的命令。
8、权利要求7中的方法,其特点在于:所述直接命令是一个立即命令。它包含为所述子***或某一设备要立即执行该命令所必须的全部信息,而间接命令是一个子***控制块(SCB)的地址,子***从主***中取出这个SCB供其后执行。
9、权利要求8中的方法,其特点在于:在所述第二端口接受的代码不仅指出是否为间接命令,还编码指出是一组不同立即命令类型中的哪一个。
10、权利要求8中的方法,以下述步骤为其特征:
从所述一个子***向所述命令接口上的第三个端口提供一个代码由所述主***使用,该代码指示出所述一个子***是否在接受或拒绝命令。
11、权利要求10中的方法,以下述步骤为特征:
从所述子***向所述命令接口的第四个端口提供所述子***需要的控制信号,这些控制信号包括一个子***复位信号。
12、权利要求11中的方法,以下述步骤为特征:
从所述一个子***向所述命令接口的第五个端口提供一个代码,指出是哪些设备正在向所述主***提供中断。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/364,931 US5131082A (en) | 1989-06-09 | 1989-06-09 | Command delivery for a computing system for transfers between a host and subsystem including providing direct commands or indirect commands indicating the address of the subsystem control block |
US07/364,931 | 1989-06-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1048938A CN1048938A (zh) | 1991-01-30 |
CN1021380C true CN1021380C (zh) | 1993-06-23 |
Family
ID=23436743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN90103808A Expired - Lifetime CN1021380C (zh) | 1989-06-09 | 1990-05-28 | 计算***的命令传递 |
Country Status (16)
Country | Link |
---|---|
US (1) | US5131082A (zh) |
EP (1) | EP0402054B1 (zh) |
JP (1) | JPH0670783B2 (zh) |
KR (1) | KR920008459B1 (zh) |
CN (1) | CN1021380C (zh) |
AR (1) | AR246125A1 (zh) |
AU (1) | AU630699B2 (zh) |
BR (1) | BR9002710A (zh) |
CA (1) | CA2012400C (zh) |
CO (1) | CO4700362A1 (zh) |
DE (1) | DE69031547T2 (zh) |
GB (1) | GB9008084D0 (zh) |
MY (1) | MY105624A (zh) |
NZ (1) | NZ233824A (zh) |
PE (1) | PE34890A1 (zh) |
PH (1) | PH31356A (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5850573A (en) * | 1990-08-16 | 1998-12-15 | Canon Kabushiki Kaisha | Control method for peripheral device in host computer connectable to a plurality of peripheral devices |
US5251312A (en) * | 1991-12-30 | 1993-10-05 | Sun Microsystems, Inc. | Method and apparatus for the prevention of race conditions during dynamic chaining operations |
US5388218A (en) * | 1992-02-14 | 1995-02-07 | Advanced Micro Devices, Inc. | Apparatus and method for supporting a transfer trapping discipline for a non-enabled peripheral unit within a computing system |
AU4229293A (en) * | 1992-05-13 | 1993-12-13 | Southwestern Bell Technology Resources, Inc. | Open architecture interface storage controller |
US5659690A (en) * | 1992-10-15 | 1997-08-19 | Adaptec, Inc. | Programmably configurable host adapter integrated circuit including a RISC processor |
US5613141A (en) * | 1992-10-19 | 1997-03-18 | International Business Machines Corporation | Data storage subsystem having dedicated links connecting a host adapter, controller and direct access storage devices |
US5794056A (en) * | 1993-10-04 | 1998-08-11 | International Business Machines Corporation | System for automatic buffering of commands for DASD units |
US5630147A (en) * | 1993-12-17 | 1997-05-13 | Intel Corporation | System management shadow port |
AU1930595A (en) * | 1995-02-24 | 1996-09-11 | Intel Corporation | System management shadow port |
US5802546A (en) * | 1995-12-13 | 1998-09-01 | International Business Machines Corp. | Status handling for transfer of data blocks between a local side and a host side |
US5794069A (en) * | 1995-12-13 | 1998-08-11 | International Business Machines Corp. | Information handling system using default status conditions for transfer of data blocks |
US5974530A (en) * | 1996-03-15 | 1999-10-26 | Adaptec, Inc. | Integrated PCI buffer controller and XOR function circuit |
US5812877A (en) * | 1996-03-15 | 1998-09-22 | Adaptec, Inc. | I/O command block chain structure in a memory |
US5923896A (en) * | 1996-03-15 | 1999-07-13 | Adaptec, Inc. | Method for sequencing execution of I/O command blocks in a chain structure by setting hold-off flags and configuring a counter in each I/O command block |
US5991861A (en) * | 1996-03-15 | 1999-11-23 | Adaptec, Inc. | Method of enabling and disabling a data function in an integrated circuit |
US5850567A (en) * | 1996-03-15 | 1998-12-15 | Adaptec, Inc. | Method for specifying concurrent execution of a string of I/O command blocks in a chain structure |
US5867732A (en) * | 1996-03-15 | 1999-02-02 | Adaptec, Inc. | Hardware method for verifying that an area of memory has only zero values |
US5797034A (en) * | 1996-03-15 | 1998-08-18 | Adaptec, Inc. | Method for specifying execution of only one of a pair of I/O command blocks in a chain structure |
US5758187A (en) * | 1996-03-15 | 1998-05-26 | Adaptec, Inc. | Method for enhancing performance of a RAID 1 read operation using a pair of I/O command blocks in a chain structure |
US5881250A (en) * | 1996-03-15 | 1999-03-09 | Adaptec, Inc. | Host adapter system including an integrated PCI buffer controller and XOR function circuit |
US5892969A (en) * | 1996-03-15 | 1999-04-06 | Adaptec, Inc. | Method for concurrently executing a configured string of concurrent I/O command blocks within a chain to perform a raid 5 I/O operation |
JPH1097385A (ja) * | 1996-09-19 | 1998-04-14 | Toshiba Corp | ディスク記録再生装置及び同装置に適用するインターフェース制御装置 |
KR100512165B1 (ko) * | 1998-05-08 | 2005-11-11 | 삼성전자주식회사 | 충전 가능한 배터리의 용량 측정 방법 |
US7444642B2 (en) * | 2001-11-15 | 2008-10-28 | Intel Corporation | Method for indicating completion status of asynchronous events |
CN100461716C (zh) * | 2005-01-28 | 2009-02-11 | 华为技术有限公司 | 基于模拟端口的通信方法 |
US8719516B2 (en) * | 2009-10-21 | 2014-05-06 | Micron Technology, Inc. | Memory having internal processors and methods of controlling memory access |
US9952801B2 (en) * | 2015-06-26 | 2018-04-24 | Intel Corporation | Accelerated address indirection table lookup for wear-leveled non-volatile memory |
US10318193B2 (en) * | 2015-09-14 | 2019-06-11 | Sandisk Technologies Llc | Systems and methods of command authorization |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3787891A (en) * | 1972-07-03 | 1974-01-22 | Ibm | Signal processor instruction for non-blocking communication between data processing units |
US3778780A (en) * | 1972-07-05 | 1973-12-11 | Ibm | Operation request block usage |
AU518055B2 (en) * | 1977-06-06 | 1981-09-10 | Sits Soc It Telecom Siemens | Interface unit between a data processor anda remote unit |
SU752318A1 (ru) * | 1978-07-17 | 1980-07-30 | Предприятие П/Я А-7390 | Мультиплексный канал |
US4783739A (en) * | 1979-11-05 | 1988-11-08 | Geophysical Service Inc. | Input/output command processor |
US4445176A (en) * | 1979-12-28 | 1984-04-24 | International Business Machines Corporation | Block transfers of information in data processing networks |
US4449182A (en) * | 1981-10-05 | 1984-05-15 | Digital Equipment Corporation | Interface between a pair of processors, such as host and peripheral-controlling processors in data processing systems |
US4553202A (en) * | 1982-05-06 | 1985-11-12 | International Business Machines Corporation | User controlled dialog resource switching in a multi-tasking word processor |
US4653020A (en) * | 1983-10-17 | 1987-03-24 | International Business Machines Corporation | Display of multiple data windows in a multi-tasking system |
US4855949A (en) * | 1986-05-05 | 1989-08-08 | Garland Anthony C | NOCHANGE attribute mode |
DE3850881T2 (de) * | 1988-10-28 | 1995-03-09 | Ibm | Verfahren und Vorrichtung zur Nachrichtenübertragung zwischen Quellen- und Zielanwender durch einen anteilig genutzten Speicher. |
-
1989
- 1989-06-09 US US07/364,931 patent/US5131082A/en not_active Expired - Fee Related
-
1990
- 1990-03-16 CA CA002012400A patent/CA2012400C/en not_active Expired - Fee Related
- 1990-04-10 GB GB909008084A patent/GB9008084D0/en active Pending
- 1990-05-03 PH PH40473A patent/PH31356A/en unknown
- 1990-05-15 MY MYPI90000776A patent/MY105624A/en unknown
- 1990-05-25 AU AU55978/90A patent/AU630699B2/en not_active Ceased
- 1990-05-25 NZ NZ233824A patent/NZ233824A/xx unknown
- 1990-05-28 CN CN90103808A patent/CN1021380C/zh not_active Expired - Lifetime
- 1990-05-30 KR KR1019900007842A patent/KR920008459B1/ko not_active IP Right Cessation
- 1990-05-31 EP EP90305971A patent/EP0402054B1/en not_active Expired - Lifetime
- 1990-05-31 DE DE69031547T patent/DE69031547T2/de not_active Expired - Lifetime
- 1990-05-31 PE PE1990170200A patent/PE34890A1/es unknown
- 1990-06-01 CO CO92323128A patent/CO4700362A1/es unknown
- 1990-06-01 AR AR90317010A patent/AR246125A1/es active
- 1990-06-07 JP JP2147548A patent/JPH0670783B2/ja not_active Expired - Lifetime
- 1990-06-08 BR BR909002710A patent/BR9002710A/pt unknown
Also Published As
Publication number | Publication date |
---|---|
DE69031547D1 (de) | 1997-11-13 |
EP0402054A3 (en) | 1992-08-05 |
KR920008459B1 (ko) | 1992-09-30 |
KR910001557A (ko) | 1991-01-31 |
GB9008084D0 (en) | 1990-06-06 |
AU5597890A (en) | 1990-12-13 |
DE69031547T2 (de) | 1998-03-26 |
CO4700362A1 (es) | 1998-12-29 |
EP0402054A2 (en) | 1990-12-12 |
BR9002710A (pt) | 1991-08-20 |
CA2012400C (en) | 1999-03-30 |
JPH0322162A (ja) | 1991-01-30 |
AU630699B2 (en) | 1992-11-05 |
CA2012400A1 (en) | 1990-12-09 |
US5131082A (en) | 1992-07-14 |
JPH0670783B2 (ja) | 1994-09-07 |
CN1048938A (zh) | 1991-01-30 |
MY105624A (en) | 1994-11-30 |
PE34890A1 (es) | 1991-01-18 |
AR246125A1 (es) | 1994-03-30 |
NZ233824A (en) | 1992-09-25 |
EP0402054B1 (en) | 1997-10-08 |
PH31356A (en) | 1998-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1021380C (zh) | 计算***的命令传递 | |
CN1702634A (zh) | 便利无环境主机干预下的可分页模式虚拟环境存储管理 | |
CN1279449C (zh) | 微处理器 | |
CN1728685A (zh) | 促进可分页模式虚拟环境中的数据传输的方法和*** | |
CN1153155C (zh) | 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置 | |
CN1111790C (zh) | 检查点处理加速装置及具有该装置的计算机 | |
CN1287270C (zh) | 重启动翻译的指令 | |
CN1244051C (zh) | 对于处理数据的装置和方法 | |
CN1916877A (zh) | 在处理器与存储器流控制器间传送命令参数的***和方法 | |
CN1760804A (zh) | 信息处理设备,信息处理方法,及计算机程序 | |
CN1916961A (zh) | 可中断图形处理单元及其控制方法 | |
CN1584824A (zh) | 一种基于cisc结构的微处理器构架及指令实现方式 | |
CN1427335A (zh) | 电路组控制*** | |
CN1625731A (zh) | 具有多种长度指令集体系结构的可配置数据处理器 | |
CN1922576A (zh) | 操作*** | |
CN1782989A (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN1916962A (zh) | 存储和回存状态上下文在图形处理单元的方法和装置 | |
CN1609812A (zh) | 用于增强协处理器性能的***和方法 | |
CN1547705A (zh) | 用于实现流控制的通用输入/输出体系结构、协议和方法 | |
CN1573656A (zh) | 并行处理***中的电源管理***及电源管理程序 | |
CN1484787A (zh) | 处理器流水线中的硬件指令翻译 | |
CN1641567A (zh) | 自堆栈快取存储器进行快速推测性弹出操作方法及装置 | |
CN1617160A (zh) | 用于识别标准卡以及非标准卡的卡识别*** | |
CN87108350A (zh) | 装入和校验中央子***控制存贮器的装置 | |
CN1577291A (zh) | 程序调试装置、程序调试方法及程序 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C15 | Extension of patent right duration from 15 to 20 years for appl. with date before 31.12.1992 and still valid on 11.12.2001 (patent law change 1993) | ||
OR01 | Other related matters | ||
C17 | Cessation of patent right | ||
CX01 | Expiry of patent term |
Granted publication date: 19930623 |