CN102681822A - 一种处理器地址缓冲管理的实现装置及方法 - Google Patents
一种处理器地址缓冲管理的实现装置及方法 Download PDFInfo
- Publication number
- CN102681822A CN102681822A CN201110065349XA CN201110065349A CN102681822A CN 102681822 A CN102681822 A CN 102681822A CN 201110065349X A CN201110065349X A CN 201110065349XA CN 201110065349 A CN201110065349 A CN 201110065349A CN 102681822 A CN102681822 A CN 102681822A
- Authority
- CN
- China
- Prior art keywords
- address
- increment
- self
- wrap
- auto
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000012360 testing method Methods 0.000 claims description 88
- 238000004806 packaging method and process Methods 0.000 claims description 7
- 238000005538 encapsulation Methods 0.000 claims description 6
- 238000013461 design Methods 0.000 abstract description 10
- 238000012772 sequence design Methods 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3552—Indexed addressing using wraparound, e.g. modulo or circular addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
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)
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种处理器地址缓冲管理的实现装置,装置中的汇编器用于对地址自增值及边界设置指令进行编码时,运算得到中间值并将中间值封装到地址自增值及边界设置指令中;处理器用于根据中间值进行地址自增或自减判断,实现地址缓冲管理。本发明还公开了一种处理器地址缓冲管理的实现方法,该方法包括:处理器对地址自增值及边界设置指令译码时获得所述中间值;执行load或store指令时,根据中间值进行地址自增或自减判断,实现地址缓冲管理。采用本发明的装置及方法,既降低了处理器的硬件成本,又能满足处理器速度和时序设计、高效节能的设计需求。
Description
技术领域
本发明涉及处理器设计领域,尤其涉及一种处理器读取数据(load)或保存数据(store)时地址缓存管理的实现装置及方法。
背景技术
对于现有大部分处理器,其地址寄存器文件包含多个地址寄存器,基于算法需求,每个地址寄存器还需要一个地址增量寄存器,每次执行load/store指令后,地址寄存器自动增加或减小aa_inc。这里,aa_inc为地址增量寄存器的自增值或自减值。有了aa_inc,这样就可以连续地使用load和store指令,实现对不同地址数据的读取和保存,而不需要再写一个地址运算指令。除此之外,在LTE等通信算法中还需要实现地址缓冲管理功能,即为:可以设置一个地址寄存器的首、尾边界值,地址在这个首、尾边界值范围内自增或自减,当跨越边界时,自动跳回边界内。
针对实现地址缓冲管理功能而言,目前常见的解决方案的运算逻辑为:给每个地址寄存器设置两个边界寄存器,一个为首边界寄存器,另一个为尾边界寄存器,并通过指令设置这两个寄存器的值,当执行一个load或store指令时,当前地址加上自增值与边界进行比较,如果越界,则跳回。该运算逻辑对应的编码分自增或自减两种情况,如下所示:
(1)地址自增的情况下的编码:
if(aa_inc>=0&&aa+aa_inc>aa_end)
aa=aa+aa_inc-(aa_end-aa_start+1);
else
aa=aa+aa_inc。
(2)地址自减的情况下的编码:
if(aa_inc<0&&aa+aa_mc<aa_start)
aa=aa+aa_inc+(aa_end-aa_start+1);
else
aa=aa+aa_inc。
其中,aa_inc为地址增量寄存器的自增值或自减值(地址自增的情况下aa_inc为地址增量寄存器的自增值,地址自减的情况下aa_inc为地址增量寄存器的自减值);aa_start为地址缓冲首边界的值;aa_end为地址缓冲尾边界的值;aa为当前地址寄存器的值;(aa_end-aa_start+1)为缓存器的缓存大小值。
然而,上述目前解决方案的缺陷为:该运算逻辑都是在处理器中完成的,也就是说,对于aa+aa_inc>aa_end、aa+aa_inc<aa_start、aa+aa_inc+(aa_end-aa_start+1)和aa+aa_inc-(aa_end-aa_start+1)这四个运算来说,为了实现地址缓冲管理,需要在处理器的硬件实现上采用两个加法器串联,再加上两级二选一数据选择器(MUX)电路选择输出,如图1中粗实线所示的四条关键路径,可见对应处理器的逻辑电路是比较复杂的。
具体的,图1中,表示加法器(执行上述编码的加法运算),表示MUX,也可称为判断分支的选择器(执行上述编码的if/else分支选择运算),buffsize=aa_end-aa_start+1,图1这种处理方式是采用两个加法器串联处理的方式,比如加法器11和加法器12串联,加法器11和加法器13串联;而且采用了二级MUX电路,如图1所示的选择器21(选择器22)与选择器23构成了二级MUX,也就是说最终实现选择输出需采用二级MUX电路。
综上所述,由于处理器的逻辑电路是串行处理(需两个加法器串联),为了最终实现选择输出(需两级MUX电路选择输出),因此,逻辑运算复杂导致采用的处理器的逻辑电路复杂,势必增加硬件成本,而且逻辑运算复杂还能导致拉低整个处理器的频率、产生时序的问题,从而,为了实现地址缓冲管理,采用现有的处理器,既增加了硬件成本,又无法满足处理器时序设计、高效节能的设计需求。
发明内容
有鉴于此,本发明的主要目的在于提供一种处理器地址缓冲管理的实现装置及方法,既降低了处理器的硬件成本,又能满足处理器时序设计、高效节能的设计需求。
为达到上述目的,本发明的技术方案是这样实现的:
一种处理器地址缓冲管理的实现装置,该装置包括:汇编器和处理器;其中,
所述汇编器,用于对地址自增值及边界设置指令进行编码时,运算得到中间值并将中间值封装到地址自增值及边界设置指令中;所述中间值为用于实现地址缓冲管理的地址自增或自减运算的数值;
处理器,用于对地址自增值及边界设置指令译码时获得所述中间值;执行load或store指令时,根据中间值进行地址自增或自减判断,实现地址缓冲管理。
其中,所述汇编器包括指令编码单元和指令封装单元;其中,
所述指令编码单元,用于在汇编器获得地址自增值及边界设置指令为setaa,<aa_inc>,[aa_start,aa_end]的情况下,根据地址增量寄存器的自增值或自减值aa_inc、地址缓冲尾边界的值aa_end和地址缓冲首边界的值aa_start进行运算,运算得到第一中间值aa_wrap和第二中间值aa_test;
所述指令封装单元,用于封装包含所述aa_inc、所述aa_wrap和所述aa_test的所述地址自增值及边界设置指令为二进制的指令机器码。
其中,所述处理器包括指令译码单元和自增或自减运算单元;其中,
所述指令译码单元,用于对所述地址自增值及边界设置指令译码时,从指令机器码中取出所述aa_inc、所述aa_wrap和所述aa_test;
所述自增或自减运算单元,用于执行load或store指令时,根据aa_inc、aa_wrap和aa_test进行地址自增或自减判断,实现地址缓冲管理。
其中,所述指令编码单元,进一步用于在aa_inc>0时为地址自增的情况下,
aa_inc具体为地址增量寄存器的自增值;
根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc-(aa_end-aa_start+1);aa_test=aa_inc-aa_end-1;或者,
所述指令编码单元,进一步用于在aa_inc<0时为地址自减的情况下,
aa_inc具体为地址增量寄存器的自减值;
根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc+(aa_end-aa_start+1);aa_test=aa_inc-aa_start。
其中,所述自增或自减运算单元,进一步用于获得所述aa_wrap和所述aa_test情况下,通过判断aa_inc和aa+aa_test值的符号位是否相等实现地址缓冲管理,相等时,aa=aa+aa_wrap;不相等时,aa=aa+aa_inc;其中,所述aa为当前地址寄存器的值。
一种处理器地址缓冲管理的实现方法,该方法包括:
汇编器对地址自增值及边界设置指令进行编码时,运算得到中间值并将中间值封装到地址自增值及边界设置指令中;所述中间值为用于实现地址缓冲管理的地址自增或自减运算的数值;
处理器对地址自增值及边界设置指令译码时获得所述中间值;执行load或store指令时,根据中间值进行地址自增或自减判断,实现地址缓冲管理。
其中,所述运算得到中间值具体包括:在汇编器获得地址自增值及边界设置指令为set aa,<aa_inc>,[aa_start,aa_end]的情况下,根据aa_inc、aa_end和aa_start进行运算,运算得到第一中间值aa_wrap和第二中间值aa_test。
其中,所述实现地址缓冲管理具体包括:对所述地址自增值及边界设置指令译码时获得所述aa_inc、所述aa_wrap和所述aa_test情况下,执行load或store指令时,根据所述aa_inc、aa_wrap和aa_test进行地址自增或自减判断,实现地址缓冲管理。
其中,在aa_inc>0时为地址自增的情况下,aa_inc具体为地址增量寄存器的自增值;
根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc-(aa_end-aa_start+1);aa_test=aa_inc-aa_end-1;或者,
在aa_inc<0时为地址自减的情况下,aa_inc具体为地址增量寄存器的自减值;
根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc+(aa_end-aa_start+1);aa_test=aa_inc-aa_start。
其中,所述根据aa_wrap和aa_test进行地址自增或自减判断,实现地址缓冲管理具体包括:获得所述aa_wrap和所述aa_test情况下,通过判断aa_inc和aa+aa_test值的符号位是否相等实现地址缓冲管理,相等时,aa=aa+aa_wrap;不相等时,aa=aa+aa_inc;其中,所述aa为当前地址寄存器的值。
本发明汇编器对地址自增值及边界设置指令进行编码时,运算得到中间值并将中间值封装到地址自增值及边界设置指令中;处理器对地址自增值及边界设置指令译码时获得中间值;执行load或store指令时,根据中间值进行地址自增或自减判断,实现地址缓冲管理。
由于本发明区别于现有技术,并不是将所有运算逻辑都通过处理器实现,而是通过汇编器分担了现有处理器的部分运算逻辑以获得中间值,仅在处理器采用中间值进行地址自增或自减判断的核心运算,以实现地址缓冲管理,因此,简化了处理器的运算逻辑,避免了逻辑运算复杂导致的硬件成本增加,及拉低整个处理器的频率、产生时序的问题,从而既降低了处理器的硬件成本,又能满足处理器时序设计、高效节能的设计需求。
附图说明
图1为现有处理器的逻辑电路示意图;
图2为本发明地址缓冲管理的实现装置的组成结构示意图;
图3为本发明处理器的逻辑电路示意图。
具体实施方式
本发明的基本思想是:运算逻辑分为两部分,分别在汇编器和处理器中实现,由于汇编器分担了现有处理器的部分运算逻辑以获得中间值,仅在处理器采用中间值进行地址自增或自减判断的核心运算,以实现地址缓冲管理,因此,简化了处理器的运算逻辑,为了实现地址缓冲管理,既不会增加处理器的硬件成本,又能满足处理器时序设计、高效节能的设计需求。
下面结合附图对技术方案的实施作进一步的详细描述。
一种处理器地址缓冲管理的实现装置,该装置主要包括以下内容:
装置包括汇编器和处理器;其中,汇编器用于对地址自增值及边界设置指令进行编码时,运算得到中间值并将中间值封装到地址自增值及边界设置指令中;中间值为用于实现地址缓冲管理的地址自增或自减运算的数值。处理器用于对地址自增值及边界设置指令译码时获得所述中间值;执行load或store指令时,根据中间值进行地址自增或自减判断,实现地址缓冲管理。
进一步的,汇编器包括指令编码单元和指令封装单元;其中,指令编码单元用于在汇编器获得地址自增值及边界设置指令为setaa,<aa_inc>,[aa_start,aa_end]的情况下,根据地址增量寄存器的自增值或自减值aa_inc、地址缓冲尾边界的值aa_end和地址缓冲首边界的值aa_start进行运算,运算得到第一中间值aa_wrap和第二中间值aa_test。指令封装单元用于封装包含所述aa_inc、所述aa_wrap和所述aa_test的地址自增值及边界设置指令为二进制的指令机器码。
进一步的,处理器包括指令译码单元和自增或自减运算单元;其中,指令译码单元用于对地址自增值及边界设置指令译码时,从指令机器码获得所述aa_inc、所述aa_wrap和所述aa_test。自增或自减运算单元用于执行load或store指令时,根据所述aa_inc、aa_wrap和aa_test进行地址自增或自减判断,实现地址缓冲管理。
进一步的,指令编码单元进一步用于在aa_inc>0时为地址自增的情况下,aa_inc具体为地址增量寄存器的自增值;根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc-(aa_end-aa_start+1);aa_test=aa_inc-aa_end-1;或者,
指令编码单元进一步用于在aa_inc<0时为地址自减的情况下,aa_inc具体为地址增量寄存器的自减值;根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc+(aa_end-aa_start+1);aa_test=aa_inc-aa_start。
进一步的,自增或自减运算单元进一步用于获得所述aa_wrap和所述aa_test情况下,通过判断aa_inc和aa+aa_test值的符号位是否相等实现地址缓冲管理,相等时,aa=aa+aa_wrap;不相等时,aa=aa+aa_inc;其中,所述aa为当前地址寄存器的值。
一种处理器地址缓冲管理的实现方法,该方法主要包括以下内容:
一、汇编器对地址自增值及边界设置指令进行编码时,运算得到中间值并将中间值封装到地址自增值及边界设置指令中;所述中间值为用于实现地址缓冲管理的地址自增或自减运算的数值。
二、处理器对地址自增值及边界设置指令译码时获得所述中间值;执行load或store指令时,根据中间值进行地址自增或自减判断,实现地址缓冲管理。
进一步的,所述运算得到中间值具体包括:在汇编器获得地址自增值及边界设置指令为set aa,<aa_inc>,[aa_start,aa_end]的情况下,根据aa_inc、aa_end和aa_start进行运算,运算得到第一中间值aa_wrap和第二中间值aa_test。
进一步的,所述实现地址缓冲管理具体包括:对所述编码的load或store指令译码并获得所述aa_inc、所述aa_wrap和所述aa_test情况下,执行load或store指令时,根据所述aa_inc、aa_wrap和aa_test进行地址自增或自减判断,实现地址缓冲管理。
进一步的,在aa_inc>0时为地址自增的情况下,aa_inc具体为地址增量寄存器的自增值;根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc-(aa_end-aa_start+1);aa_test=aa_inc-aa_end-1;或者,
在aa_inc<0时为地址自减的情况下,aa_inc具体为地址增量寄存器的自减值;根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc+(aa_end-aa_start+1);aa_test=aa_inc-aa_start。
进一步的,所述根据aa_wrap和aa_test进行地址自增或自减判断,实现地址缓冲管理具体包括:获得所述aa_wrap和所述aa_test情况下,通过判断aa_inc和aa+aa_test值的符号位是否相等实现地址缓冲管理,相等时,aa=aa+aa_wrap;不相等时,aa=aa+aa_inc;其中,所述aa为当前地址寄存器的值。
综上所述,本发明能实现处理器中load/store时的地址缓冲管理,同时还能在降低处理器硬件成本的基础上满足处理器的性能设计和时序要求。本发明简化了处理器的运算逻辑,从而避免了现有处理器设计中存在的复杂逻辑导致的时序问题,即引入汇编器,将一部分运算逻辑放到汇编器中运行,而处理器的运算逻辑只处理由汇编器处理得到的中间值。其中,针对运算逻辑放到汇编器中运行而言,汇编器在对load或store指令进行编码时,会对地址缓冲的首、尾边界值和地址增量寄存器的自增值或自减值进行运算,得出两个中间值,编码在指令中,生成二进制机器码;针对处理器只处理中间值的运算逻辑而言,当处理器在对指令译码时,直接对中间值进行处理,可以简化处理器的运算逻辑,由于运算逻辑的简化会导致对应处理器的逻辑电路简单,从而避免出现现有处理器中由两个加法器串联及二级MUX电路构成关键路径的复杂逻辑电路,保证满足处理器的频率设计要求。
以下对本发明进行举例阐述。
装置实施例:如图2所示为本发明地址缓冲管理的实现装置的组成结构示意图,由汇编器和处理器构成。其中,汇编器是针对地址自增值及边界设置指令set aa,<aa_inc>,[aa_start,aa_end]处理的,在汇编器获得地址自增值及边界设置指令为set aa,<aa_inc>,[aa_start,aa_end]的情况下,汇编器中的指令编码单元用于对地址自增值及边界设置指令进行编码时,根据地址增量寄存器的自增值或自减值aa_inc、地址缓冲尾边界的值aa_end和地址缓冲首边界的值aa_start进行运算,运算得到第一中间值aa_wrap和第二中间值aa_test;汇编器中的指令封装单元用于按照指令封装格式,封装包含aa_inc、及aa_wrap和aa_test这两个中间值的地址自增值及边界设置指令为二进制的指令机器码,即为:将<aa_inc>、<aa_wrap>、<aa_test>封装到set aa,<aa_inc>,[aa_start,aa_end]指令的机器码中。处理器中的指令译码单元(具体为由图2中的load/store指令译码单元和地址自增值及边界设置指令译码单元组成),地址自增值及边界设置指令译码单元用于对地址自增值及边界设置指令译码并获得aa_inc、及aa_wrap和aa_test这两个中间值,将aa_inc、及aa_wrap和aa_test这两个中间值保存在寄存器(即图2中的自增值及中间值寄存器)中,即为:当对set aa,<aa_inc>,[aa_start,aa_end]指令进行译码时,是直接取出机器码中的<aa_inc>、<aa_wrap>、<aa_test>并保存在对应寄存器中,而不进行任何运算(每个地址寄存器分别对应上述<aa_inc>、<aa_wrap>、<aa_test>的一组值);load/store指令译码单元用于对load/store指令译码;处理器中的自增或自减运算单元用于执行load或store指令时,根据aa_wrap和aa_test这两个中间值及aa_inc进行地址自增或自减判断运算,以实现地址缓冲管理,即为:当处理load或store指令时,会取出对应地址寄存器的中的<aa_inc>、<aa_wrap>、<aa_test>值,并进行判断,加法,选择输出等操作。
本实施例的运算逻辑分两部分逻辑运算,分别在汇编器和处理器中实现,其中一部分较复杂的逻辑运算放在汇编器中进行,剩下的一部分简单的逻辑运算放在处理器中进行。
现有技术运算逻辑为:给每个地址寄存器设置两个边界寄存器,一个为首边界寄存器,另一个为尾边界寄存器,并通过指令设置这两个寄存器的值,当执行一个load或store指令时,当前地址加上自增值与边界进行比较,如果越界,则跳回。但是,本实施例的运算逻辑与现有技术的区别是,引入了汇编器中的aa_wrap和aa_test这两个中间值。以下将本实施例引入了aa_wrap和aa_test这两个中间值的运算逻辑与现有技术运算逻辑的转化进行对比描述,对应的编码也分为自增或自减两种情况,如下所示:
(1)地址自增的情况下的编码:
if(aa_inc>0&&aa+aa_inc>aa_end)(1-1)
aa=aa+aa_inc-(aa_end-aa_start+1);
else
aa=aa+aa_inc;
若设置:aa_test=aa_inc-aa_end-1;(1-2)
aa_wrap=aa_inc-(aa_end-aa_start+1);(1-3)
则上述公式(1-1)所示的if/else分支选择运算编码转化为如下公式(1-4)所示的if/else分支选择运算编码:
if(aa_inc>0&&aa+aa_test>-1);(1-4)
aa=aa+aa_wrap;
else
aa=aa+aa_inc;
等价于:
if(aa_inc>0&&aa+aa_test>=0)(1-4’)
aa=aa+aa_wrap;
else
aa=aa+aa_inc;
(2)地址自减的情况下的编码:
if(aa_inc<0&&aa+aa_inc<aa_start)(2-1)
aa=aa+aa_inc+(aa_end-aa_start+1);
else
aa=aa+aa_inc;
若设置:aa_test=aa_inc-aa_start;(2-2)
aa_wrap=aa_inc+(aa_end-aa_start+1);(2-3)
则上述公式(2-1)所示的if/else分支选择运算编码转化为如下公式(2-4)所示的if/else分支选择运算编码:
if(aa_inc<0&&aa+aa_test<0)(2-4)
aa=aa+aa_wrap;
else
aa=aa+aa_inc;
(3)aa_inc为0时,aa不需要更新,即地址既不自增也不自减的情况下的编码:
if(aa_inc==0)(3-1)
aa_wrap=0;
这种情况下,aa_wrap=0;aa_test的值不用考虑,aa_test可以是一个任意值,因为无论aa+aa_test的值为多少,aa+aa_wrap和aa+aa_inc的结果都是aa,因此,后续处理器不需要关心aa_inc是否等于0,这种地址既不自增也不自减的特殊情况。
(4)通过以上的逻辑转化可知:在处理器中直接采用汇编器中引入的aa_wrap和aa_test这两个中间值,由公式(1-4)或(1-4’)以及(2-4)式可以得到如下公式(4-1)所示的if/else分支选择运算编码,实现自增或自减判断运算。
if(sign(aa_inc)==sign(aa+aa_test))(4-1)
aa=aa+aa_wrap;
else
aa=aa+aa_inc;
综上所述,通过本实施例汇编器中引入的aa_wrap和aa_test这两个中间值,以及处理器中直接采用这两个中间值,采用公式(4-1)所示的if/else分支选择运算编码,也能实现地址缓冲管理,即为:地址在设置的一个地址寄存器的首、尾边界值范围内自增或自减,当跨越边界时,自动跳回边界内。
由于通过引入汇编器中编码的中间值,对上述运算逻辑进行转化,从而在最终处理器执行load或store指令时只需要公式(4-1)所示的if/else分支选择运算,简化了处理器中的运算逻辑,在处理器中只需比较aa_inc和aa+aa_test的最高位(符号位)是否相等,上述if(sign(aa_inc)==sign(aa+aa_test))表示该符号位比较,而不需要一个加法器来判断,这样也就规避了现有处理器运算逻辑对应的逻辑电路中两个加法器串联及二级MUX电路的复杂逻辑,与现有处理器相比,硬件逻辑电路得到大大简化。
应用实例:如图3所示为本发明处理器的逻辑电路示意图,上述图2所示的处理器是针对其软件功能模块而言的,本实例是针对处理器的硬件电路结构而言的,只需要知道3个变量,aa_inc,aa_wrap和aa_test就可以实现执行load或store指令时的if/else分支选择运算,以最终实现地址缓冲管理。图3这种处理方式是采用加法器并行处理的方式,加法器31、加法器32和加法器33并联,且最终实现由选择器41选择输出仅仅采用一级MUX电路。
可见:本发明能由汇编器和处理器中两部分运算逻辑组成,相对复杂的运算逻辑,基于上述公式(1-2),(1-3),(2-2),(2-3),(3-1)运算得到中间值由汇编器完成(其中由公式(3-1)运算的这种特殊情况一般不关心),当汇编器对指令set aa,<aa_inc>,[aa_start,aa_end]进行编码时,会根据aa_inc的值的正、负,由式(1-2),(1-3),(2-2),(2-3),计算得出aa_test和aa_wrap这两个中间值,并编码在load或store指令中。当处理器对这条load或store指令进行译码时,取出aa_inc,aa_test和aa_wrap的值并保存在寄存器中。简单的运算逻辑由处理器执行,当处理器执行一条load或store指令时,会对相应的aa_inc和aa+aa_test的符号位进行比较判断。进而更新aa的值,保证其在aa_start和aa_end中间进行跳动。对应处理器的逻辑电路,只需3个并联的加法器以及一个MUX电路组成,就能在实现地址缓冲管理的基础上,用最少的硬件成本,完全可以满足处理器的频率和时序要求。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种处理器地址缓冲管理的实现装置,其特征在于,该装置包括:汇编器和处理器;其中,
所述汇编器,用于对地址自增值及边界设置指令进行编码时,运算得到中间值并将中间值封装到地址自增值及边界设置指令中;所述中间值为用于实现地址缓冲管理的地址自增或自减运算的数值;
处理器,用于对地址自增值及边界设置指令译码时获得所述中间值;执行load或store指令时,根据中间值进行地址自增或自减判断,实现地址缓冲管理。
2.根据权利要求1所述的装置,其特征在于,所述汇编器包括指令编码单元和指令封装单元;其中,
所述指令编码单元,用于在汇编器获得地址自增值及边界设置指令为setaa,<aa_inc>,[aa_start,aa_end]的情况下,根据地址增量寄存器的自增值或自减值aa_inc、地址缓冲尾边界的值aa_end和地址缓冲首边界的值aa_start进行运算,运算得到第一中间值aa_wrap和第二中间值aa_test;
所述指令封装单元,用于封装包含所述aa_inc、所述aa_wrap和所述aa_test的所述地址自增值及边界设置指令为二进制的指令机器码。
3.根据权利要求2所述的装置,其特征在于,所述处理器包括指令译码单元和自增或自减运算单元;其中,
所述指令译码单元,用于对所述地址自增值及边界设置指令译码时,从指令机器码中取出所述aa_inc、所述aa_wrap和所述aa_test;
所述自增或自减运算单元,用于执行load或store指令时,根据aa_inc、aa_wrap和aa_test进行地址自增或自减判断,实现地址缓冲管理。
4.根据权利要求3所述的装置,其特征在于,所述指令编码单元,进一步用于在aa_inc>0时为地址自增的情况下,
aa_inc具体为地址增量寄存器的自增值;
根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc-(aa_end-aa_start+1);aa_test=aa_inc-aa_end-1;或者,
所述指令编码单元,进一步用于在aa_inc<0时为地址自减的情况下,
aa_inc具体为地址增量寄存器的自减值;
根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc+(aa_end-aa_start+1);aa_test=aa_inc-aa_start。
5.根据权利要求4所述的装置,其特征在于,所述自增或自减运算单元,进一步用于获得所述aa_wrap和所述aa_test情况下,通过判断aa_inc和aa+aa_test值的符号位是否相等实现地址缓冲管理,相等时,aa=aa+aa_wrap;不相等时,aa=aa+aa_inc;其中,所述aa为当前地址寄存器的值。
6.一种处理器地址缓冲管理的实现方法,其特征在于,该方法包括:
汇编器对地址自增值及边界设置指令进行编码时,运算得到中间值并将中间值封装到地址自增值及边界设置指令中;所述中间值为用于实现地址缓冲管理的地址自增或自减运算的数值;
处理器对地址自增值及边界设置指令译码时获得所述中间值;执行load或store指令时,根据中间值进行地址自增或自减判断,实现地址缓冲管理。
7.根据权利要求6所述的方法,其特征在于,所述运算得到中间值具体包括:在汇编器获得地址自增值及边界设置指令为set aa,<aa_inc>,[aa_start,aa_end]的情况下,根据aa_inc、aa_end和aa_start进行运算,运算得到第一中间值aa_wrap和第二中间值aa_test。
8.根据权利要求7所述的方法,其特征在于,所述实现地址缓冲管理具体包括:对所述地址自增值及边界设置指令译码时获得所述aa_inc、所述aa_wrap和所述aa_test情况下,执行load或store指令时,根据所述aa_inc、aa_wrap和aa_test进行地址自增或自减判断,实现地址缓冲管理。
9.根据权利要求7或8所述的方法,其特征在于,在aa_inc>0时为地址自增的情况下,aa_inc具体为地址增量寄存器的自增值;
根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc-(aa_end-aa_start+1);aa_test=aa_inc-aa_end-1;或者,
在aa_inc<0时为地址自减的情况下,aa_inc具体为地址增量寄存器的自减值;
根据所述aa_inc、所述aa_end和所述aa_start运算得到第一中间值aa_wrap和第二中间值aa_test具体为:aa_wrap=aa_inc+(aa_end-aa_start+1);aa_test=aa_inc-aa_start。
10.根据权利要求9所述的方法,其特征在于,所述根据aa_wrap和aa_test进行地址自增或自减判断,实现地址缓冲管理具体包括:获得所述aa_wrap和所述aa_test情况下,通过判断aa_inc和aa+aa_test值的符号位是否相等实现地址缓冲管理,相等时,aa=aa+aa_wrap;不相等时,aa=aa+aa_inc;其中,所述aa为当前地址寄存器的值。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110065349.XA CN102681822B (zh) | 2011-03-17 | 2011-03-17 | 一种处理器地址缓冲管理的实现装置及方法 |
US14/005,719 US9389859B2 (en) | 2011-03-17 | 2011-08-24 | Device and method for implementing address buffer management of processor |
EP11860956.9A EP2687980B1 (en) | 2011-03-17 | 2011-08-24 | Device and method for implementing address buffer management of processor |
PCT/CN2011/078815 WO2012122781A1 (zh) | 2011-03-17 | 2011-08-24 | 一种处理器地址缓冲管理的实现装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110065349.XA CN102681822B (zh) | 2011-03-17 | 2011-03-17 | 一种处理器地址缓冲管理的实现装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102681822A true CN102681822A (zh) | 2012-09-19 |
CN102681822B CN102681822B (zh) | 2016-06-15 |
Family
ID=46813809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110065349.XA Active CN102681822B (zh) | 2011-03-17 | 2011-03-17 | 一种处理器地址缓冲管理的实现装置及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9389859B2 (zh) |
EP (1) | EP2687980B1 (zh) |
CN (1) | CN102681822B (zh) |
WO (1) | WO2012122781A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262802A (zh) * | 2019-06-25 | 2019-09-20 | 中日龙(襄阳)机电技术开发有限公司 | 一种取出机Sequence数据的新型执行方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6372250B2 (ja) * | 2014-08-25 | 2018-08-15 | サンケン電気株式会社 | 演算処理装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59172044A (ja) * | 1983-03-22 | 1984-09-28 | Fujitsu Ltd | 命令制御方式 |
CN101124539A (zh) * | 2004-05-13 | 2008-02-13 | 皇家飞利浦电子股份有限公司 | 低功率汇编器 |
CN101256546A (zh) * | 2007-03-01 | 2008-09-03 | 黄新亚 | 32位微处理器 |
CN101751244A (zh) * | 2010-01-04 | 2010-06-23 | 清华大学 | 微处理器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59174948A (ja) * | 1983-03-25 | 1984-10-03 | Toshiba Corp | 情報処理装置 |
EP0992880A1 (en) * | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Circular buffer management |
KR100695289B1 (ko) | 2006-03-09 | 2007-03-16 | 주식회사 하이닉스반도체 | 반도체 메모리 장치의 어드레스 버퍼 및 어드레스 버퍼링방법 |
CN101727295B (zh) | 2008-10-31 | 2012-01-04 | 西安奇维测控科技有限公司 | 一种基于虚拟块闪存地址映射的数据写入及读出方法 |
-
2011
- 2011-03-17 CN CN201110065349.XA patent/CN102681822B/zh active Active
- 2011-08-24 WO PCT/CN2011/078815 patent/WO2012122781A1/zh active Application Filing
- 2011-08-24 US US14/005,719 patent/US9389859B2/en active Active
- 2011-08-24 EP EP11860956.9A patent/EP2687980B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59172044A (ja) * | 1983-03-22 | 1984-09-28 | Fujitsu Ltd | 命令制御方式 |
CN101124539A (zh) * | 2004-05-13 | 2008-02-13 | 皇家飞利浦电子股份有限公司 | 低功率汇编器 |
CN101256546A (zh) * | 2007-03-01 | 2008-09-03 | 黄新亚 | 32位微处理器 |
CN101751244A (zh) * | 2010-01-04 | 2010-06-23 | 清华大学 | 微处理器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262802A (zh) * | 2019-06-25 | 2019-09-20 | 中日龙(襄阳)机电技术开发有限公司 | 一种取出机Sequence数据的新型执行方法 |
CN110262802B (zh) * | 2019-06-25 | 2023-02-03 | 中日龙(襄阳)机电技术开发有限公司 | 一种取出机Sequence数据的新型执行方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2687980A4 (en) | 2017-03-01 |
US9389859B2 (en) | 2016-07-12 |
EP2687980A1 (en) | 2014-01-22 |
WO2012122781A1 (zh) | 2012-09-20 |
EP2687980B1 (en) | 2023-09-27 |
US20140013084A1 (en) | 2014-01-09 |
CN102681822B (zh) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6418527B1 (en) | Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods | |
US6848074B2 (en) | Method and apparatus for implementing a single cycle operation in a data processing system | |
JP2014179065A (ja) | データ処理装置、データ処理方法およびデータ処理プログラム | |
US8707013B2 (en) | On-demand predicate registers | |
CN102681822B (zh) | 一种处理器地址缓冲管理的实现装置及方法 | |
US8843730B2 (en) | Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination | |
CN113407351B (zh) | 执行运算的方法、装置、芯片、设备、介质和程序产品 | |
JP2016045721A (ja) | データ格納方法、三値内積演算回路、それを備えた半導体装置、及び、三値内積演算処理プログラム | |
CN105027076A (zh) | 相加-比较-选择指令 | |
CN102822794B (zh) | 处理阶层式极长指令包的系统和方法 | |
CN113495669B (zh) | 一种解压装置、加速器、和用于解压装置的方法 | |
US9069548B2 (en) | Reconfigurable instruction encoding method and processor architecture | |
CN112130899A (zh) | 一种堆栈计算机 | |
US8700886B2 (en) | Processor configured for operation with multiple operation codes per instruction | |
CN103746771A (zh) | 一种基于gpp和simd技术的信道编译码的数据格式转换方法 | |
US11269651B2 (en) | Reusing adjacent SIMD unit for fast wide result generation | |
EP2666082B1 (en) | Integrated circuit device and method for calculating a predicate value | |
CN111857651B (zh) | 用多比特加法器并行进行多个少比特加法的方法及应用 | |
US9672042B2 (en) | Processing system and method of instruction set encoding space utilization | |
JP4601624B2 (ja) | 命令プリデコーダ付きダイレクトメモリアクセスユニット | |
US20120117360A1 (en) | Dedicated instructions for variable length code insertion by a digital signal processor (dsp) | |
CN118444980A (zh) | 用于加速处理器中的Keccak执行的指令 | |
CN118586467A (zh) | 一种bp神经网络电路及其中的乘累加电路 | |
Tsao et al. | A module generator for parameterized DSP core | |
CN115167922A (zh) | 指令处理方法、装置、电子设备及计算机可读存储介质 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221110 Address after: 518055 Zhongxing Industrial Park, Liuxian Avenue, Xili street, Nanshan District, Shenzhen City, Guangdong Province Patentee after: SANECHIPS TECHNOLOGY Co.,Ltd. Address before: 518057 Ministry of justice, Zhongxing building, South Science and technology road, Nanshan District hi tech Industrial Park, Shenzhen, Guangdong Patentee before: ZTE Corp. |
|
TR01 | Transfer of patent right |