CN1016383B - 基于操作数长度和对位的微码转移 - Google Patents

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

Info

Publication number
CN1016383B
CN1016383B CN88107803A CN88107803A CN1016383B CN 1016383 B CN1016383 B CN 1016383B CN 88107803 A CN88107803 A CN 88107803A CN 88107803 A CN88107803 A CN 88107803A CN 1016383 B CN1016383 B CN 1016383B
Authority
CN
China
Prior art keywords
byte
operand
register
cycle
instruction
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
Application number
CN88107803A
Other languages
English (en)
Other versions
CN1035190A (zh
Inventor
朝威
哈罗德·英格·弗利
马克·罗伯特·富克
莱尼·阿兰·米玛霍
布鲁斯·莱菲·帕茨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1035190A publication Critical patent/CN1035190A/zh
Publication of CN1016383B publication Critical patent/CN1016383B/zh
Expired legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/264Microinstruction selection based on results of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一个微码转移,要转到若干可能的控制字中的一个(描述了16个控制字),它是根据(1)余留要被左到右指令处理的操作数长度,及(2)当前驻留在主存接口寄存器的部分操作数的字节对位。当执行一条左到右指令时,确定操作数的新长度和新对位,它们二者都将存在于控制字执行之后。利用新长度和新对位来确定下一控制字的地址。一个16-路转移指令有多个转移支路,由留待处理的操作数的字节数及在两个与主存接口的存贮寄存器中的两个操作数的对位来确定转移支路。

Description

本发明涉及数据处理系统领域,更确切地说是关系到通过从左到右的指令来管理主存中的数据的方法与设备(即从低内存地址到高内存地址或其它等效的方法处理可变长操作数),其中完成从左到右指令的微码执行这样一种转移,这种转移依据(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)、长逻辑字符比较。这些左到右指令都是程序员们经常采用的。
这种旧系统的局限是:对每个机器周期,它通常只能处理一个字节数据。对于传送指令,如果数据对位和长度适当,可以同时处理两个字节或四个字节,但是这需要额外增加机器周期和微码来检测和开发这一能力,这就限制了这样做的有用性。
在每一个系统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表达了表1中提供的信息。
图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所示的发明,下面的表1显示了定义于16个转移支路的寄存器A′、B′和L′的16种条件(在此表中寄存器二进制内容按十进制数显示)。L′、A′和B′的值是在被修改后在周期结束时所保留的值,这些值要用于确定将要执行的下一控制字的地址。L寄存器的内容等于留待处理的操作数的字节数少1。A′和B′寄存器的内容分别是对于SA′和SB′寄存器的指针。例如A′=0指向在SA′寄存器中8个字节的第一个(见图3)。
表Ⅰ
转移支路
号码    L′    A′    B′
0    >    0    0
1    >7    0    0
2    3    0或4    0或4
3    >3    4    0
4    >3    4    4
5    >3    0    4
6    >7和<3    0    0
7    1    <7    <7
8    >1    6    <6
9    >1    6    6
10    >1    <6    6
11    2    <6    <6
>1    1,2,3或5    <6
>1    <6    1,2,3或5
12    0
13    >0    7    <7
14    >0    7    7
15    >0    <7    7
表Ⅰ显示的条件也显示在图3中,其中寄存器L′被表达为Y字节长的操作数最后8个字节,即:“Y-7”到“Y”是这个操作数的最后8个字节。
在表Ⅰ中注意转移支路号码12,当寄存器L′是“00000000”时,它通过MBR转移过程执行左到右指令,在这种情况下,A′和B′寄存器的内容都没有影响。
由控制字要完成的特定功能依赖于所调用的特定的左到右指令。下面表Ⅱ显示了前面定义过的16个转移支路所起的控制作用,它用于左到右指令字符传送(MVC)。
表Ⅱ
转移支路号码
0    L′=7,A′=0,B′=0则:存贮在SB′中8字节源操作数到目标操作数结束。
1    L′>7,A′=0,B′=0则:存贮在SB′中8字节源操作数到目标操作数。在此存贮后如果剩下的源操作数多于8个字节,继续传送一次8个字节,MSR转移。
2    L′=3,A′=0或4,B′=0或4则:从SB′到SA′全字长传送,开始SA′内容的存贮,并结束MVC操作,所有动作都在一个机器周期内完成。
3    L′>3,A′=4,B′=0则:从SB′到SA′全字长传送,开始SA′内容的存贮,如果留待传送的字节少于8个,将操作数1的背景数据取到SA′,MBR转移。
4    L′>3,A′=4,B′=4则:从SB′到SA′全字长传送,开始SA′内容的存贮,其源操作数作SB′,如果留待传送的字节数少于8个,将操作数1的背景数据取到SA′中,MBR转移。
5    L′>3,A′=0,B′=4则:从SB′到SA′全字长传送,将源操作数取到SB′,MBR转移。
6    7>L′>3,A′=0,B′=0则:从SB′到SA′全字长传送,接着半字传送和/或一个字节传送。在这字节或半字传送的同一周期内开始向目标操作数的存贮。结束。
7    L′=1,A′<7,B′<7则:从SB′到SA′传送可能未对齐的半字。在半字传送的同一个周期内,开始向目标操作数的存贮,结束。
8    L′>1,A′=6,B′<6则:从SB′到SA′传送可能未对齐的半字。在半字传送的同一个周期内,开始向目标操作数的存贮。如果还有少于8个字节留待传送,将操作数1的背景数据取到SA′中,MBR转移。
9    L′>1,A′=6,B′=6则:从SB′向SA′传送一个半字,在半字传送的同一周期内,开始向目标操作数的存贮。取源操作数的下一个双字到SB′,如果留待传送的字节少于8,将操作数1的背景数据取到SA′中,MBR转移。
10    L′>1,A′<6,B′=6则:从SB′到SA′传送一个具有可能未对齐的半字,在该传送同一个周期内,取源操作数的下一个双字送入SB′,MBR转移。
11    L=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转移。
12    L′=0则:向SA′传送在SB′中的源操作数的一个字节,开始将SA′的内容向操作数1的存贮,并结束这一操作。
13    L′>0,A′=7,B′<7则:将SB′中的源操作数的一个字节向SA′传送,开始将SA′的内容向操作数1的存贮。如果留待传送的字节数少于8,将操作数1的背景数据取到SA′,MBR转移。
14    L′>0,A′=7,B′=7则:将SB′中的源操作数的一个字节传送到SA′,与该传送相同的周期内,开始将源操作数的下一个双字取到SB′中,并开始将SA′的内容向操作数1存贮。如果留待传送的字节少于8个,将操作数1的背景数据取到SA′内,MBR转移。
15    L′>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(传送转移寄存器地址MOVE    Branch    Register    Address)的4位寄存器66之中。这个寄存器专门用于执行左到右指令。
当硬件检测到MBR转移时,MBAR寄存器存放要从控制存贮器中读取的16个控制字之中的某个地址。当检测到一种转移条件时,确定加载到MBAR寄存器中的值以便在下一个MBR周期之内使用。在这种情况下,值MD(等于在下-MBR转移之前处理的字节数目,并在下面定义了)从寄存器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机器周期将被处理的操作数串的字节数目。
表Ⅲ
为确定控制字
地址而加载到    下一个MD
MBAR的4    转移条件    MBAR
位地址    解码(十进数)
0    L′-MD=7,A′+MD=0,B′+MD=0    8
1    L′-MD>7,A′+MD=0,B′+MD=0    8
2    L′-MD=3,A′+MD=0或4,B′+MD=0或4    8
3    L′-MD>3,A′+MD=4,B′+MD=0    4
4    L′-MD>3,A′+MD=4,B′+MD=4,    4
5    L′-MD>3,A′+MD=0,B′+MD=4    4
6    7>L′-MD>3,A′+MD=0,B′+MD=0    4
7    L′-MD=1,A′+MD<7,B′+MD<7    8
8    L′-MD>1,A′+MD=6,B′+MD<6    2
9    L′-MD>1,A′+MD=6,B′+MD=6    2
10    L′-MD>1,A′+MD<6,B′+MD=6    2
11    L′-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或5    2
12    L′-MD=0    1
13    L′-MD>0,A′+MD=7,B′+MD<7    1
14    L′-MD>0,A′+MD=7,B′+MD=7    1
15    L′-MD>0,A′+MD<7,B′+MD=7    1
当MBAR=0,2,6,7或12时,MBAR解码没有意义,因为下一个MBR转移结果将完成该左到右指令,这样将不用向MBAR中加入新值。
图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,如果新的L≠0,取X个新字节到源寄存器,继续进行。
9    如果L>0,S=X-1,D=X-1,则:处理在存贮寄存器中的一个字节(最后一个字节),把目标寄存器的内容存入目标,S和D加1,L减1,继续进行。
10    如果L=0则:结束。
这张表上的每一条目代表了多路转移的一条支路,并且每一条目代表一个控制字或一组控制字,它们完成诸如ADD(加)、COMPARE(比较)、MOVE(传送)、FETCH(取)、或STORE(存)等操作。这些控制字中的每一个,或一组控制字中的最后一个,如果标明为“继续进行”则指定一个特定的转移命令来继续操作数的串处理,如果标明为“结束”,则不指定这种特定的命令继续串处理。
在上面的描述中,本发明的MBR转移指令显示在表Ⅰ上,相对于图2显示的具体结构。已经解释了本发明,相对于图4的一般结构也已经对本发明作了解释。这两种解释一直是针对典型的左到右指令字符传送(MVC)而作的,这样本技术中的哪些技巧能容易地将本发明应用于其它左到右指令,而不论涉及到什么硬件结构。
描述本发明一直是依据从一个源存贮单元传送一个字节对位的字符串到一个等长度的目标存贮单元,这就清楚地表明,本发明可以应用到实现其他的,处理至少一个存贮中的操作数,从一个存贮单元到另一个存贮单元的指令。
本发明具有通用性,于此,在权利要求中明确其核心思想与范围。

Claims (6)

1、一种转移方法,用于通过使用左到右指令,该指令定出了待处理操作数字节的数目Y,处理至少一个操作数,操作数为Y字节长包括第一字节1到第Y字节Y,并使用:一个总线宽为X字节的数据处理系统,其X小于Y;主存贮器装置,具备含有所述操作数在内的许多字节存贮单元,每个所述存贮单元对存入其中每个字节都有一个字节边界,所述操作数的字节1可存在一个存贮单元的任意字节边界上;以及至少两个寄存器,与主存贮器装置接口,每个寄存器具有的字节宽度至少与X一样宽且每个寄存器对其内每个字节都有一个字节边界,
其特征为包括如下步骤:
在给定的机器周期中,将X字节从所述主存贮器装置中取出,送入至少所述寄存器之一,该取出X字节包括所述操作数的字节1,所述字节1此后被放置在所述至少一个寄存器的一个字节边界上,
在所述规定的机器周期内,相对于所述至少之一的寄存器的字节边界,确定所述至少寄存器之一中所述操作数的字节1的字节对位,
在所述规定的机器周期内,依靠所述至少一个寄存器中所述操作数的字节1所确定的字节对位,处理所述操作数的1至X字节,
在所述规定的机器周期内,确定有多少操作数字节在所述规定的机器周期之后由左到右程序指令来处理,该指令相对于左到右程序指令所定义的Y个字节,以及
在所述规定的机器周期内,根据所确定仍待处理的操作数字节,确定在所述规定的机器周期之后的周期内将要执行多个控制字中的哪一个。
2、如权利要求1所述的方法,其特征为:
X为八个字节,其中操作数字节的可变数在许多机器周期中的至少某些周期被处理,
这样处理的字节可变数目是依据待处理的操作数字节还有多少及所述至少一个寄存器中所述操作数字节对位而定出,
这些参数存在于每个处理周期的末尾,在这些处理周期中一个字节,二个字节,四个字节或八个字节已被处理。
3、如权利要求1所述的方法,其特征为所述左到右程序指令存放在主存储器装置内,所述转移方法由存放在控制存贮器的微码支持,所述微码包括多个控制字,每个控制字指明在该控制字进行时所处理的字节数目,所述转移方法包括如下步骤:
做为从主存贮器取出一条左到右指令的结果,从所述控制存贮器取出转移控制字,
在周期N中执进所取出的控制字,
在所周期N中,从所述控制存贮器取出周期N+1中所要执行的下一控制字,利用所述下一控制字在周期N+1内所要处理的字节数目来确定在周期N+2中所要执行的控制字的地址。
4、如权利要求1所述的方法,重复所有步骤直至所有操作数的字节处理完毕。
5、一个数据处理系统具有X字节处理宽度,用于执行程序指令,包括左到右指令,在所述左到右指令里的数据字段定义(1)要被左到右指令处理的至少一个操作数的字节长度,及(2)至少一个操作数在主存装置中的地址,此系统的特征为:
主存装置存贮(1)程序指令,包括所述左到右指令,及(2)由所述左到右指令处理的操作数,
每一个所述存放在所述主存装置的操作数具有起始字节对位,从一个低主存地址起始,并且至少某些所述操作数的字节长度大于七字节,使得它们的地址在较高的主存地址结束。
控制存贮装置存贮控制字以在执行一条左至右指令时实现转移,至少某些所述控制字定义了要被该控制字处理的操作数字节的可变数,不超过X字节,
至少两个接口寄存器,每一个都是X字节宽,所述寄存器和所说的主存装置接上。当执行一条左到右指令时,所述寄存器能接收在所述主存装置至少包含操作数的字节部分的地址的X字节内容。
为每一个所述接口寄存器配一个指针寄存器,所述指针寄存器能存放可改变的值,它动态地指向在所述接口寄存器中余留要被左到右指令处理的操作数字节。
一个长度寄存器能接收一条左到右指令要处理的操作数的字节长度,并且当左到右指令执行时,能动态地改变,
响应控制字的取出,使所述指针寄存器加上使所述长度寄存器减去该取出的控制字要处理的字节数的装置。
响应贮存在所述指针寄存器及所述长度寄存器中的结果值,对要执行的后续控制字的地址进行定义的装置。
6、如权利要求5所述的数据处理系统,其特征为具有一种装置,通过该装置所述指针寄存器和所述长度寄存器在一给定的周期N中的内容存被用来确定在N+1周期要取的且在周期N+2要执行的控制字。
CN88107803A 1987-11-17 1988-11-14 基于操作数长度和对位的微码转移 Expired CN1016383B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US121443 1987-11-17
US07/121,443 US4933847A (en) 1987-11-17 1987-11-17 Microcode branch based upon operand length and alignment

Publications (2)

Publication Number Publication Date
CN1035190A CN1035190A (zh) 1989-08-30
CN1016383B true CN1016383B (zh) 1992-04-22

Family

ID=22396769

Family Applications (1)

Application Number Title Priority Date Filing Date
CN88107803A Expired CN1016383B (zh) 1987-11-17 1988-11-14 基于操作数长度和对位的微码转移

Country Status (6)

Country Link
US (1) US4933847A (zh)
EP (1) EP0317473A3 (zh)
JP (1) JPH01137331A (zh)
KR (1) KR920001965B1 (zh)
CN (1) CN1016383B (zh)
GB (1) GB8814628D0 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5201043A (en) * 1989-04-05 1993-04-06 Intel Corporation System using both a supervisor level control bit and a user level control bit to enable/disable memory reference alignment checking
US5168571A (en) * 1990-01-24 1992-12-01 International Business Machines Corporation System for aligning bytes of variable multi-bytes length operand based on alu byte length and a number of unprocessed byte data
JPH04140892A (ja) * 1990-02-05 1992-05-14 Internatl Business Mach Corp <Ibm> 制御データをエンコードする装置及び方法
JP2606942B2 (ja) * 1990-02-22 1997-05-07 株式会社東芝 Dmaコントローラ
US5335332A (en) * 1991-12-24 1994-08-02 International Business Machines Corporation Method and system for stack memory alignment utilizing recursion
US5542058A (en) * 1992-07-06 1996-07-30 Digital Equipment Corporation Pipelined computer with operand context queue to simplify context-dependent execution flow
DE4345028A1 (de) * 1993-05-06 1994-11-10 Hewlett Packard Co Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
US5559974A (en) * 1994-03-01 1996-09-24 Intel Corporation Decoder having independently loaded micro-alias and macro-alias registers accessible simultaneously by one micro-operation
CN103345380B (zh) * 1995-08-31 2016-05-18 英特尔公司 控制移位分组数据的位校正的装置
US5771011A (en) * 1996-07-15 1998-06-23 International Business Machines Corporation Match detect logic for multi-byte per cycle hardware data compression
US5956047A (en) * 1997-04-30 1999-09-21 Hewlett-Packard Co. ROM-based control units in a geometry accelerator for a computer graphics system
US6184902B1 (en) 1997-04-30 2001-02-06 Hewlett-Packard Company Centralized branch intelligence system and method for a geometry accelerator
US7698539B1 (en) * 2003-07-16 2010-04-13 Banning John P System and method of instruction modification
US7676797B2 (en) * 2005-01-31 2010-03-09 Computer Associates Think, Inc. System and method for managing long names in an application programming interface
US8495341B2 (en) * 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
JP5437878B2 (ja) * 2010-03-29 2014-03-12 ルネサスエレクトロニクス株式会社 情報処理装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3570006A (en) * 1968-01-02 1971-03-09 Honeywell Inc Multiple branch technique
US3979725A (en) * 1973-08-06 1976-09-07 Xerox Corporation Multi-way program branching circuits
US3916388A (en) * 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
DE2529348A1 (de) * 1975-07-01 1977-01-13 Siemens Ag Verfahren zum verarbeiten von maschinenbefehlen mit bytefeldoperanden in einem mikroprogrammierten prozessor einer datenverarbeitungsanlage
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4438492A (en) * 1980-08-01 1984-03-20 Advanced Micro Devices, Inc. Interruptable microprogram controller for microcomputer systems
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
JPS5856164A (ja) * 1981-09-30 1983-04-02 Toshiba Corp デ−タ処理装置
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4791557A (en) * 1985-07-31 1988-12-13 Wang Laboratories, Inc. Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system

Also Published As

Publication number Publication date
KR920001965B1 (en) 1992-03-07
EP0317473A3 (en) 1992-05-20
GB8814628D0 (en) 1988-07-27
KR890008685A (ko) 1989-07-12
CN1035190A (zh) 1989-08-30
US4933847A (en) 1990-06-12
JPH01137331A (ja) 1989-05-30
EP0317473A2 (en) 1989-05-24

Similar Documents

Publication Publication Date Title
CN1089460C (zh) 多指令集的数据处理
CN1016383B (zh) 基于操作数长度和对位的微码转移
CN1088214C (zh) 用多指令集处理数据的器件和方法
CN1101019C (zh) 数据序列产生方法及设备、转换方法及计算机
CN1129843C (zh) 使用组合的数据处理器系统和指令系统
CN1287257C (zh) 用于算术表达式优化的方法和装置
CN100339824C (zh) 高效执行特长指令字的处理器和方法
CN1127016C (zh) 计算机处理装置和方法
CN1095116C (zh) 执行两种指令长度代码的处理机及其指令码输入装置
CN1220938C (zh) 双调用/返回堆栈分支预测系统
CN1122227C (zh) 在数据处理系统中改进系统性能的方法和装置
CN1613058A (zh) 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备
CN1842779A (zh) 用于执行simd运算的数据处理系统及其方法
CN1121014C (zh) 具有risc结构的八位微控制器
CN1570870A (zh) 终极管道和最优重排技术
CN1629801A (zh) 产生早期指令结果的管线式微处理器、装置以及方法
CN1869952A (zh) 指令执行设备、调试方法、调试设备以及调试程序
CN1746842A (zh) 用于乱序执行条件指令的硬件装置及其执行方法
CN101046741A (zh) 处理器装置和复合条件处理方法
CN1397886A (zh) 假想分支目标地址高速缓存
CN1758213A (zh) 带有共享内容的异构型并行多线程处理器(hpmt)
CN1397874A (zh) 高速缓存的快取线选取目标地址的装置及方法
Ranwez et al. Aligning protein-coding nucleotide sequences with MACSE
CN1143213C (zh) 高速处理循环的编译器和处理器
CN1138172A (zh) 高速实现子程序返回的处理器及产生能高速从子程序返回的机器语言程序的程序翻译装置

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
PB01 Publication
SE01 Entry into force of request for substantive examination
C13 Decision
GR02 Examined patent application
C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee

International patent classification (main classification): G06F9/34