缩减指令集的计算机中字节传送的方法和装置的制作方法

文档序号:99682阅读:303来源:国知局
专利名称:缩减指令集的计算机中字节传送的方法和装置的制作方法
在现有技术中,带有微程序设计的计算机,其控制部分通常由一个独立的只读存贮器来提供。当开始执行一条程序指令时,控制器将产生由指令的功能码或操作码导出的地址,并把它送入只读存贮器。这个地址是控制信号中一系列字的首地址,这些控制信号使计算机执行这条正在处理的特定指令。实际上,每条指令都转换成一个与它有关的微子程序,因此,机器单步操作的结果就相当于按照非常细致的层次执行了一段程序。
现有技术中的这类计算机,其程序指令通常包含一个操作码,即opcode,与之并存的还有一个与操作数位置有关的信息,这里的操作数即为要处理的数据。这些操作数有时还具有附加的操作信息。程序指令有长有短,其长度取决于所含数据的多少。操作码通常表示要执行的操作。一旦操作码的长度确定下来,就可以得到不同的操作码和相应程序指令的唯一的某种固定集合。从理论上来讲可以用一定数量的位数,即这个固定集合中的操作码,来表示所有的操作码,但并不是所有的操作码都用于表征具有微程序资源计算机的程序指令,通常,只使用其中的一部分,或一个子集,这样,程序设计的效率就降低了。
同样,在现有技术的计算机中,计算机的内存是硬件的最大开销。因此,提高硬件速度,缩小体积的关键在于有效使用存贮器。定长指令的计算机要求每个指令码有相同的位数,而不管所执行的操作是简单还是复杂。例如,那些简单操作的指令会有许多位闲而无用,而另外许多复杂操作指令却因指令长度受到限制而不得不使用多条指令,从而造成浪费。因此,就需要设计一种计算机,它的指令能够最有效地满足所有要求。
为了增加现有技术中计算机微程序设计的效率,将引入并使用最佳编译程序的概念。它包括两方面内容(1)在一个大的虚拟地址空间内尽量不妨碍将程序设计语言编译成微指令。(2)在工艺允许的情况下,使指令周期尽可能短。带有这种最优编译程序的计算机比现有技术的计算机指令少,同时这些较少的指令确实简单,通常可在一个周期内执行。可称这样的计算机为缩减指令集计算机(RISCs)。RISCs机器中属于缩减指令集的并以一种新颖的方法提高效率的指令已经发明,并将在本文中叙述。
具体来讲,计算机最普通的操作是将一串字节或字从内存的一处传送到另一处。因为这个操作出现频繁,因此提高它的效率是重要的。但是,由于操作的确切方式不同,固定长度与可变长度,固定地址与可变地址不同,以及长度和校准不同,因此寻找一个有效执行这个操作的统一的模式是困难的,即使实际上它们出现的频率几乎不变。
在现有技术中,一种解决方法是规定一条或二条将字节从源地址移至目标地址的指令,但是可用的选择非常有限,操作数规格的选择也很有限。由于不得不确定若干个地址和长度,所以这些指令非常多。这些指令的执行需要几个周期,并且需要各种各样的微码来控制。因为执行时间长,所以这些操作由于输入/输出(I/O)中断而封锁的问题会经常发生。因此,这些操作更要求是可中断的和/或可重新启动的。显然,这个要求增加了指令的复杂性。
此外,由于执行时间较长,虚拟内存系统也会出现类似的问题。只是在那里,页面错误的问题代替了中断的问题。为了解决这些问题,我们使用必要的控制,这样就增加了硬件的成本和复杂性。
总之,为优化执行这样的操作,在数据路经和控制部分引入额外的复杂性是不可避免的。即使只优化那些最常使用的操作也是如此。换一种办法,使用一个非硬件支持的方法也可以解决这些问题,但是在这种情况下,操作将会导致一个很长的、不能接受的执行时间。
根据本发明的优选实施例,一条传送一串字节的基本指令已被发明用来解决这些问题。由于指令中的操作是基本的,所以只需要很少的变动,就可适应不同的长度和变量。对应这些操作的指令被放入一个代码序列,因此编译程序可以准确地产生一个最短的序列来执行这些操作,并能在编译时预先计算许多操作数,优化操作所必须的控制是在编译程序中而不是硬件,这样,避免了上面列举的用硬件方式解决的缺点。作为所有这些因素的结果,指令在一个周期内完成操作。换言之,另一指令可在前一指令周期内启动,而无任何阻碍或“封锁”。
图1所示为一指令的格式,这条指令作为本发明的一个实施例。
图2为根据发明执行指令的装置图。
根据本发明的优选实施例,指令的操作是通过一个代码序列产生的。因此,不需要特殊的控制来处理输入/输出中断或页面错误。字节传送的基本指令只需要在其他操作所必须的硬件上加极少的硬件,对于多数的运算它的运行速度将与那些由硬件支持的指令一样快,或者更快。
基本指令是一个将相应字节从源寄存器存入内存的存贮操作,或者存贮指令确定的字节地址开始直到字尾的那部分字,或者存贮从字的开始到指令确定地址的字节的那部分字。象超高速缓存控制、指令修改和其他类似的标准变址存贮选择在操作中是允许的。指令只控制字节传送的开始和结束,但在非对齐传送情况下,每移动一个字都需要一条额外的对齐指令。下面介绍存贮操作指令。
如果“开始”由一个相当于指令中操作标识符字段a=0的修改量“,B”确定,那么通用寄存器“t”的低位字节内容将存入内存,从由指令中的有效地址给出的字节地址开始存入。
如果“结束”由一个相当于指令中操作标识符字段a=1的修改量,“E”确定,则通用寄存器“t”的高位字节的内容将存入由有效地址确定的字中高位字节开始的内存。这个过程一直进行到有效地址确定的字节,但并不包括该字节。当有效地址确定了一个字的高位字节,则什么也不存贮,但仍然检查保护。
如果确定“地址修正”,则通用寄存器“b”被更新为一个字地址。
我们把指令“STORE BYTES”(STBYS)140描述为根据本发明的字节传送基本指令集的一个实例。
指令 STBYS 140被表示如下STBYS,ma,CC.7,i(S,b)格式的图解说明见图1,即,03/b/t/s/a/1/cc/c/m/i,其中03是确定指令类别“变址存贮”的6位操作码110,它与操作代码扩充符“c”126一起来表示指令STBYS 140;
b是一个5位符号组112,用来识别一个地址寄存器;
t是一个5位符号组114,来识别一个数据寄存器;
s是一个2位说明符116,说明一个空间寄存器(SR);
a是一个1位说明符120,说明是先修改还是后修改;
cc为两个超高速缓冲存贮器控制位124;
c为4位扩充操作码126;
m为1位说明符128,说明地址是否改变;
i为5位带符号的立即字段130。
指令STBYS 140的执行情况如下1、一个暂时的48位“地址”值被计算如下a、计算“立即”先将“i”130的低位移去,并将左边的余项扩展成带符号位的32位量,用被移去的那一位作为符号位;倘若地址修改和后修改已经确定,也即,若改变位128的m=1,先改变还是后改变的说明符位120的a=0,那么将“0”赋给“变址”,否则就将“立即”的值赋给“变址”。
b、接着将“变址”的内容与地址寄存器“b”的内容相加,并将和赋给“偏移”。
c、如果空间寄存器说明符116中s=0,则将空间寄存器的内容赋给“空间”,空间寄存器的地址为地址寄存器“b”的0位和1位的内容与4的和;否则,就将空间寄存器“s”中的内容赋给“空间”。
d、将“空间”和“偏移”内容合起来赋给“地址”。
2、在第一个周期,Ta、将8与“地址”模4的积赋给“位置”;
b、如果修改位128的m=1,则将寄存器“b”与“立即”的和再同X′FFFFFFFC逻辑与,并将结果赋给空间寄存器“b”,其中X′表示一个32位的十六进制数。
c、同样地,当虚拟存贮器转换处于联机状态,即处理系统状态字(PSW)的D位=1时,如果先改还是后改的说明符位120为a=1,则通过将“t”寄存器中从0位到“位置”-1位的数据赋给存贮器“地址”的0位到“位置”-1位来执行一次存贮器的存贮;倘若a=0,则通过将寄存器“t”的从“位置”位到31位数据赋给存贮器“地址”的“位置”位到31来执行一次存贮器存贮。
d、当禁止虚拟存贮器转换时,即当PSW的D位=0,这时如果a=1,则通过将寄存器“t”中从0位到“位置”-1位的数据赋给实际存贮器的0位到“位置”-1位来执行一次存贮器存贮,实际存贮器的地址包含了“地址”的16到47位;如果a=0,则通过将寄存器“t”的从“位置”位到31位所含数据赋给实际存贮器的“位置”到31位来执行存贮器存贮,实际存贮器的地址仍包含了“地址”的16位到47位。
图2所示为一超高速缓冲存贮器,依照本发明,它是执行字节传送指令的计算机系统的一个组成部分。在继续说明以前,我们应该先了解一下什么是超高速存贮器。
一个超高速缓冲存贮器基本上是一个速度很快的缓冲器,它存贮了主存贮器范围内有限的信息。典型的超高速缓冲存贮器是在计算机处理单元附近区域,在那里它可以进行快速访问。它比主存贮器小许多,因此它只包含了计算机中很少的数据。处理单元每发一条指令给存贮器,就先看看正在查找的数据是否在超高速缓存之中。这是通过一个称为“标记”的地址部分和超高速缓存中的“标记”部分的比较来完成的。如果两者匹配,则说明数据确实在超高速缓存之中,并构成了一个“超高速缓冲命中”。如果地址中的“标记”与超高速缓存中的“标记”没有匹配,则要查找的数据不在超高速缓存之中,这时参量必须到主存贮器中选取。这种情况构成一个“超高速缓存未命中”。
在图2中,来自数据寄存器221的数据送至超高速缓存220的字节输入223,具体来说,数据寄存器221的“0”字节225送至超高速缓存220的“0”地址字节226的数据输入端口224;相同地,数据寄存器221的“1”字节227送至“1”号地址字节228的数据输入端口229;同样,“2”号字节230送至超高速缓存220的“2”号地址字节233的输入端口231;“3”号字节234送至超高速缓存220的“3”号地址字节的输入端口235。指令里面产生的地址236被超高速缓存220分成237-239几部分。从字中存取字节的239部分将指向写控制单元240,相对于地址236,更高有效端的236地址中下一个较高部分238,它是一个变址,它可用于从超高速缓存220的标记区242存取标记。这个变址部分238还用于由地址243来确定写入字节226,228,233,236中的哪一个,当有一个可写脉冲时便写入。地址236的最高部分237是地址236的标记246,它与来自超高速缓存220的标记部分242的标记248相比较。如果超高速缓存220中的比较器装置250进行的比较表明两标记246、248相等,则是超高速缓存命中,如果超高速缓存没有命中,即产生超高速缓存未命中,则没有数据写入超高速缓存中,也不在超高速缓存中进行数据操作。数据将从主存贮器中存取。(略)如果命中,则将检验取自地址236的字部分239中字节的那些位,然后与现有的特定操作结合,不论如前面描述的那样,它是“开始”复制,还是“结束”复制,这样来确定写入允许255被发向字节226、228、233、236中的哪一个,用这种方法,做为地址236的一个功能,超高速缓存中的字部分被写入。
在超高速缓存未命中的情况下,数据将从主存贮器中取出并放入超高速缓存220之中,前面第二段描述的整个操作将重演,结果,保证出现超高速缓存命中,并且计算机继续执行正常的操作。
权利要求
1.一个计算机装置包括一个指令序列包括(a)第一个域是标识从寄存器向存贮器传送数据的操作;(b)第二个域是标识地址寄存器;(c)第三个域是标识数据寄存器;其中所说的第一、第二、第三域包括所述计算机一个周期内执行的一个单个序列;在所述计算机装置的一个周期内按照所述的指令传送数据的装置,这个数据从具有第一地址的存贮器传送到具有第二地址的存贮器,第一地址由所述的地址寄存器确定,第二个地址由所述的数据寄存器确定。
2.按照权利要求
1所述的计算机装置,其中所述的指令进一步包括在单个序列中的第四个域,它用来说明对所述第一地址的修改。
3.按照权利要求
2所述的计算机装置,其中指令进一步包括在单个序列中的第五个域,它用来说明位移量,所述的位置量与所述的第一地址结合产生一个修正地址。
4.按照权利要求
2所述的计算机装置,其中所述缩减指令集进一步包括在单个序列中的第六个域,它用于说明是在传递数据操作前还是在其后修改所述的第一地址。
5.复制字中字节的方法包括如下步骤;由单个指令序列产生一个选择地址;从所述指令确定的寄存器中将一个字复制到内存,其中,所述字只有一部分被复制,所述部分是由所述的地址确定的。
6.按照权利要求
5的方法,其中产生的步骤还包括从一个确定的地址寄存器获取第一个值;将上述值与所述单个指令序列中确定的第二个值相加形成上述已产生的地址;其中,上述获取数据和相加的步骤在上述计算机的一个周期中完成。
7.按照权利要求
5所述的复制方法,其中产生和复制的步骤在上述计算机的一个周期内完成。
8.按照权利要求
7所述的复制方法,其中上述复制的步骤是从一个由上述已产生的地址作为指针的寄存器复制到一个字中的一个字节。
9.按照权利要求
7所述的复制方法,其中上述复制的步骤是复制上述字的一部分,这个字位于上述寄存器的指针之前。
10.按照权利要求
8所述的复制方法,上述复制的步骤是复制上述字的一部分,这个字位于录了上述寄存器中的指针。
11.按照权利要求
9所述的复制方法,上述复制的步骤包括复制上述指针所指的字节。
12.按照权利要求
10所述的复制方法,上述复制步骤包括复制上述指针所指的字节。
专利摘要
一条传送一个字中一串字节的基本指令,因为这条指令中的操作是基本的,所以,只用极少的改动就可适合不同的长度和变量,这些操作被放入一个单个的代码序列,因此,编译程序可以准确地产生一个必须的最小序列来完成这些操作,并能在编译时预先计算许多操作数,一般是在一个周期时间内完成这条指令,优化操作所必须的控制在编译程序中而不是在硬件中,因此避免了许多现有技术中硬件解决方法的缺点。
文档编号G06F12/08GK86103694SQ86103694
公开日1986年12月24日 申请日期1986年6月2日
发明者艾伦·J·鲍姆, 威廉·R·布里格 申请人:惠普公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1