基于操作数长度和对位的微码转移的制作方法

文档序号:6405278阅读:222来源:国知局
专利名称:基于操作数长度和对位的微码转移的制作方法
技术领域
本发明涉及数据处理系统领域,更确切地说是关系到通过从左到右的指令来管理主存中的数据的方法与设备(即从低内存地址到高内存地址或其它等效的方法处理可变长操作数),其中完成从左到右指令的微码执行这样一种转移,这种转移依据(1)操作数的长度,和(2)它的对位。
该发明关系到微程序控制的计算机或数据处理系统。这些计算机使用最小的硬件控制。微程序控制的计算机的控制主要是一些数据门,它规定数据进出寄存器、计数器、加法器等的路径。在这一系统中,一条指令(程序指令、微码、微指令或控制字)提供数据门和一个机器周期的控制。在每一机器(CPU或系统)周期内,由控制存贮读出一条新指令。
每一指令被截分为一定数目的控制字段,每一控制字段启动系统内特定的硬件控制。
其中一个控制段属于(至少可以部分地定义)下一条程序的地址。在转移的情况下,利用当前指令的控制段再结合其它的数据来形成或定义下一指令地址。在这种情况下,转移地址有赖于所说的其它数据。
本发明关系到执行一个从左到右指令时能够发生的程序转移,依据此项发明。其中转移地址由两个数据元素确定,即(1)在从左到右指令中所涉及的数据操作数的长度,和(2)当前在与主要数据存贮接口的两个或多个寄存器中的那部分操作数的对位。
在数据处理技术中条件转移是众所周知的,下面是一些例子美国专利3,570,006描述了一个多重转移的安排,其中多个预先定义的转移地址被预先建立在多个转移地址寄存器中,在程序执行时检测转移条件。当某测试条件满足时,该事实就被存放在多个触发器中的某一特定的触发器中,扫描这些触发器使得预先定义的程序转移地址能用于存贮器寻址。
美国专利3,979,725公开了一项多路程序转移的处置,其中转移地址是部分地依赖于在某个寄存器中的数据内容。更具体地说,16个只读PROM排列为4个PROM一组的4组。正在执行的16位指令中的两位被用于定PROM的地址。当条件转移出现时,指令中的另外两位用于与被确定了地址的PROM的输出相结合用来确定下一条指令的地址。所定位的PROM的输出是某寄存器中数据的函数。
美国专利4,430,706公开了依据上一次程序执行时是否转移来加载下一程序地址或是选择一个转移地址的一种安排。


图1显示了先前的IBM系统38数据处理系统的有关部分,当执行从左到右指令时,这种早先的系统提供一个转移表。
IBM系统/38的理论维护手册SY31-0649-2描述了前面的系统,在此结合该系统引证。
系统38处理系统是典型的处理多字节数据串的系统,数据串驻于主存贮10里与存贮单元一致的连续字节中。
当这种先前的数据处理系统执行一个从左到右的指令时,可能有四路微码转移,它依据(1)余留要处理的部分数据操作数的字节长度,以及(2)在与主存贮10接口的两个寄存器SA和SB中的部分操作数(也可以是整个操作数)的对位。该字节长度参数存于一个8位寄存器L之中,每一寄存器SA和SB的对位参数分别存于双位寄存器A和B中。
系统38的结构支持一套处理存放于主存贮10中的数据的指令。如图1所示,存贮10为一个字宽(即四个字节或32位)。当一条从左到右指令执行时,将从低存贮地址,例如11,向较高的存贮地址,例如12来处理存贮器10中的数据。
系统38从左到右的指令的例子是字符传送(MVC)、逻辑字符比较(CLC)、字符与(NC)、字符或(OC)、字符异或(XC)、立即与传递字节传送(MVCL)、长字符传送(MVCL)、长逻辑字符比较。这些左到右指令都是程序员们经常采用的。
这种旧系统的局限是憾悦扛龌髦芷冢ǔV荒艽硪桓鲎纸谑荨6杂诖椭噶睿绻荻晕缓统ざ仁实保梢酝贝砹礁鲎纸诨蛩母鲎纸冢钦庑枰钔庠黾踊髦芷诤臀⒙肜醇觳夂涂⒄庖荒芰Γ饩拖拗屏苏庋龅挠杏眯浴 在每一个系统38的左到右指令中,指令要包含(1)在存贮10中能找到操作数起始字节的地址,(2)从存贮器中要取操作数的长度和(3)指向存贮在所标识地址的全字长字内的操作数的首字节的指针(即字节边界13、14、15或16,操作数的存放就从这些在存贮10中定址的存贮位置开始)。
操作数的字节长度计数可是任意整数,最大长度为256。通过指令如此定义的操作数,可以存在存贮10中的任何地址,並且可将其首字节调整到13、14、15或16任一字节边界上(即操作数的首字节可以开始于如11、12的任意地址,及在存贮10定址的全字的任何字节边界。边界13称为全字(FW)边界,而边界15称定半字(HW)边界。
系统38主数据总线(没有显示)是4个字节宽。
主存贮接口寄存器SA和SB,两者均是32位(四个字节或是一个FW)。每一个寄存器SA及SB分别配备一个两位指针寄存器A和B,如图1所示,当寄存器A包含“00”时,寄存器A指向寄存器SA中的字节0,当寄存器A包含“01”时,它指向寄存器SA中字节1,等等。在寄存器SB和指针B之间也存在同样的关系。
当处理数据时,每一周期一个字节,每一周期寄存器A和B增加1,而寄存器L每一周期减1。
当对应于寄存器SA或SB的一个(或两个)指针寄存器计数到“11”(假定8位寄存器L不是“00000000”)时,它表示应当存贮该存贮器的全字内容,並且/或应当取出存贮10中的下一较高地址的全字内容(FW)及加载到该寄存器中。
如同在前面提到的手册的OS-070页开始所描述的那样,微指令中所包含的数据部分被用来为下一条微指令生成控制存贮地址部分。在左到右指令的情况下,下一条微指令可以是四个可能的微指令之一。
每一条系统38左到右微指令包含一个称为“下一地址”的字段,该字段结合象指针寄存器A和B以及长度寄存器L的状态这样的条件(图1),提供下一条微指令的地址。在这种处置下,寄存器A、C和L的状态在周期的一开始便控制着4位左到右指令的转移。
系统38的结构和处置是这样的,在同一周期内,能执行一条微指令,改变上面提到的寄存器A、B和L,並决定下一条微指令的地址。此外,寄存器SA/和SB在同一周期内都可作为源和目标两种寄存器来使用,为了完成这些功能,一个周期是很不空间的。
下一指令的地址在当前执行指令周期的早期产生,这样就允许在当前周期内尽快地开始存取下一指令。
如前所述,左到右指令所处理的要从存贮10加载的操作数的字节长度最初是装入到寄存器L之中的,这个字节长度包含在这个左到右指令自身之中。如前所述,这个长度参数可以长到256字节。在L寄存器中的长度值总要偏差1,例如值为0时表示长度为1。
当这个左到右指令处理操作数的字节时,寄存器L的值递减,每处理一个字节减1。当寄存器L的内容变成零,或在一条微指令开始时是“00000000”,它表示该微指令处理了操作数的最后一个字节,这条左到右指令已经完成。L=0一般表示还剩下一个字节。当处理一个字节而周期开始时L是0,它表示所有的字节都已经处理完了。
更确切地,在L寄存器的测试中发现“00000000”状态,该测试即引起一个地址位“1”生成,它作为下一条微指令地址的位13。
上面提到的两个测试位被装配到一个14位的地址中(即0位到13位),它的12位由测试寄存器A和B生成,而它的13位由测试寄存器L生成。这两个地址位四种可能的状态是“00”,“01”,“10”,“11”。这四种状态决定了四种可能的微码转移将发生哪一种。
总而言之,当下一地址这两位是“11”(表示寄存器SA/SB的最后一个字节已被存取,並且最后一个操作数字节已被处理),或“01”(表示寄存器SA/SB的最后字节还未处理,但最后一个操作数字节已处理了),意味着左到右指令的结尾,同时取乱惶醭绦蛑噶睢 当这两位地址内容是“00”(表示寄存器SA和SB的最后一个字节还未被处理,並且操作数的最后一个字节也还未被处理),则处理寄存器SA/SB中的下一字节。
当这两位地址位内容是“10”(表示寄存器SA和SB的最后一个字节已被处理,但还剩有需要处理的操作数的字节),存贮10的下一较高地址的全字长(FW)数据内容被取到SA/SB或由SA/SB存入。在某些情况下,需要额外的周期来决定是否取及(或)存。
以前的系统,诸如系统38还是令人满意的。但现在的发明提供了一种更有效的16路转移,在执行左到右微码指令时能更有效地使用处理器硬件,因此减少了执行左到右指令需要的处理周期数。
在以前的系统38和现在的发明之间的重要区别是系统38的长度寄存器L通常仅用于确定是否一部分操作数余留等待处理,即除非一个转移表示整个字留待处理,留待要处理的字节的数目在系统38中不能用来做为转移参数。
在系统38可用的转移不允许在单个周期内分析留下的长度和操作数对位的组合使得下一周期内能处理最佳字节数。另一方面,在现在的发明中,待处理的操作数的数量对转移是关键性的,也就是说,确定要处理的字节数目,並根据余留的操作数的量产生转移。
用这种方法,目前的发明对于余留的特定操作数的长度能最有效地利用系统数据流的通道。
图1表达了IBM系统38数据处理系统以前的技术的有关部分。
图2表达了应用于有双字长结构(DW)的数据处理的现在的发明。
图3表达了表Ⅰ中提供的信息。
图4是本发明的一般表达。
图5显示了一个数据处理系统的主要存贮和控制存贮,並用来解释此发明的操作;及图6显示了目前这项发明的进行方式,以此方式,本发明在一个周期内,(1)执行一个控制字,(2)取下一周期控制字,以及(3)为下一周期要取的控制字确定存贮地址。
就微程序控制的数据处理系统而论描述本发明。微程序控制的概念是一条微指令(指令或控制字)为系统(CPU或机器)周期的一个周期供数据门和控制。在每一个机器周期内从控制存贮中读出一个新的控制字。
每一控制字被截分为若干控制字段,这些控制字段用来执行在该CPU周期内所需要的功能。例如,一个控制字段可以激活系统中一个具体的硬件控制,如输入门,ALU控制,或操作数获取。
这些控制字放在控制存贮中,並且它们有时被称为水平微码,或HMC。程序指令,如左到右指令放在主存中。
每一个机器周期由控制存贮读出一条新指令。在一条指令内包含的数据部分(通地址字段)用来生成下条指令的控制存贮地址。在一条指令内包含的这一地址字段可以被修改,从而生成一个转移条件,这样转移条件取决于(1)当前指令的地址字段,(2)事先测试的数据敏感条件和相应所置的标志。
换句话说,在一个机器周期内,CPU执行当前微指令並形成在取下一微码指令要使用的控制存贮地址,並且取所说的指令。
图5有助于理解这项发明的基本概念。在这张图上,一个数据处理系统的主存显示在50,且其控制存贮显示在51。程序指令放在主存50,控制字放在控制存贮51。
在52显示的是左到右指令。尽管这一指令想作为若干可能的左到右指令中的任何一个,但是这个特定的指令52包含有源和目标二者。更具体的,指令52包括一个OP码字段53,一个长度字段54,而55、56两个字段包含了源操作数和目的操作数的主存地址。字段53包含了这个特定的左到右指令的名字或标识,例如它可以是字符传送(MVC)指令。字段54包含了操作数以字节计算的长度。字段55和56指向源操作数和目标操作数在主存中的地址 字段53用于确定在控制存贮51中一个特殊控制字57的地址,这个控制字被执行,並且它指向另一控制字58,当指令52继续处理时,58作为下一个要执行的控制字。因为指令52是左到右指令,控制字之一59将指定这个发明的MBR功能。MBR是一个微码转移命令,它将使用本发明的机制。当碰到这个控制字,控制字的处理进入本发明的转移结构60。入口是根据(1)剩下要处理的操作数的长度,及(2)与主存50接口的操作数-包容寄存器中的操作数的对位。
如图5所示,组成转移结构60的控制字中包含了说明MBR的控制字,例如61。执行一个像61那样的控制字能引起控制字(箭头62)被再次处理,或执行一个不同的控制字(箭头63)。
当左到右指令52的处理终止时,碰到在64表示的控制字,结果,操作数的最后一个字节存入指令52说明的目标地址,並且由主存50取出另一程序地址。
作为一个例子,按照本发明,具有8个字节宽的数据总线的一个数据处理系统的最后两个周期将包括(假定6个字节的操作数留待处理,並且所有这6个字节在一个寄存器中)(1)在一个周期处理操作数的两个字节,接着(2)在最后一个周期处理操作数的四个字节,存到目标地址並结束。
图2显示了根据本发明的一个双字长(DW)结构的数据处理系统。这个系统包括了一个64位宽,即双字长(DW)宽的主存总线,提供一对内部处理器存贮寄存器SA′和SB′,它们是DW宽。三位的指针寄存器A′和B′,分别联结到寄存器SA′和SB′。指针寄存器的内容指向它所连结的存贮寄存器中的8个字节之一。
提供一个8位L′寄存器来指明余留的要被左到右指令处理的操作数的字节长度。
还提供一条8字节宽的主数据总线(图上未显示)。
当执行左到右指令时,所有由主存贮到寄存器SA′及(或)SB′的数据取的结果都是一个双字长字由存贮取到SA′及(或)SB′。
本发明的处理器,它包含上面提到的寄存器SA′和SB′,有以下的全字(FW)、半字(HW)及字节数据通道,这些通道协助执行左到右指令;(1)从任何对位的SA′或SB′中的FW到任何方式对位的SA′或SB′中的FW的全字长传送,其中FW全字传送能直接通过使用FW寄存器名字说明或间接地使用寄存器A′或B′来说明;(2)由任何字节对位的在寄存器SA′和SB′中的半字HW到任何字节对位的SA′和SB′中的HW的半字传送和ALU操作,如前所述,分别通过寄存器A′或B′说明,及(3)来自寄存器SA′或SB′中的任何字节的字节传送和ALU操作,如前所述,分别通过寄存器A′或B′说明。
此外,这样构造和安排的图2的处理器,使得在传送或ALU操作中,取到寄存器SA′或SB′及由SA′或SB′存的动作,能在利用寄存器原来的内容作为源和(或)目标所在的同一周期内开始。
这些数据通道的有效使用,结果使处理器性能提高,这是由该项发明的字符传送转移(MBR)所提供的。MBR是一个微码转移,在左到右指令的处理过程中,以每一个处理器周期通过利用如A′和B′寄存器定义的操作数对位和寄存器L′的内容,反复地判定下次应当使用16个控制字中的哪一个。
在一个或多个控制字的序列中,16个控制字的每一个都是首控制字,它有效地使用了可利用的数据流来处理事先确定的每一个操作数的量。
数据存贮器100是两个字宽(DW),也就是说,每一个存贮位置,例如111和112,包含8个字节(64位)的字节对位数据。一个数据操作数能在113、114、115、116、117、118、119或120中的任何一字节边界起始。字节边界113也称为双字(DW)边界;字节边界117也称为全字(FW)边界;而字节边界115和119也称为半字(HW)边界。
图2处理器的结构支持从左到右指令,即可变操作数字节长度指令;其中操作数是通过顺序地从低存贮地址到高存贮地址存取存贮器的方式从该存贮100中取得。每一个左到右指令将定义(1)在主存贮100中的地址,通过这个地址可找到被取和(或)存的操作数的第一个字节;(2)操作数的字节长度以及(3)指向在所标识地址双字存贮内的操作数首字节的指针。
操作数的字节长度存于8位的寄存器L′中。图2的操作数形式上能到256字节长,但对本发明不是关键。
主存贮寄存器SA′和SB′每个都是双字长,即8个字节,每一寄存器SA′和SB′分别配备一个3位寄存器A′和B′,如图2所示,当寄存器A包含“000”。寄存器A′指向寄存器SA′中的字节0;当寄存器A′包含“001”,寄存器A′指向寄存器SA′中的字节1;等等。在寄存器SB′及其字节指针寄存器B′中存在同样的关系。
一条左到右指令能通过16一路转移的方法执行,同样由对位寄存器A′和B′的内容及操作数寄存器L的内容来判定。通过16一路转移指令可以处理操作数;(1)每次一字节,(2)每次两个字节(HW),(3)每次四个字节(FW),或(4)每次8个字节(DW)。
当这样处理操作数时,使用16-路转移来执行左到右指令,寄存器A′和B′增加一个数,这个数等于当时正在执行的控制字所处理的字节数目。进一步,当执行该控制字的同时,对寄存器A′和B′都置以这些新的值。
此外,当执行包含16-路转移的控制字时,L寄存器要减少一个数目,这个数等于该转移指令所处理的字节数目。
按这种方法,寄存器A′、B′和L′的内容被用来定义一种控制字序列的地址,这一地址将用于执行左到右的指令。
这一点是通过上述称为字符传送转移(MBR)的微码转移来完成的。
当MBR被说明为支持左到右指令的一个控制字内的一个转移时,要被执行的下一个控制字是16个控制字之一。这16个转移目标的每一个都有唯一的条件,在执行具体目标控制字之前,这些条件必须满足。进一步,在一个特定的转移控制字执行期间,上面提到的寄存器A′、B′和L′都要更新,以使下一控制字地址能存放一个要被定义的MBR控制字。
为了实现图2所示的发明,下面的表Ⅰ显示了定义于16个转移支路的寄存器A′、B′和L′的16种条件(在此表中寄存器二进制内容按十进制数显示)。L′、A′和B′的值是在被修改后在周期结束时所保留的值,这些值要用于确定将要执行的下一控制字的地址。L寄存器的内容等于留待处理的操作数的字节数少1。A′和B′寄存器的内容分别是对于SA′和SB′寄存器的指针。例如A′=0指向在SA′寄存器中8个字节的第一个(见图3)。
表Ⅰ转移支路号码L′A′B′0>001>700230或40或43>3404>3445>3046>7和<30071<7<78>16<69>16610>1<66112<6<6>11,2,3或5<6>1<61,2,3或512013>07<714>07715>0<77表Ⅰ显示的条件也显示在图3中,其中寄存器L′被表达为X字节长的操作数最后8个字节,即“X-7”到“X”是这个操作数的最后8个字节。
在表Ⅰ中注意转移支路号码12,当寄存器L′是“00000000”时,它通过MBR转移过程执行左到右指令,在这种情况下,A′和B′寄存器的内容都没有影响。
由控制字要完成的特定功能依赖于所调用的特定的左到右指令。下面表Ⅱ显示了前面定义过的16个转移支路所起的控制作用,它用于左到右指令字符传送(MVC)。
表Ⅱ转移支路号码0L′=7,A′=0,B′=0则存贮8字节操作数是SB′到目标操作数。结束。
1L′>7,A′=0,B′=0则存贮在SB′中8字节源操作数到目标操作数。在此存贮后如果剩下的源操作数多于8个字节,继续传送一次8个字节,MBR转移。
2L′=3,A′=0或4,B′=0或4则从SB′到SA′全字长传送,开始SA′内容的存贮,並结束MVC操作。所有动作都在一个机器周期内完成。
3L′>3,A′=4,B′=0则从SB′到SA′全字长传送,开始SA′内容的存贮,如果留待传送的字节少于8个,将操作数1的背景数据取到SA′,MBR转移。
4L′>3,A′=4,B′=4则从SB′到SA′全字长传送,开始SA′内容的存贮,其源操作数作SB′,如果留待传送的字节数少于8个,将操作数1的背景数据取到SA′中,MBR转移。
5L′>3,A′=0,B′=4则从SB′到SA′全字长传送,将源操作数取到SB′,MBR转移。
67>L′>3,A′=0,B′=0则从SB′到SA′全字长传送,接着半字传送和/或一个字节传送。在这字节或半字传送的同一周期内开始向目标操作数的存贮。结束。
7L′=1,A′<7,B′<7则从SB′到SA′传送可能未对齐的半字。在半字传送的同一个周期内,开始向目标操作数的存贮,结束。
8L′>1,A′=6,B′<6则从SB′到SA′传送可能未对齐的半字。在半字传送的同一个周期内,开始向目标操作数的存贮。如果还有少于8个字节留待传送,将操作数1的背景数据取到SA′中,MBR转移。
9L′>1,A′=6,B′=6则从SB′向SA′传送一个半字,在半字传送的同一周期内,开始向目标操作数的存贮。取源操作数的下一个双字到SB′,如果留待传送的字节少于8,将操作数1的背景数据取到SA′中,MBR转移。
10L′>1,A′<6,B′=6则从SB′到SA′传送一个有可能未对齐的半字,在该传送同一个周期内,取源操作数的下一个双字送入SB′,MBR转移。
11L=2,A′<6,B′<6或,L′>1,A′=1,2,3或5,B′<6或,L′>1,A′<6,B′=1,2,3或5则从SB′向SA′传送一个可能未对齐的半字,MBR转移。
12L′=0则向SA′传送在SB′中的源操作数的一个字节,开始将SA′的内容向操作数1的存贮,並结束这一操作。
13L′>0,A′=7,B′<7则将SB′中的源操作数的一个字节向SA′传送,开始将SA′的内容向操作数1的存贮。如果留待传送的字节数少于8,将操作数1的背景数据取到SA′,MBR转移。
14L′>0,A′=7,B′=7则将SB′中的源操作数的一个字节传送到SA′,与该传送相同的周期内,开始将源操作数的下一个双字取到SB′中,並开始将SA′的内容向操作数1存贮。如果留待传送的字节少于8个,将操作数1的背景数据取到SA′内,MBR转移。
15L′>0,A′<7,B′=7则将SB′中的源操作数中的一个字节传送到SA′。在该传送的同一个周期内,开始将源操作数的下一个双字取到SB′中,MBR转移。
参考图6,该图显示了图2的系统硬件操作的5个连续周期,其中控制字70、71、72、73和74在周期1、2、3、4和5中顺序地执行。
参考图6的周期3,在周期3期间,当执行当前控制字72时,图2的系统硬件从控制存贮器中取出要执行的下一个控制字73。十分重要的是要注意控制字73的内容包括了在周期4中要处理的操作数字节数。
在周期4中,要从控制存贮中取出的下一个控制字74的地址是在周期3中很早就确定了的。它是按如下方法完成的。
按照本发明,要从控制存贮中取出的下一控制字74的地址,是以对位寄存器A′和B′的值及长度寄存器L′的值为依据的,它本将应存在于控制字73在周期4内执行之后。
然而,在周期3内,控制字73很早就从控制存贮中取出来了,这样在周期3内很早就知道了在周期4内所要处理的字节数。这个值现在被用来更改寄存器A′,B′和C′的内容,从而使这些寄存器的新内容反映出控制字73在周期4内执行后的效应。
结果此刻,在周期3中很早就能利用这些寄存器的新内容为周期5来确定控制字74的地址。
这一过程可归纳如下在任何给定的周期N,(1)由控制存贮器取出周期N+1的控制字,(2)用周期N+1的控制字的字节处理内容来计算执行控制字N+1将产生的A′、B′和L′的新值,並且(3)利用A′、B′和L′的这些新值来确定在周期N+1内要从控制存贮取出的,在周期N+2内要执行的控制字地址。
在执行任何指明一个MBR转移的控制字期间,图2所示的数据处理系统的系统硬件通过确定在下一MBR转移要使用的控制存贮地址位来实行本发明的MBR功能(或者还有当检测到一个MBI命令时-MBI是用以初始化CPU到串开始处,以便处理左到右指令一见图6的70)。
这些控制字地址位存放在一个被称为MBAR(传送转移寄存器地址MOVEBranchRegisterAddress)的4位寄存器66之中。这个寄存器专门用于执行左到右指令。
当硬件检测到MBR转移时,MBAR寄存器存放要从控制存贮器中读取的16个控制字之中的某个地址。当检测到一种转移条件时,确定加载到MBAR寄存器中的值以便在下一个MBR周期之内使用。在这种情况下,值MD(等于在下一MBR转移之按淼淖纸谑浚瑏K在下面定义了)从寄存器L′减掉,並加到A′和B′寄存器中。然后对照在表Ⅲ说明的转移条件来检测在A′、B′和L′中得到的值。如果某一条件成立,4位控制字地址则存入MBAR寄存器。旧的MBAR值用于确定在控制存贮中的地址,以便于检索下一条MBR指令。
如表Ⅲ所示,本发明的16路MBR转移依赖于MBAR寄存器的内容。在判定了某一转移条件时,也确定了要加载到MBAR寄存器内的数值。见图6的70,初始化后MBAR的内容是“0000”,MD值由当前的MBAR的值来确定,並且它依赖于执行下一个MBR转移控制字时寄存器L′、A′和B′将改变的字节数目,这是由硬件确定的。这种数目的变化反映了在下一个MBR机器周期将被处理的操作数串的字节数目。
表Ⅲ为确定控制字地址而加载到下一个MDMBAR的4转移条件MBAR位地址解码(十进数)0L′-MD=7,A′+MD=0,B′+MD=081L′-MD>7,A′+MD=0,B′+MD=082L′-MD=3,A′+MD=0或4,B′+MD=0或483L′-MD>3,A′+MD=4,B′+MD=044L′-MD>3,A′+MD=4,B′+MD=4,45L′-MD>3,A′+MD=0,B′+MD=4,467>L′-MD>3,A′+MD=0,B′+MD=047L′-MD=1,A′+MD<7,B′+MD<788L′-MD>1,A′+MD=6,B′+MD<629L′-MD>1,A′+MD=6,B′+MD=6210L′-MD>1,A′+MD<6,B′+MD=6211L′-MD=2,A′+MD<6,B′+MD<6或,L′-MD>1,A′+MD=1,2,3或5,B′+MD<6或,L′-MD>1,A′+MD<6,B′+MD=1,2,3或5212L′-MD=0113L′-MD>0,A′+MD=7,B′+MD<7114L′-MD>0,A+MD=7,B′+MD=7115L′-MD>0,A′+MD<7,B′+MD=71
当MBAR=0,2,6,7或12时,MBAR解码没有意义,因为下一个MBR转移结果将完成该左到右指令,这样将不用向MBAR中加入新值。
图4是本发明的一般形式。
为了对不同的可编程序数据处理系统应用这项发明,处理器必须有能力做多路转移。也就是说谝桓龆ㄒ宓淖平峁怪校乱惶踔噶羁赡苁侨舾芍噶钪械囊桓觥4砥饕谰萑舾商跫凶啤 处理器必须有两个或更多的主存接口寄存器300和301,这些寄存器容纳由主存取出或要存进主存(未显示)的数据。
每一存贮寄存器300和301分别需要一个指针寄存器302和303。每一指针寄存器指向各自的存贮器中的一个字节。此外,一个长度寄存器304存放留待处理的操作数串的字节数。
为了分析本发明的一般形式,定义如下术语。
X是存贮寄存器300和301将存放的字节数,这也是系统主存总线的宽度。
W是在一个周期内,ALU305能处理的字节数。
X-W是一个正的常数(即存贮器300和301是等于或大于ALU305),它的数值大小等于这些寄存器字节长度超过ALU字节长度的字节数目。
D和S分别是装在指针寄存器302和指针寄存器303中的数目。假定存贮寄存器300,301中每一个都可作为左到右指令的径或目标,S和D的值的范围可从0到X-1。值X-1表示在寄存器中每待处理的操作数部分的最后一个字节(见图4)。
L是在长度寄存器304中包含的数,也就是当执行左到右指令时余留下要被处理的操作数字节的数目。L可以从0到任意预先定义的界限变动。
为了实现本发明的字符传送转移(MBR),必须定义一个特殊的微程序转移命令,如MBR。当在一个控制字(微指令)中说明了这个定义的命令时,例如一条左到右指令,本发明的特定的串处理则被调用。当没有说明这个定义的命令时,本发明的串处理结束,並恢复一般的串处理。
假定本发明的特殊的串处理在0字节开始,並且经由在两个存贮寄存器300,301中的连续字节推进(即一个左到右指令),指针寄存器302,303将增加一个数,而长度寄存器304减少一个数,这个数目等于上一个转移控制字或指令处理的字节数目。
该发明的方法和设施,也可称为是本发明的算法,它依靠开始字节在源和目标操作数中的位置和留待处理的操作数字节数来确定在存贮寄存器300,301中的字节将如何被转移指令处理。
下表显示了本发明用于一个典型的字符传送(MVC)左到右指令时的操作。
1如果L=W,S<X-W+1,D<X-W+1,则处理W个字节並结束。
2如果(>W,S<X-W,D<X-W则处理在存贮寄存器中的W个字节,S和D增加W,L减少W,继续进行。
3如果L>W,S=X-W,D<X-W,则处理在存贮寄存器中的W字节,取X个新字节送到源寄存器,S和D增加W.L减少W,继续进行。
4如果L>W,S=X-W,D=X-W,则处理在存贮寄存器中的W字节,把目标寄存器的内容存到目标,取X个新字节到存贮寄存器,S和D增加W,L减W,继续进行。
5如果L>W,S<S-W,D=X-W,则处理在存贮寄存器中的W个字节,把目标寄存器的内容存入目标,S和D增加W,L减少W,继续进行。
6如果L>0,S>X-W,D>X-W,则处理X-S或X-D或L字节(不论哪个,比较小的),S和D增加,L减少所处理字节的数目。如果新的D=0,把目标寄存器的内容存到目标中,如果新的L≠0,並新的S=0,则取X个新字节到源寄存器,继续执行。
7如果L>0,S=X-1,D<X-1,则处理在存贮寄存器中的一个字节(最后一个字节),S和D加1,L减1,如果新L≠0,取X个新字节到源寄存器,继续进行。
8如果L>0,S=X-1,D=X-1,则处理在存贮寄存器中的一个字节(最后一个字节),将目标寄存器的内容存入目标,S和D加1,L减1,绻碌腖≠0,取X个新字节到源寄存器,继续进行。
9如果L>0,S<X-1,DX-1,则处理在存贮寄存器中的一个字节(最后一个字节),把目标寄存器的内容存入目标,S和D加1,L减1,继续进行。
10如果L=0则结束。
这张表上的每一条目代表了多路转移的一条支路,並且每一条目代表一个控制字或一组控制字,它们完成诸如ADD(加)、COMPARE(比较)、MOVE(传送)、FETCH(取)、或STORE(存)等操作。这些控制字中的每一个,或一组控制字中的最后一个,如果标明为“继续进行”则指定一个特定的转移命令来继续操作数的串处理,如果标明为“结束”,则不指定这种特定的命令继续串处理。
在上面的描述中,本发明的MBR转移指令显示在表Ⅰ上。相对于图2显示的具体结构,已经解释了本发明,相对于图4的一般结构也已经对本发明作了解释。这两种解释一直是针对典型的左到右指令字符传送(MVC)而作的,这样本技术中的哪些技巧能容易地将本发明应用于其它左到右指令,而不论涉及到什么硬件结构。
描述本发明一直是依据从一个源存贮单元传送一个字节对位的字符串到一个等长度的目标存贮单元,这就清楚地表明,本发明可以应用到实现其他的,处理至少一个存贮中的操作数,从一个存贮单元到另一个存贮单元的指令。
本发明具有通用性,于此,在权利要求中明确其核心思想与范围。
权利要求
1.一种转移方法,通过使用左到右程序指令处理至少一个多字节操作数,使用一个具有X字节宽总线的数据处理系统,其主要存贮器设施存放所说的操作数,並且至少有两个X字节宽的寄存器与所说的主存接口,此方法的特征表现于如下步骤在所说的至少一个所说的寄存器内,确定所说的操作数部分的字节对位,确定余留要被左到右指令处理的操作数字节的数目,及确定多个控制字中的哪一个将要被执行,使得在每一个机器周期处理可能处理的最大的操作数字节可变数,所说的可变数的最大值为每个周期X字节。
2.权利要求1的方法具有特征X等于8个字节,其中操作数字节的可变数在至少若干周期中的某些周期被处理,这样处理的字节数目是依据留待处理的操作数字节的数目,並依据至少一个在所说寄存器中的操作数的字节对位,这些参数存在于所说的处理Y个字节的周期序列中的每一个周期的结束,其中Y等于一个字节,两个字节,四个字节或八个字节。
3.权利要求1的方法具有特征X等于八字节的整倍数,在若干周期中的每一个周期都处理可变数Y个操作数字节,所说的可变数Y最大值等于X,所说的可变数Y是以留待处理的操作数字节数,及所说的寄存器中操作数的字节对位为基础的。这些参数存在于前面一个曾处理Y个字节的周期的结束。
4.权利要求3的方法具有特征Y等于一个字节,两个字节,四个字节或八个字节的倍数。
5.权利要求4的方法具有特征X等于八。
6.权利要求1的方法具有特征所说的左到右指令存放在主存,所说的转移方法由放在控制存贮器的微码支持,所说的微码构成多个控制字,每一个控制字在执懈每刂谱质北晔兑淼淖纸谑瑏K包括以下步骤做为从主存取出一条左到右指令的结果,从所说的控制存贮器取出一个控制字。在周期N执行所说的取出的控制字,並在所说的周期N,从控制存贮取出要在周期N+1中执行的下一个控制字,並且利用所说的下一控制字的要在周期N+1中处理的字节数确定在周期N+2中要执行的控制字的地址。
7.权利要求2的方法具有特征所说的左到右指令存放在主存,所说的转移方法由放在控制存贮器的微码支持,所说的微码构成多个控制字,每一个控制字标识要被该控制字处理的字节数目,並包括以下步骤做为从主存取出一条程序左到右指令的结果,从所说的控制存贮器取出转移控制字,在一个周期执行一个取出的转移控制字,並且在所说的周期,从控制存贮取下一个控制字,利用所说的下一控制字的处理字节长度来确定下一个控制字的地址。
8.权利要求3的方法具有特征所说的左到右指令存放在主存,所说的转移方法由放在控制存贮的微码支持,所说的微码构成多个控制字,每一个控制字标识该控制字将要处理的字节数,並且包括以下步骤做为从主存取出一条程序左到右指令的结果,从所说的控制存贮取出控制字,在一个周期执行一个控制字,並且在所说的同一周期,从控制存贮器取下一控制字,利用所说的下一控制字的处理字节长度来确定下一个控制字的地址。
9.一种转移方法,通过利用一条左到右程序指令来处理至少一个多字节操作数,使用一个具有X字节宽数据总线的数据处理系统,它包括存放所说操作数的主要存贮器和至少两个X字节宽与所说主存接口的寄存器,此方法的特征表现于如下步骤(1)取出至少部分所说的操作数送到至少一个所说的寄存器,(2)确定这一部分所说操作数在所说寄存器的所说至少一个内的字节对位。(3)确定余留要被左到右指令处理的操作数字节的数目,(4)确定多个转移字中的哪一个将要被执行,使得在每一个机器周期处理能被处理的最大的操作数字节可变数,所说的可变数的最大值为每个周期X字节,並且(5)重复步骤(2)、(3)和(4)直到处理完所有的操作字节。
10.权利要求9的方法具有特征左到右指令存放在主存,所说的转移方法由存放在控制存贮的微码支持,所说的微码构成多个控制字,每一个控制字标识该控制字执行时要处理的字节数目,並且其中所说的步骤(5)包括以下步骤做为从主存取一条左到右指令的结果,从所说的控制存贮取一个控制字,在周期N执行所说的取出的控制字,並且在所说的周期N,从控制存贮取在周期N+1要被执行的下一个控制字,並利用所说的下一个控制字的要被处理的字节数来确定在周期N+2中要执行的控制字地址。
11.一个数据处理系统具有X字节处理宽度,用于执行程序指令,包括左到右指令,在所说的左到右指令里的数据字段定义(1)要被左到右指令处理的至少一个操作数的字节长度埃 )至少一个操作数在主存设施中的地址,此系统的特征为主存设施存贮(1)程序指令,包括所说的左到右指令,及(2)由所说的左到右指令处理的操作数,每一个所说的存放在所说主存设施的操作数具有起始字节对位,从一个低主存地址起始,並且至少某些所说的操作数的字节长度大于七字节,使得它们的地址在较高的主存地址结束。控制存贮设施存贮控制字以在执行一条左至右指令时实现转移,至少某些所说的控制字定义了要被该控制字处理的操作数字节的可变数,不超过X字节,至少两个接口寄存器,每一个都是X字节宽,所说的寄存器和所说的主存设施接上,当执行一条左到右指令时,所说的寄存器能接收在所说的主存设施至少包含操作数的字节部分的地址的X字节内容。为每一个所说的接口寄存器配一个指针寄存器,所说的指针寄存器能存放可改变的值,它动态地指向在所说接口寄存器中余留要被左到右指令处理的操作数字节,一个长度寄存器能接收一条左到右指令要处理的操作数的字节长度,並且当左到右指令执行时,能动态地改变,设施承担取控制字,以在所说的指针寄存器加上,及在所说的长度寄存器减去该取出的控制字要处理的字节数,及设施保证贮存在所说指针寄存器及所说长度寄存器中的结果值能定义要执行的后续控制字的地址。
12.权利要求11的数据处理系统具有特征其机制能保证,当所说指针寄存器和所说长度寄存器的内容存在于一个给定的周期N,用所说的内容来确定在N+1周期要取的且在周期N+2要执行的控制字。
全文摘要
一个微码转移,要转到若干可能的控制字中的一个(描述了16个控制字)。它是根据(1)余留要被左到右指令处理的操作数长度,及(2)当前驻留在主存接口寄存器的部分操作数的字节对位。当执行一条左到右指令时,确定操作数的新长度和新对位,它们二者都将存在于控制字执行之后。利用新长度和新对位来确定下一控制字的地址。一个16—路转移指令有多个转移支路,由留待处理的操作数的字节数及在两个与主存接口的存贮寄存器中的两个操作数的对位来确定转移支路。
文档编号G06F9/22GK1035190SQ8810780
公开日1989年8月30日 申请日期1988年11月14日 优先权日1987年11月17日
发明者朝威, 哈罗德·英格·弗利, 马克·罗伯特·富克, 莱尼·阿兰·米玛霍, 布鲁斯·莱菲·帕茨 申请人:国际商用机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1