CN1430746A - 用于存储和提供解码信息的带高速缓存器的装置及其方法 - Google Patents
用于存储和提供解码信息的带高速缓存器的装置及其方法 Download PDFInfo
- Publication number
- CN1430746A CN1430746A CN01810059A CN01810059A CN1430746A CN 1430746 A CN1430746 A CN 1430746A CN 01810059 A CN01810059 A CN 01810059A CN 01810059 A CN01810059 A CN 01810059A CN 1430746 A CN1430746 A CN 1430746A
- Authority
- CN
- China
- Prior art keywords
- cache
- instruction
- information
- decoded
- demoder
- 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 31
- 238000003860 storage Methods 0.000 claims description 30
- 238000007689 inspection Methods 0.000 claims description 15
- 230000007246 mechanism Effects 0.000 claims description 5
- 230000007704 transition Effects 0.000 claims description 4
- 230000008859 change Effects 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000009434 installation Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000002699 waste material Substances 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种用于提供解码信息的装置和方法,所述装置包括:用于存储已编码信息的存储模块;与存储模块相连的解码器,用于取指令并将已解码信息解码,且用于提供已解码信息;和与存储模块、解码器和已解码信息接收者相连的高速缓存器,所述高速缓存器适用于存储至少一个以解码信息集,所述信息集将在高速缓存器检查条件满足和发生高速缓存器选中后被提供给信息接收者。当数据流发生改变时高速缓存器检查条件满足。
Description
技术领域
本发明涉及提供解码信息的装置和方法,尤其是涉及具有用于存储和向信息接收者提供解码信息的高速缓存的装置。
背景技术
本文中用到的“信息”一词应当包括任何类型的数据或指令或二者。本文中使用的编码、加密、编成密码、压缩和解码、解密、译码和解压缩,以及相关词语应当包括任何形式的用于任何目的的编码,包括而不仅限于模糊意义的通过压缩或压紧占用较少的空间或发射时间,或任何其它信息技术。词语编码、加密、译成密码、压缩也应当具有相同意义,并且它们的反义词,例如,解码、解密、译码和解压缩也是一样的。为便于解释,而不限制如上所提到的用词“信息”和“编码”的意义,本文后面使用术语“指令”和“编码”。
存在一种以编码形式存储指令的需要。这可以是因为想要使指令对于非计划中的用户不透明或通过某些去除冗余的方法节省存储器或压缩编码或由于其它原因。
以编码形式存储指令导致几个问题,其中一个是需要将从存储器中取回的指令进行解码。当需要重新取回已编码指令时就需要再对其解码,从而导致浪费时间和降低装置性能。
在许多计算机装置中,当信息流发生变化时这些问题更加尖锐。当信息流变化时,必须要在提供给计算机装置的CPU之前从存储器中取回指令并解码。
信息流的变化可能出于各种原因,比如执行条件或非条件分支指令时。分支目标指令是一种在执行分支指令时被CPU取走的指令。分支目标指令的地址被称为“分支目标地址”,且是任何分支指令的一部分。在一些指令,例如PowerPC微处理器的Isync指令中,分支目标地址是预先确定的,由操作码单独地驱动。
当分支预测错误时,这个问题也会发生。在这种情况下,需要重新取回跟随分支指令的指令。
在假设支持处理非常频繁变化的数据流的计算机装置中,以上所提到的这种时间浪费和降低装置性能的情况尤其尖锐。
另一个关于以编码形式存储指令的问题就是,指令的长度因编码指令不对齐而不同。此外,单个编码指令可能会存储在存储字一部分甚至是多于一个存储字中。
存在一种需要,允许数据流频繁变化而带来的性能损失最小。进一步存在一种对能够减小或消除所述和其他现有技术具有的公知限制的,可用于改进的计算机和计算机存储器组织和操作方法的需要。
附图简要说明
尽管本发明由所附权利要求特别指出,本发明的其它特性由随后的详细描述及连同的附图所公开,其中;
图1是说明根据本发明优选实施例的装置和处理器的简化图;
图2为示出根据本发明另一个优选实施例的装置和处理器的原理图;
图3是根据本发明的优选实施例,对图1-2的装置的指令存储模块部分的原理描述;
图4是根据本发明的优选实施例,对图1-2的计算机装置的高速缓存器的简化原理描述;
图5是根据本发明的另一个优选实施例,对图1-2的计算机装置高速缓存的简化原理描述;
图6是根据本发明的优选实施例的简化时序图,示出图1-5的高速缓存指令的储存;
图7是根据本发明的优选实施例,用于存储和从高速缓存中或向其提供解码指令的方法流程图。
具体实施方式
应当注意到在本文的详细描述以及随同附图中公开的所用特殊术语和表达以及特殊结构和操作仅是示例性的,不应看作对所附权利要求中所描述的本发明的范围有任何限制。
本发明提供了一种装置和方法,所述装置和方法用于提供解密信息,例如编码指令,所述装置包括:用于存储解码指令的存储模块;与存储模块相连的解码器,其用于取出和将已解码指令进行解码用以提供已解码指令;以及与存储模块和解码器和解码指令接收者相连的高速缓存器,所述高速缓存器适用于存储至少一组解码指令,以在高速缓存检查条件满足且高速缓存选中发生后提供给指接收者。
方便地,指令被信息接收者执行。所述指令以解码形式存储于高速缓存中,并以编码形式存储于存储模块中,同时指令接收者是适于执行已解码指令的处理单元。
方便地,当数据流发生改变时高速缓存检查条件满足(fulfill)。可选地,也可以在被解码器解码的指令不在预先确定的指令集中时高速缓存检查条件满足。优选地,所述指令集包括具有预先确定的分支目标地址(例如Isync指令和/或)的分支指令。也可以在分支预测错误时执行高速缓存检查条件。
指令集的最大长度设计成应对不同情况,诸如最坏情况,其中以一种方式设计最大长度以允许在高速缓存提供指令集之后解码器立即提供已解码的指令。对应于典型情况,最大长度也可以较短,以便在大多数情况下解码器可以在高速缓存器提供指令集之后立即提供已解码的指令。
方便地,装置具有用于补偿解码指令长度不同的地址转换机制。优选地,该机制适用于提供至少一个存储字位置的存储模块,所述存储字至少存储由解码器解码的指令的第一部分。
方便地,高速缓存包括:标记存储器(tag memory);寄存器堆,用于存储定义了至少一个解码指令集状态的变量;高速缓存存储器,用于存储至少一个解码指令集,和与标记存储器、高速缓存存储器、寄存器堆相连的控制单元,用于控制储存和向高速缓存发送或从中接收指令。优选地,每个高速缓存存储器中的指令都带有下一指令的地址。标记存储器存储多个解码指令,所述每个指令都是不在高速缓存存储器中存储的已解码指令集中的第一个指令。
为了便于阐述,假设编码指令是解码的指令,并且数据流的改变是分支的结果。
图1是使用本发明的与处理器/CPU 22相连的装置20的简化框图。装置19包括高速缓存器24,指令存储器模块26和通过控制总线111、指令总线112和地址总线113连接的解码器28。正如根据图2-6的进一步详细描述,高速缓存器24存储多个解码的指令集,每个集以分支目标指令开始。这样安排使得当解码器28在高速缓存器24提供指令集之后解码将要提供的编码指令同时,允许数据流发生改变时提供解码指令。高速缓存器24为指令存储模块26提供至少已编码指令的第一个指令的地址,所述编码指令在高速缓存器24中的指令集的上一个指令(the last instruction)后。那个指令的部分和其他连续部分和跟随其后的指令被提供给解码器28,以被解码并将其提供给CPU 22。
当高速缓存发生丢失时,解码器28从指令存储模块26中取出相关的编码指令,将其解码并将分支目标指令以及随后的指令提供给CUP 22和高速缓存器24。高速缓存器24存储分支目标指令和多个连续(consecutive)指令。
本发明的另一个实施例中,高速缓存器24还存储至少一个指令集,所述指令集以跟随分支指令后的指令开始,以便如果分支预测错误,高速缓存器24提供跟随分支指令后的指令。当分支指令被解码时,解码器28通知高速缓存器24,高速缓存器24读取跟随分支指令后的指令。
方便地是,装置19适用于处理提供长度不同的解码指令的问题,正如根据图2-6所要阐述的,装置19具有一个地址转换机制,可以在已解码的指令提供给CPU 22之前,用将所有指令提供给解码器28的方式将存储字内容取给解码器28。以解码形式INST(j,1)存储在高速缓存器24中的指令附带下一条指令的地址ADD(j,2)。这个地址在解码过程中由解码器28产生并提供给CPU 22。方便地,CPU 22通过经总线21向高速缓存器24和解码器28提供ADD(j)来开始读周期。
每个指令集的深度设计成允许以将解码的指令提供给CPU 24,同时在指令集中的上一个指令后的指令被从指令存储模块25中取出、被解码器28解码并以已解码形式提供给CPU 22。这个长度可以设置成应对不同情况,如最坏情况或典型情况。例如,如果已解码指令可在一到三个时钟周期内从指令存储模块中取出并在随后的时钟周期内将已解码的指令提供给CPU 22,指令集的长度可以适用于在四个时钟周期内提供已解码指令以应对最坏情况。
方便地,高速缓存器24相对较小而且是全互联方式(fullyassociative),但这些特性并非必备,高速缓存器24可以更大和/或以直接映射高速缓存器或组互联高速缓存器方式实现。
图3示出指令存储模块26的261部分。261部分包括六个存储字261_1至261_6,并存储了八个已解码指令C_INST(j,1)-C_INST(j,9)71_79,而图4-5示出第j个已解码指令集,以INST(j,1)开始存储在高速缓存器24中。C_INST(j,2)具有两个部分C_INST(j,2,1)78_1和C_INST(j,2,2)72_2。C_INST(j,8)具有三个部分C_INST(j,8,1)78_1,C_INST(j,8,2)78_2和C_INST(j,8,3)78_3。已解码指令长度不同并存储在一到三个存储字中。
第一存储字261_1存储C_INST(j,1)71和C_INST(j,2,1)72_1。第二存储字261_2存储C_INST(j,2,2)72_2,C_INST(j,3)73和C_INST(j,4)74。第三存储字261_3存储C_INST(j,5)75和C_INST(j,6)76。第四存储字261_4存储C_INST(j,7)77和C_INST(j,3,1)73_1。第五存储字261_5存储C_INST(j,8,2)78_2。第六存储字存储C_INST(j,8,3)78_3和C_INST(j,9)72_9。
图2是使用本发明的装置20和CPU 22的简化方框图,装置20包括高速缓存器24,第一多路复用器30,指令存储模块26,解码器28,第二多路复用器32和第三多路复用器34。
CPU 22取出已解码指令并执行它们。指令以编码形式在指令存储模块26中存储,并在解码后提供给CPU 22。已解码指令可以由解码器28或高速缓存器24提供给CPU 22。
CPU 22通过总线21与高速缓存器24相连,用于在当前时钟周期CK(n)提供将要被取给CPU 22的当前指令INST(n)的当前地址ADD(n)。CPU 22通过连线49与高速缓存器24相连,用于提供显示数据流发生改变的控制信号COF(n)。当数据流发生改变时执行高速缓存检查条件。高速缓存器监听总线并且当数据流发生改变时它比较ADD(n)和标记存储器50的至少一部分以确定是否发生高速缓存选中(hit)。高速缓存未选中(miss)后,直至以下两个事件的最早事件发生为止:(a)导致高速缓存未选中的已解码指令集已经存储在高速缓存器24中,所述指令集以分支目标指令开始;(b)数据流发生另一改变,高速缓存24(snarfs)连线45和47以已解码指令和地址。例如,图4-5示出包含三个指令而非可能的四个指令的第(j+1)个指令集。这可能是由于在三个分离的时钟周期中数据流发生了两次改变,其中导致第一个数据流改变的INST(j+1,1)存储在高速缓存器24中。
CPU 22通过总线21与第二多路复用器32相连,用于接收下一个地址ADD(n+1)-跟在地址ADD(n)后面的地址。这个下一地址可以由高速缓存器24或解码器28提供。CPU 22通过总线25与第三多路复用器34相连以用于接收INST(n),ADD(n+1)和INST(n)可以由高速缓存器24或解码器28提供。
当数据流发生改变并且CPU 22要求取指令INST(n)时,它在总线21上提供ADD(n)并且设置COF(n)以显示数据流发生了改变。高速缓存器24检查它是否存储了有效的INST(n)。如在图4-5中更详细所见,这个检查涉及检查用于ADD(n)的标记存储器50和检查用于显示所选指令集有效性的存储器堆90。为便于阐述,假设ADD(n)=ADD(j+1),于是高速缓存发生选中,高速缓存器24设置HIT控制信号并将HIT通过总线37提供给第一到第三多路复用器30-34,导致他们选择总线35,29和27。因此,高速缓存器24向CPU 22提供INST(j,1),ADD(j,2),并向指令存储模块29提供第j个指令集的上一个指令INST(j,4)的已解码指令地址(其等于261_3)C_INST(j,5)。高速缓存器24向CPU 22提供I(j,4)后,HIT被复位。只要HIT处于复位解码器28就向CPU 22和指令存储模块26提供指令和地址。
图4-5是根据本发明的两个优选实施例的高速缓存器24的简化原理图。
高速缓存器24由标记存储器50,控制单元56,寄存器堆100和高速缓存存储器90组成。图4-5示出标记存储器50的一部分:标记寄存器和比较器52及54,存储器堆100的100_1部分和高速缓存存储器90的90_1部分。
标记寄存器和比较器TAG(j)52和TAG(j+1)54与总线21相连,用于接收ADD(n),将其与ADD(j,1)和ADD(j+1,2)分别比较,并提供信号以指示是否匹配。信号通过总线53和55提供给控制单元56。控制单元56通过总线61与寄存器堆120相连,通过总线62与高速缓存存储器90相连,通过总线51,47和45与解码器28相连,通过总线37与第一到第三多路复用器30-34相连,以及通过总线49与CPU 22相连。寄存器堆120通过总线29连到第二多路复用器32。高速缓存器24经过总线35与第一多路复用器30相连,并经过总线27与第三多路复用器34相连。
ADD(j,1)和ADD(j+1,1)与INST(j,1)和INST(j+1,1)关联。90_1部分存储第j和j+1个已解码指令集。第j个指令集以INST(j,1)81开始而第j+1个指令集以INST(j+1,1)111开始。第j指令集包含分别存储在存储器的91_1,92_2,93_1,和94_1部分中的INST(j,1)81,INST(j,2)82,INST(j,3)83,和INST(j,4)84。INST(j,1)至INST(j,4)与地址ADD(j,2)-ADD(j,5)82直至85关联。第(j+1)组指令包括分别存储在存储器的91_5,91_6,91_7部分中的INST(j+1,1)111,INST(j+1,2)112,INST(j+1,3)113。INST(j+1,1)-INST(j+1,1)与地址ADD(j+1,2)-ADD(j+1,4)112直至114关联。ADD(j,2)82直至ADD(j,5)85存储在存储器的92_1至92_4部分中。
每组指令与三个变量有关:有效页变量,有效计数变量和下一地址变量。有效页变量显示一组指令中是否包含有效指令。有效计数变量显示不在指令集中而又要提供给CPU 22的指令数目。例如,如果指令集有四个有效指令则在指令集的第一个指令提供给CPU 22后,有效计数变量被置为3。在第四个指令被提供给CPU 22后该变量被置为零。当信号HIT被置位时,该变量置为四,以显示当这组指令被重新取出时可以提供四个指令。方便地,当发生高速缓存选中时HIT被置位,当所选指令集的有效计数变量等于零时,HIT被复位。
寄存器堆100的100_1部分由存储字101和102组成。存储字101存储与第j个指令集关联的三个变量:ADDR(j,5)121_1,有效计数(j)121_2和有效页(j)121_3。存储字102存储与第二个个指令集关联的三个变量:ADDR(j+1,4)122_1,有效计数(j+1)122_2和有效页(j+1)122_3。
当以下所有条件满足时HIT由控制单元56置位:高速缓存检查条件是否满足,ADD(n)与标记存储器50中存储的其中一个地址匹配,和与所选指令级关联的有效页变量和有效计数变量显示该集至少包括一个有效指令。
例如当ADD(j+1,1)=ADD(n),COF(n)被置位,有效页(j+1)102_3被置位,并且有效计数(j+1)>0时,HIT被置位。当HIT被置位时,高速缓存器24通过总线27、第三多路复用器34和总线25,从高速缓存存储器90的95_1部分向CPU 22提供INST(j+1,1)111。高速缓存器24向指令存储模块26提供ADDR(j+1,4)102_1,以便至少将编码指令C_INST(j+1,4)的第一部分提供给解码器28,允许在高速缓存器24向CPU 22提供INST(j+1,1)至INST(j+1,3)的同时开始对INST(j+1,5)进行解码。ADD(j+1,2)通过总线29和21及第二多路复用器32提供给CPU22。优选地,解码器28在时钟周期内向CPU 22提供INST(j+1,4),所述时钟周期跟随高速缓存器24向CPU 22提供INST(j+1,3)的时钟周期之后。有效计数(j+1)开始等于3,并且只要向CPU 22提供了不在第(j+1)个指令集中的指令该值就减少。
图5中的高速缓存器24具有额外的字段用于存储第s个指令集INST(s,1)-INST(s,4)121-124和变量ADD(s,5)103_1,有效计数(s)103_2和有效页(s)103_3。第s个指令集以跟随在分支指令INST(s,0)后的指令INST(s,1)开始,便于当与INST(s,1)相关的分支预测错误时,由高速缓存器24向CPU 22提供指令INST(s,1)-INST(s,4),同时INST(s,5)和跟随其后的指令被解码,以便它们能够在高速缓存器24提供INST(s,4)之后由解码器28提供给CPU 22。
根据本发明的另一个优选实施例,高速缓存器24还存储以预定分支目标指令开始的指令集。
当高速缓存器检查条件满足但是发生了高速缓存不选中时,指令集被写入高速缓存器中。发生这种情况时,组成指令集的分支目标指令和后面的指令在被解码器28解码后同时提供给高速缓存器24和CPU 22。向高速缓存器24中的写过程可以由数据流的另一个变化终结。
方便地,每个指令都连同下一个指令的地址提供给高速缓存器24。例如,如果INST(j,1)导致高速缓存的不选中,则INST(j,1)至INST(j,4)以及地址ADD(j,2)至ADD(j,5)由解码器28在跟随高速缓存不选中后的时钟周期期问提供给高速缓存器24。
根据本发明的另一个实施例,当解码器51检测到分支指令时,指令集写入高速缓存器24,以便若分支预测错误时高速缓存器24能够提供跟在分支指令后的已解码的指令集。当解码器28检测到其解码分支指令时,它通过总线51向控制单元56提供控制信号,这使得在分支指令之后被解码的指令送往高速缓存器24。
通常,直到分支预测已确定或发现有错前,会经过一些时钟周期,这样,在这些时钟周期内已解码的指令连同多个跟随其后的指令地址写入高速缓存器24中。新指令集的位置可以根据公知方法确定。普通的方法是将高速缓存器24当作先入先出队列进行处理。
根据本发明的另一个实施例,当发生分支指令指到预定分支目标指令时,指令被写入高速缓存器24。例如,当解码器28检测到其解码一个与分支到连续指令的Isync指令时,它通过总线51发送控制信号引起高速缓存器24存储多个已解码指令。
图6为简化时序图,示出根据本发明的优选实施例由高速缓存器24提供指令的情况。图6示出在八个时钟周期内,从T1到T6出现在总线21,27,29,37和35上的信号。在T1处CPU 22置位COF并在总线21上提供ADD(j,1)。TAG(j)52发送信号给控制单元56显示发生匹配。控制单元56通过总线61访问寄存器堆90并读出存储字100_1。有效页(j)101_3显示指令集(j)有效,有效计数(j)101_2为4。控制单元确定发生了高速缓存选中,置位HIT并将其提供给总线37。控制单元56通过总线27、第三多路复用器34和总线25向CPU22提供INST(j,1),并将有效计数(j)101_2置为三。在下面的三个时钟周期,开始于T2,T3,和T4处,高速缓存器24向CPU 22提供INST(j,2)、INST(j,3)和INST(j,4)。在所有四个指令INST(j,1)-INST(j,4)都提供给CPU 22后,控制单元56复位HIT。在T5和T6,解码器在HIT置位时,将已解码的指令INST(j,5)和INST(j,6)提供给CPU 22。
图7为方法200的流程图,用于向高速缓存器提供已解码指令。优选地,方法200包括步骤202,204,206,208,210,212,214,216和218,所有步骤都用方框阐述。实线302,303,304,306,308,310,312,318和320分别与步骤202和204,步骤204和206,步骤204和212,步骤206和214和216,步骤206、208和210,步骤208、210和218,步骤212、214、216和204,步骤218和204,步骤218、208和210相连。这些通路示出优选方法流程。
方法以初始化高速缓存器24的步骤202开始。通常当高速缓存器24被初始化示,它不存储有效指令,因此有效页、有效计数和ADDR变量全都置为复位。步骤204在步骤202之后等待请求取指令ADDR
(n)并检查是否满足高速缓存检查条件。
步骤204期间高速缓存器24监测(snarf)地址总线21并控制总线例如111,49和51。方便地,当数据流发生改变时,高速缓存检查条件满足。可选地,当预测指令,如Isyn被解码器解码时,高速缓存检查条件满足。在这种情况下,从解码器28经过总线51提供的控制信号显示这个预测指令已被解码。
如果高速缓存检查条件不满足,步骤204后执行步骤212,从解码器28提供已解码指令。步骤212后面执行步骤204。
如果高速缓存检查条件满足,步骤204后执行步骤206,检查是否发生高速缓存选中。如果回答为“是”,步骤206后面执行步骤208、210和218,其中高速缓存器24提供至少一部分已解码指令集,同时提供给解码器28已编码部分的指令并解码已编码指令,所述指令跟随在所述指令集之后。步骤208从高速缓存器提供已解码指令并更新变量设置和“n”,步骤210取至少一部分指令给解码器28并将所述指令解码,跟着执行步骤218,以保证在直至以下事件中的最早事件发生之时重复执行步骤210和208:(a)全部指令集已经由高速缓存器24提供;(b)新的高速缓存检查条件已满足。
如果回答为“否”,步骤206后执行步骤214和216,由解码器28向CPU 22和高速缓存器24提供已解码指令。指令被写入高速缓存器24中,直至全部指令都写入高速缓存器24为止。
应当注意在本文中所使用得特定术语和表示,以及详细描述和所附附图中所公开的特定结构和操作细节仅为示例目的,而不对所附权利要求中描述的本发明范围产生任何限制。
因此,在此已描述了实施例,其中包括至少一个装置的优选实施例,所述装置具有用于向信息接收者及其装置提供解密详细的高速缓存器。明显地,对本领域技术人员来说所公开的主题可以有多种方式的修改,并且除上文所专门描述和介绍的优选实施形式以外,还可以采取许多实施方式。
因此,上述公开主题应认为是示例性而非限制性的,并应在法律允许下有最大扩展,应当认为所附权利要求覆盖所有这样的修改和其他落入本发明本质精神和范围内的其它实施方法。本发明范围应当由以下权利要求允许的最宽解释及它们的等同替换而非上述详细描述所确定。
Claims (25)
1.一种用于提供解码信息的装置,所述装置包括:
用于存储编码信息的存储模块;
与存储模块相连的解码器,用于取指令和对解码信息进行解码,且提供已解码信息;和
与存储模块、解码器和已解码信息接收者相连的高速缓存器,所述高速缓存器适用于存储至少一个已解码信息集,所述信息在高速缓存检查条件满足并发生高速缓存选中时提供给信息接收者。
2.根据权利要求1的装置,其中所述信息是由所述信息接收者执行的指令。
3.根据权利要求2的装置,其中所述指令以已解码形式存储在高速缓存器中,并以编码形式存储在存储模块中,并且所述信息接收者是适于执行已解码指令的处理器。
4.根据权利要求1的装置,其中当数据流发生改变时所述高速缓存检查条件满足。
5.根据权利要求4的装置,其中当所述解码器对预定指令组之外的指令解码时,所述高速缓存检查条件也满足。
6.根据权利要求5的装置,其中所述指令组包括具有预定分支目标地址的分支指令。
7.根据权利要求1的装置,其中分支预测错误时所述高速缓存检查条件满足。
8.根据权利要求1的装置,其中所述信息集最大长度设计为在所述高速缓存器提供信息集之后所述解码器立即提供解密的信息。
9.根据权利要求1的装置,其中所述信息集最大长度设计为在所述高速缓存器提供信息集之后所述解码器通常立即提供解密的信息。
10.根据权利要求1的装置,其中所述装置具备用于补偿解码信息长度不同的地址转换机制。
11.根据权利要求10的装置,所述地址转换机制适用于为所述存储模块提供至少一个存储字位置,所述存储模字至少存储要被所述解码器解码的信息的第一部分。
12.根据权利要求1的装置,其中所述高速缓存器为全互联。
13.根据权利要求1的装置,其中所述高速缓存器包括:标记存储器;
寄存器堆,用于存储定义至少一个解密信息集的状态的变量;
高速缓存器存储器,用于存储至少一个解密信息集;和
与所述标记存储器、寄存器堆和高速缓存器存储器相连的控制单元,用于控制向所述高速缓存器存储提供信息以及从所述高速缓存器接收信息。
14.根据权利要求13的装置,其中所述每个高速缓存器存储器中的信息都带有下一个信息的地址。
15.根据权利要求14的装置,其中所述标记存储器存储多个解码指令,每个解码指令是存储在所述高速缓存器存储器中的已解码指令集以外的第一个指令。
16.一种提供解码信息的方法,所述方法包含步骤:
初始化高速缓存器;
接收向信息接收者提供信息的请求并检查高速缓存条件是否满足;
(a)从解码器中提供给所述信息接收者已解码信息,并跳转到检查高速缓存条件是否满足、回答是否为“否”的步骤;
(b)检查是否发生高速缓存选中或不选中,回答是否为“是”;
(1)更新高速缓存器,直至将以导致所述高速缓存器不选中的指令开始的全部指令集被存储在高速缓存器中,如果发生高速缓存器不选中,从所述解码器将已解码信息提供给信息接收者;和跳转到检查是否发生高速缓存器不选中的步骤;
(2)将来自高速缓存器的已解码信息提供给信息接收者;向解码器提供跟随在存储于高速缓存器中的已解码信息的编码信息;将所述编码信息解码;重复步骤(2),直至提供了全部指令集,所述全部指令集以引起高速缓存器选中的指令开始,或新的高速缓存器检查条件满足;跳转至检查高速缓存器是否发生选中的步骤;
17.根据权利要求16的方法,其中所述信息是将要被所述信息接收者执行的指令。
18.根据权利要求17的方法,其中,所述指令以已解码形式存储在所述高速缓存器中,并以编码形式存储在与所述高速缓存器和所述解码器相连的存储模块中;和
其中,所述信息接收者是适于执行已解码指令的处理器;
19.根据权利要求16的方法,其中在数据流发生改变时所述高速缓存器检查条件满足。
20.根据权利要求19的方法,其中当在预定指令组之外的指令被所述解码器解码时,所述高速缓存器检查条件也满足。
21.根据权利要求20的方法,其中所述指令组包括具有预定分支目标地址的分支指令。
22.根据权利要求16的方法,其中当分支预测错误时,所述高速缓存器检查条件满足。
23.根据权利要求16的方法,其中所述信息集的最大长度设计成在所述高速缓存器提供所述信息集之后,所述解码器立即提供已解密信息。
24.根据权利要求16的方法,其中所述信息集的最大长度设计成在所述高速缓存器提供所述信息集之后,所述解码器通常立即提供已解密信息。
25.根据权利要求16的方法,其中所述步骤(b)包括用于补偿解密信息长度不同的转换地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/607,564 US6647462B1 (en) | 2000-06-29 | 2000-06-29 | Apparatus and a method for providing decoded information |
US09/607,564 | 2000-06-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1430746A true CN1430746A (zh) | 2003-07-16 |
CN1264097C CN1264097C (zh) | 2006-07-12 |
Family
ID=24432824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB018100597A Expired - Fee Related CN1264097C (zh) | 2000-06-29 | 2001-06-29 | 用于存储和提供解码信息的带高速缓存器的装置及其方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6647462B1 (zh) |
EP (1) | EP1299807A1 (zh) |
JP (1) | JP4748918B2 (zh) |
KR (1) | KR100871575B1 (zh) |
CN (1) | CN1264097C (zh) |
WO (1) | WO2002001367A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101336428B (zh) * | 2006-01-26 | 2010-09-08 | 微软公司 | 分析二进制码的方法和计算机系统 |
CN103810117A (zh) * | 2013-12-24 | 2014-05-21 | 苏州国芯科技有限公司 | 处理器用指令存储系统 |
CN103810122A (zh) * | 2013-12-24 | 2014-05-21 | 苏州国芯科技有限公司 | 用于嵌入式系统的高速缓存器 |
CN103810116A (zh) * | 2013-12-24 | 2014-05-21 | 苏州国芯科技有限公司 | 用于嵌入式系统的指令存储装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI298834B (en) * | 2006-02-14 | 2008-07-11 | Neotec Semiconductor Ltd | Battery management system |
CN101059958B (zh) * | 2007-03-15 | 2010-12-15 | 上海交通大学 | 利用缓存来加快量化数据取得的编码和解码方法 |
US9258015B2 (en) * | 2013-12-23 | 2016-02-09 | Apple Inc. | Decoder with selective iteration scheduling |
CN105938447B (zh) * | 2015-03-06 | 2018-12-14 | 华为技术有限公司 | 数据备份装置及方法 |
US10389388B2 (en) | 2017-12-28 | 2019-08-20 | Apple Inc. | Efficient LDPC decoding with predefined iteration-dependent scheduling scheme |
CN109101276B (zh) * | 2018-08-14 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 在cpu中执行指令的方法 |
GB2577738B (en) * | 2018-10-05 | 2021-02-24 | Advanced Risc Mach Ltd | An apparatus and method for providing decoded instructions |
US12052033B2 (en) | 2022-07-13 | 2024-07-30 | Apple Inc. | Scheduling of iterative decoding depending on soft inputs |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63172343A (ja) * | 1987-01-12 | 1988-07-16 | Hitachi Ltd | 命令先取り方式 |
US5226138A (en) * | 1990-11-27 | 1993-07-06 | Sun Microsystems, Inc. | Method for selectively transferring data instructions to a cache memory |
JPH06222984A (ja) * | 1993-01-22 | 1994-08-12 | Mitsubishi Electric Corp | 読み出し専用メモリ |
JPH07105092A (ja) * | 1993-09-30 | 1995-04-21 | Sharp Corp | 記憶装置 |
US5485609A (en) | 1994-05-20 | 1996-01-16 | Brown University Research Foundation | Online background predictors and prefetchers for locality management |
US5901302A (en) * | 1995-01-25 | 1999-05-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions |
JPH08286914A (ja) * | 1995-04-07 | 1996-11-01 | Nec Corp | メモリ制御装置 |
JPH0922353A (ja) * | 1995-07-05 | 1997-01-21 | Toshiba Corp | 1チップ・マイクロコンピュータおよびその命令コード格納方法 |
US5915262A (en) | 1996-07-22 | 1999-06-22 | Advanced Micro Devices, Inc. | Cache system and method using tagged cache lines for matching cache strategy to I/O application |
US5870576A (en) * | 1996-12-16 | 1999-02-09 | Hewlett-Packard Company | Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures |
JP3781224B2 (ja) * | 1997-03-19 | 2006-05-31 | 株式会社ルネサステクノロジ | 半導体装置 |
US6199154B1 (en) * | 1997-11-17 | 2001-03-06 | Advanced Micro Devices, Inc. | Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access |
US6237083B1 (en) * | 1998-02-13 | 2001-05-22 | Advanced Micro Devices, Inc. | Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence |
US6256727B1 (en) * | 1998-05-12 | 2001-07-03 | International Business Machines Corporation | Method and system for fetching noncontiguous instructions in a single clock cycle |
US6128094A (en) * | 1998-07-08 | 2000-10-03 | Hewlett-Packard Company | Printer having processor with instruction cache and compressed program store |
-
2000
- 2000-06-29 US US09/607,564 patent/US6647462B1/en not_active Expired - Fee Related
-
2001
- 2001-06-29 CN CNB018100597A patent/CN1264097C/zh not_active Expired - Fee Related
- 2001-06-29 WO PCT/IB2001/001167 patent/WO2002001367A1/en active Application Filing
- 2001-06-29 JP JP2002506436A patent/JP4748918B2/ja not_active Expired - Fee Related
- 2001-06-29 EP EP01940931A patent/EP1299807A1/en not_active Withdrawn
- 2001-06-29 KR KR1020027017871A patent/KR100871575B1/ko not_active IP Right Cessation
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101336428B (zh) * | 2006-01-26 | 2010-09-08 | 微软公司 | 分析二进制码的方法和计算机系统 |
CN103810117A (zh) * | 2013-12-24 | 2014-05-21 | 苏州国芯科技有限公司 | 处理器用指令存储系统 |
CN103810122A (zh) * | 2013-12-24 | 2014-05-21 | 苏州国芯科技有限公司 | 用于嵌入式系统的高速缓存器 |
CN103810116A (zh) * | 2013-12-24 | 2014-05-21 | 苏州国芯科技有限公司 | 用于嵌入式系统的指令存储装置 |
CN103810122B (zh) * | 2013-12-24 | 2017-03-22 | 苏州国芯科技有限公司 | 用于嵌入式系统的高速缓存器 |
CN103810117B (zh) * | 2013-12-24 | 2017-03-22 | 苏州国芯科技有限公司 | 处理器用指令存储系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2002001367A1 (en) | 2002-01-03 |
KR100871575B1 (ko) | 2008-12-02 |
JP2004502238A (ja) | 2004-01-22 |
KR20030016314A (ko) | 2003-02-26 |
CN1264097C (zh) | 2006-07-12 |
US6647462B1 (en) | 2003-11-11 |
EP1299807A1 (en) | 2003-04-09 |
JP4748918B2 (ja) | 2011-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2117388C1 (ru) | Способ и устройство кодирования и декодирования данных | |
US5150430A (en) | Lossless data compression circuit and method | |
US5329405A (en) | Associative cam apparatus and method for variable length string matching | |
US5440753A (en) | Variable length string matcher | |
US6819271B2 (en) | Parallel compression and decompression system and method having multiple parallel compression and decompression engines | |
JP2713369B2 (ja) | データ圧縮装置及び方法 | |
US5293164A (en) | Data compression with pipeline processor having separate memories | |
US6885319B2 (en) | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms | |
US7436330B2 (en) | High-speed data compression based on set associative cache mapping techniques | |
US6334123B1 (en) | Index relational processor | |
CN1264097C (zh) | 用于存储和提供解码信息的带高速缓存器的装置及其方法 | |
US5499382A (en) | Circuit and method of bit-packing and bit-unpacking using a barrel shifter | |
US5113516A (en) | Data repacker having controlled feedback shifters and registers for changing data format | |
US5857035A (en) | Arithmetic coding compressor for encoding multiple bit values | |
US20060106870A1 (en) | Data compression using a nested hierarchy of fixed phrase length dictionaries | |
CN109218822B (zh) | 一种视频处理系统 | |
JP2007519100A (ja) | コンピューターシステム、方法、装置 | |
US6535150B1 (en) | Method and apparatus for implementing run-length compression | |
US6442680B1 (en) | Method and system for compressing reduced instruction set computer (RISC) executable code | |
US7075462B2 (en) | Speeding up variable length code decoding on general purpose processors | |
CN100346293C (zh) | 用于环路压缩的跟踪缓冲器、方法和流水线处理器 | |
US5745603A (en) | Two dimensional context model obtained without a line buffer for arithmetic coding | |
US8378861B2 (en) | Storage of probability values for contexts used in arithmetic coding | |
EP0411691A2 (en) | Memory architecture and circuit for hashing | |
WO2001018742A2 (en) | Index relational processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: FREESCALE SEMICONDUCTOR INC. Free format text: FORMER OWNER: MOTOROLA, INC. Effective date: 20050107 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20050107 Address after: texas Applicant after: Fisical Semiconductor Inc. Address before: Illinois Applicant before: Motorola Inc. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060712 Termination date: 20140629 |
|
EXPY | Termination of patent right or utility model |