CN101699391B - 提高Java处理器取指令带宽的字节码缓冲装置及使用方法 - Google Patents
提高Java处理器取指令带宽的字节码缓冲装置及使用方法 Download PDFInfo
- Publication number
- CN101699391B CN101699391B CN 200910035646 CN200910035646A CN101699391B CN 101699391 B CN101699391 B CN 101699391B CN 200910035646 CN200910035646 CN 200910035646 CN 200910035646 A CN200910035646 A CN 200910035646A CN 101699391 B CN101699391 B CN 101699391B
- Authority
- CN
- China
- Prior art keywords
- bytecode
- byte code
- buffering
- byte
- java processor
- 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 - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本发明涉及用于提高Java处理器取指令带宽的字节码缓冲装置及其使用方法。本发明中,字节码寄存器、多路选择模块及字节码缓冲顺序相连;字节码寄存器的输入端与指令存储器相连,字节码缓冲的输出端与Java处理器的译码段相连;控制模块的输入端与Java处理器的译码段相连,控制模块的输出端分别与字节码寄存器、多路选择模块及字节码缓冲相连;字节码寄存器是32位的,字节码缓冲是64位的,其高4个字节与Java处理器的译码段相连。本发明在字节码缓冲的可用空间不小于4个字节时,从寄存器读取4个字节,并通过多路选择模块将其送到缓冲的正确位置,使待执行字节码总完整存在于高字节中,减少了访存次数,提高了取指令带宽。
Description
技术领域
本发明涉及Java处理器,具体为一种用于提高Java处理器取指令带宽的字节码缓冲装置及其使用方法。
背景技术
计算机的指令集一般分为两类:一类是固定长度的指令集,即不论指令类型如何,都保持相同的长度,它的优点是在取指令的同时就可以判断并取到一条完整的指令,便于指令的流水执行,其不足之处是指令都占据相同的长度,不利于节省指令存储空间,固定长度的指令集多用于简单指令集计算机(RISC)系统中;另一类是变长指令集,即不同的指令具有不同的长度,它的优点是可以尽量缩减指令长度,有利于节省指令存储空间,其不足之处是无法在取指令的同时确定该条指令的完整长度,只能在对操作码部分译码之后才能确定并读取后续部分,不利于指令的流水执行,所以多用于复杂指令集计算机(CISC)系统中。
Java处理器是指能以硬件直接执行Java虚拟机指令集的处理器。Java虚拟机的指令集(即字节码)属于长度不固定的指令集,其指令除了极个别之外,绝大多数不超过4个字节。Java处理器通常的做法,就是和指令存储器以1个字节宽度的接口进行字节码读取,在取指令阶段只读取第一个字节(操作码所在的字节),而在译码段获取到整个字节码长度后再进行后续字节的读取。由于要多次以1个字节的宽度访问指令存储器,影响到了处理器性能的提高。
目前也有通过指令缓存来提高取指令带宽的方法,它是将字节码从指令存储器读出并以4字节为单位写入一个由多个寄存器组成的缓冲,然后根据指令实际长度从寄存器缓冲的输出多路开关中读取正确的字节码;如果读出的指令超过一个字,则将寄存器缓冲中的数据向前移动一次。这种方法的特点是寄存器组较大时可以提供较好的指令预取性能,但是指令转移等会导致其利用率下降,所以需要确定合适的寄存器组大小,这样既能较好地满足译码部件的取指 需求,又能减少硬件的设备量。
发明内容
针对上述问题,本发明提供一种用于提高Java处理器取指令带宽的字节码缓冲装置及其使用方法,使用该装置可以提高处理器的性能。
本发明装置的技术方案是这样的:
其包括字节码寄存器、多路选择模块、字节码缓冲以及控制模块,所述字节码寄存器、多路选择模块及字节码缓冲顺序相连;所述字节码寄存器的输入端与所述指令存储器相连,所述字节码缓冲的输出端与Java处理器的译码段相连;所述控制模块的输入端与Java处理器的译码段相连,所述控制模块的输出端分别与所述字节码寄存器、多路选择模块及字节码缓冲相连,对其进行逻辑控制;所述字节码寄存器是32位的,用来存储从指令存储器读出的以32位为单位的字节码;所述字节码缓冲是64位的,其高4个字节与Java处理器的译码段相连,为其提供一个完整的字节码。
其进一步的技术方案为:
所述多路选择模块包括第一级多路选择器及第二级多路选择器,第一级多路选择器负责将字节码寄存器的有效字节按照字节顺序选择到8个字节序列中的正确位置,第二级多路选择器负责将第一级多路选择器输出的字节以及原字节码缓冲中的剩余字节统一排序并送到字节码缓冲的正确位置;
所述字节码缓冲采用具有预取功能的cache。
本发明装置的使用方法的技术方案如下:
所述字节码寄存器从32位对齐的指令存储器地址处一次读取4个字节,通过多路选择模块送到字节码缓冲,字节码缓冲的高4个字节为Java处理器的译码段提供一个完整的字节码,该字节码为1~4个字节。
其进一步的技术方案为:
所述控制模块根据当前被执行字节码实际消耗字节数,将其从字节码缓冲空间总量减去,并判断字节码缓冲是否能提供不小于将要送入的有效字节数的空间,判断是否将新的字节码送入字节码缓冲;
所述控制模块根据字节码地址的对齐情况,从字节码寄存器中选择真正有效字节送多路选择模块。
本发明所提出的字节码缓冲长度固定在64位,其输出固定在最高的4个字节,避免了输出时对多路选择器的需要。其主要目的就是“整存零取”,以和处理器相同的工作频率把32位为单位的字节码送入字节码缓冲,以不同长度读出并将后续字节码往前推,使可用的字节码总保持在固定的位置。
本发明在字节码缓冲的可用空间不小于4个字节时,就从寄存器读取4个字节,并通过多路选择模块将其送到缓冲的正确位置,使待执行字节码总完整存在于高字节中,因为待执行字节码总能在一个周期内取完整,减少了访存次数,提高了取指令带宽。
本发明从两方面提供处理器性能,一是在取指令同时将可能的操作数同时取出,避免了多次访问存储器;二是利用取指令每次4字节,而多数字节码不足4字节,产生一定时间可用于将指令预取到字节码缓冲,从而隐藏了访存时间。
(四)附图说明
图1为本发明装置的结构示意及方框图;
图2为本发明中的多路选择模块的数据通路示意及方框图;
图3为本发明中的控制模块的示意及方框图;
图4为本发明中的字节码缓冲的输出接口示意及方框图。
(五)具体实施方式
如图1所示,本发明装置包括字节码寄存器2、多路选择模块3、字节码缓冲4以及控制模块1,字节码寄存器2、多路选择模块3及字节码缓冲4顺序相连。字节码寄存器2的输入端与指令存储器相连,字节码缓冲4的输出端与Java处理器的译码段相连;控制模块1的输入端与Java处理器的译码段相连,控制模块1的输出端分别与字节码寄存器2、多路选择模块3及字节码缓冲4相连,对其进行逻辑控制。
字节码寄存器2是32位的,用来存储从指令存储器读出的以32位为单位的字节码。字节码缓冲4是64位的,其高4个字节与Java处理器的译码段相连,为其提供一个完整的字节码,字节码长度可以在1到4个字节之间变化。
如图2所示,多路选择模块3包括第一级多路选择器5及第二级多路选择器6。第一级多路选择器5负责将字节码寄存器2的有效字节按照字节顺序选择 到8个字节序列中的正确位置,第二级多路选择器6负责将第一级多路选择器5输出的字节以及原字节码缓冲中的剩余字节统一排序并送到字节码缓冲4的正确位置。
从字节码寄存器2读出的4个字节同时连接到所有第一级多路选择器5,每个第一级多路选择器5可以选择其中的一个从存储器读取的新字节作为输出,因此通过第一级多路选择器5可以将每个字节送到8个字节位置的正确位置并按顺序排列好。第二级多路选择器6中,每个多路选择的输入端包含了可能出现在这个位置的所有的字节,通过第二级多路选择器6就把新读进来的4个字节加上原来字节码缓冲4中当前字节码执行时没有消耗掉的字节一起进行排序。经过一个时钟周期后,经过排序的字节码就被写入到字节码缓冲4中了。因为最长的字节码不超过4个字节,所以只用8个字节的字节码缓冲4就足够了。
在具体实施时需要注意:因为Java虚拟机指令集中存在个别超出4字节的字节码,需要在Java处理器直接执行之前将这些超出4字节的字节码进行转换;因为字节码缓冲的宽度固定在64位即8个字节,因此预取性能较弱,只能在缓冲中有足够空间可用时,以和处理器执行频率相同的频率从指令cache中读取字节码,因此,建议采用具有预取功能的cache,利用小于4的字节码执行产生的预取时间来减小访存的性能损失。
如图3所示,是控制模块1的示意图,说明了对字节码缓冲装置进行控制所需要的输入条件及其输出的控制信号。其中序号21由处理器的译码段输出,用来选择从指令存储器读入的实际有效字节数。序号13是由PC的最低两位组成,用来在指令跳转、中断、方法调用、返回等情况下,指出字节码的地址对齐情况,从而指出从存储器读出的真正有效字节数。序号14是在指令流顺序执行时,从存储器读出的4个字节数。序号15是字节码长度,即本条指令执行之后可以腾出的缓冲空间。序号16是在序号9有效时待取的字节数。序号18是无论序号9是否有效的待取字节数。序号19是一个时钟周期后字节码缓冲具有的可用空间。序号20是当前周期字节码缓冲具有的可用空间,它需要加上当前正在执行的字节码将要消耗掉的空间15,再减去新取进来的字节数18。序号17是当前正在执行的字节码执行之后字节码缓冲具有的空间,将其和要新读进来的字节数比较,产生能否继续取的控制信号9。序号7说明当前指令存储器或指 令cache是否有字节码可读。因此序号7和序号9有一条不满足,序号8就控制读字节码操作转入等待。序号10、11用来根据将要消耗掉的空间以及新读进来的字节数等情况,产生控制第一级多路选择器5和第二级多路选择器6的控制信号,用来将新读进来的字节码送到正确位置。序号12用来控制字节码缓冲4是否更新。
图4是字节码缓冲的输出接口示意图,其中第一个字节永远是待执行的字节码操作码所在字节,通过Byte2mov生成逻辑26可获得该字节码执行后将消耗掉的字节数15,Byte2mov生成逻辑26的输入是字节码的操作码部分,输出是当前字节码的长度,用来表示当前字节码执行后将消耗掉的字节数。最高4个字节同时送到处理器的译码段22、23、24和25,包括操作码和可能存在的操作数,因为即使不会用到,同时取出来总没有坏处。
本发明装置的使用方法如下:
字节码寄存器2从32位对齐的指令存储器地址处一次读取4个字节,通过多路选择模块3送到字节码缓冲4,字节码缓冲4的高4个字节为Java处理器的译码段提供一个完整的字节码,该字节码为1~4个字节。
控制模块1根据当前被执行字节码实际消耗字节数,将其从字节码缓冲4空间总量减去,并判断字节码缓冲4是否能提供不小于将要送入的有效字节数的空间,判断是否将新的字节码送入字节码缓冲4。
控制模块1根据字节码地址的对齐情况,从字节码寄存器2中选择真正有效字节送多路选择模块3。
Claims (5)
1.提高Java处理器取指令带宽的字节码缓冲装置,包括字节码寄存器(2)、多路选择模块(3)、字节码缓冲(4)以及控制模块(1),其特征在于:
所述字节码寄存器(2)、多路选择模块(3)及字节码缓冲(4)顺序相连;
所述字节码寄存器(2)的输入端与指令存储器相连,所述字节码缓冲(4)的输出端与Java处理器的译码段相连;
所述控制模块(1)的输入端与Java处理器的译码段相连,所述控制模块(1)的输出端分别与所述字节码寄存器(2)、多路选择模块(3)及字节码缓冲(4)相连,对其进行逻辑控制;
所述字节码寄存器(2)是32位的,用来存储从指令存储器读出的以32位为单位的字节码;
所述字节码缓冲(4)是64位的,其高4个字节与Java处理器的译码段相连,为其提供一个完整的字节码;所述多路选择模块(3)包括第一级多路选择器(5)及第二级多路选择器(6),第一级多路选择器(5)负责将字节码寄存器(2)的有效字节按照字节顺序选择到8个字节序列中的正确位置,第二级多路选择器(6)负责将第一级多路选择器(5)输出的字节以及原字节码缓冲中的剩余字节统一排序并送到字节码缓冲(4)的正确位置。
2.根据权利要求1所述的提高Java处理器取指令带宽的字节码缓冲装置,其特征在于:所述字节码缓冲(4)采用具有预取功能的cache。
3.权利要求1所述的提高Java处理器取指令带宽的字节码缓冲装置的使用方法,其特征在于:所述字节码寄存器(2)从32位对齐的指令存储器地址处一次读取4个字节,通过多路选择模块(3)送到字节码缓冲(4),字节码缓冲(4)的高4个字节为Java处理器的译码段提供一个完整的字节码,该字节码为1~4个字节。
4.根据权利要求3所述的提高Java处理器取指令带宽的字节码缓冲装置的使用方法,其特征在于:所述控制模块(1)根据当前被执行字节码实际消耗字节数,将其从字节码缓冲(4)空间总量减去,并判断字节码缓冲(4)是否能提供不小于将要送入的有效字节数的空间,判断是否将新的字节码送入字节码缓冲(4)。
5.根据权利要求3所述的提高Java处理器取指令带宽的字节码缓冲装置的使用方法,其特征在于:所述控制模块(1)根据字节码地址的对齐情况,从字节码寄存器(2)中选择真正有效字节送多路选择模块(3)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910035646 CN101699391B (zh) | 2009-09-30 | 2009-09-30 | 提高Java处理器取指令带宽的字节码缓冲装置及使用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910035646 CN101699391B (zh) | 2009-09-30 | 2009-09-30 | 提高Java处理器取指令带宽的字节码缓冲装置及使用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101699391A CN101699391A (zh) | 2010-04-28 |
CN101699391B true CN101699391B (zh) | 2013-01-16 |
Family
ID=42147851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910035646 Expired - Fee Related CN101699391B (zh) | 2009-09-30 | 2009-09-30 | 提高Java处理器取指令带宽的字节码缓冲装置及使用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101699391B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714777A (zh) * | 2013-12-11 | 2015-06-17 | 上海华虹集成电路有限责任公司 | 微控制器取指令方法及其实现电路 |
CN106033370B (zh) * | 2015-03-16 | 2019-12-10 | 龙芯中科技术有限公司 | 64位Java虚拟机的实现方法及装置 |
CN109783160B (zh) * | 2019-01-29 | 2022-04-26 | 广东九联科技股份有限公司 | 一种快速传送及渲染的网页文件加载系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101340191A (zh) * | 2008-08-19 | 2009-01-07 | 北京中星微电子有限公司 | 一种解码器和解码方法 |
CN101432703A (zh) * | 2006-05-01 | 2009-05-13 | 高通股份有限公司 | 用于高速缓存可变长度指令的方法及设备 |
CN201548950U (zh) * | 2009-09-30 | 2010-08-11 | 江南大学 | 用于提高Java处理器取指令带宽的字节码缓冲装置 |
-
2009
- 2009-09-30 CN CN 200910035646 patent/CN101699391B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101432703A (zh) * | 2006-05-01 | 2009-05-13 | 高通股份有限公司 | 用于高速缓存可变长度指令的方法及设备 |
CN101340191A (zh) * | 2008-08-19 | 2009-01-07 | 北京中星微电子有限公司 | 一种解码器和解码方法 |
CN201548950U (zh) * | 2009-09-30 | 2010-08-11 | 江南大学 | 用于提高Java处理器取指令带宽的字节码缓冲装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101699391A (zh) | 2010-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102117198B (zh) | 一种分支处理方法 | |
KR101182903B1 (ko) | 명령 캐시 라인을 넘어가는 명령들을 위한 프리디코딩 교정 캐시 | |
CN102141905A (zh) | 一种处理器体系结构 | |
KR20110025188A (ko) | 스토어 할당 캐시 미스에서 에러 복구를 위한 스토어 버퍼 사용 | |
CN111538679B (zh) | 一种基于内嵌dma的处理器数据预取方法 | |
CN104424128A (zh) | 变长指令字处理器系统和方法 | |
CN103778070A (zh) | 多个块一致性操作的并行处理 | |
CN112667289A (zh) | 一种cnn推理加速系统、加速方法及介质 | |
CN101699391B (zh) | 提高Java处理器取指令带宽的字节码缓冲装置及使用方法 | |
CN101189574B (zh) | 指令存储器单元和操作方法 | |
CN101727311B (zh) | 用于降低指令缓存功耗的分支序列缓冲器 | |
US20180089141A1 (en) | Data processing device | |
KR101545701B1 (ko) | 프로세서 및 그 명령어 번들 복원 방법 | |
CN103019657B (zh) | 支持数据预取与重用的可重构系统 | |
CN201548950U (zh) | 用于提高Java处理器取指令带宽的字节码缓冲装置 | |
CN111158753A (zh) | 具有数据预取功能的Flash控制器结构及其实现方法 | |
CN114911724B (zh) | 一种基于多bank的cache预取技术的访存结构 | |
CN103984525A (zh) | 指令处理系统及方法 | |
CN112749103A (zh) | 数据缓存系统和数据缓存系统的控制方法 | |
US6119220A (en) | Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions | |
JP3096576B2 (ja) | メモリ制御回路とその回路を内蔵した集積回路素子 | |
CN106445879A (zh) | 一种高性价比的SoC架构 | |
CN104461942A (zh) | 串流上下文的高速缓存系统 | |
CN102736895B (zh) | 一种实现寄存器文件间的数据传输方法及装置 | |
CN201556199U (zh) | 用于实时Java处理器的字节码高速缓存装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130116 Termination date: 20180930 |