CN100346293C - 用于环路压缩的跟踪缓冲器、方法和流水线处理器 - Google Patents

用于环路压缩的跟踪缓冲器、方法和流水线处理器 Download PDF

Info

Publication number
CN100346293C
CN100346293C CNB01816465XA CN01816465A CN100346293C CN 100346293 C CN100346293 C CN 100346293C CN B01816465X A CNB01816465X A CN B01816465XA CN 01816465 A CN01816465 A CN 01816465A CN 100346293 C CN100346293 C CN 100346293C
Authority
CN
China
Prior art keywords
address
register
registers
terminating
new
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
Application number
CNB01816465XA
Other languages
English (en)
Other versions
CN1541356A (zh
Inventor
R·P·辛格
C·P·洛斯
G·A·奥弗坎普
Original Assignee
Analog Devices Inc
Intel 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 Analog Devices Inc, Intel Corp filed Critical Analog Devices Inc
Publication of CN1541356A publication Critical patent/CN1541356A/zh
Application granted granted Critical
Publication of CN100346293C publication Critical patent/CN100346293C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Abstract

在一个实施例中,用于流水线处理器(DSP)的跟踪缓冲器电路可以包括在写操作时按先-进先-出(FIFO)寄存器操作和在读操作时按后进-先出(LIFO)操作的一连串互联寄存器。在写操作时,转移目标/源地址对可以写入跟踪缓冲器寄存器的第一对,并且每个寄存器的内容可以向上游移位一个寄存器。跟踪缓冲器还可以包括使用硬件和软件环对程序流压缩的结构。有效位可以分配给跟踪缓冲器中的每个指令地址并具有并行结构的有效位缓冲器,跟踪缓冲器可以提供有效位的跟踪。

Description

用于环路压缩的跟踪缓冲器、方法和流水线处理器
技术领域
本发明涉及流水线处理器,更具体地涉及用于流水线处理器的跟踪缓冲器。
背景技术
数字信号处理与以数字形式的信号表示和利用数字计算的这种信号的变换或处理有关。数字信号处理广泛地应用在诸如无线通信、组网、和多媒体之类的当前的高技术领域。数字信号处理技术流行的一个原因是已开发了低成本、强大的数字信号处理器(DSP),这些处理器便宜和有效地提供实现这些产品的可靠计算能力。因为首先DSP的发展,DSP结构和设计已包含即使复杂的视频速率序列的实时处理也能执行的观点。
DSP经常用于诸如数字视频、成像、和音频之类的各种多媒体应用。DSP可以控制数字信号的产生和打开多媒体文件。
MPEG-1(运动图象专家组)、MPEG-2、MPEG-4和H.263是一些数字视频压缩标准和文件格式。这些标准利用存储从一帧到另一帧的主要变化实现数字视频信号的高压缩率。然后视频信息可以利用多种不同技术进一步压缩。
在压缩期间DSP可以用于对视频信息执行各种操作。这些操作可以包括运动搜索和空间内插算法。首要目的是测量相邻帧内的各块之间的失真。这些操作要进行高强度的计算并要求高数据吞吐量。
MPEG标准族正在发展为跟上多媒体应用和文件的带宽增长要求。每个标准的新的版本提供更复杂的算法,这些算法在DSP上产生适应所用MPEG视频处理设备的更快的处理要求。
视频处理器设备的制造商经常靠定制的特殊应用集成电路(ASIC)用于在MPEG和H.263标准下的视频编码。但与通用DSP比较ASIC在设计上复杂、使产品昂贵、并且在其应用上缺少灵活性。
附图说明
当阅读了参照附图进行的下面的详细描述后,本发明的这些和其他的特点和优点将变得更加清楚。
图1是按照一个实施例的利用处理器的移动视频装置的框图;
图2是按照一个实施例的信号处理系统的框图;
图3是按照一个实施例的另外一种信号处理系统的框图;
图4表示按照一个实施例的图1中的处理器示例性流水线级;
图5是按照一个实施例的跟踪缓冲器的框图;
图6是按照一个实施例的在图5中的跟踪缓冲器的压缩操作的流程图;
图7是按照一个实施例的图5中的跟踪缓冲器的有效位缓冲器的框图。
具体实施方式
图1表示按照一个实施例的包括跟踪缓冲器102的移动视频装置100。移动视频装置100可以是显示从天线105接收的编码视频信号或来自数字视频存储介质,例如数字视盘(DVD)或者存储卡的视频图象的手持装置。处理器110与可以存储用于处理操作的指令和数据的高速缓冲存储器115通信。处理器110可以是微处理器、数字信号处理器(DSP)、控制从DSP的微处理器。对于这种应用的目的,在下面处理器110将称为DSP 110。
DSP 110可以对编码视频信号执行各种操作,包括例如模-数变换、解调、滤波、数据恢复、和解码。DSP 110可以根据诸如MPEG族和H.263标准之类的各种数字视频信号压缩标准之一解码压缩的数字视频信号。然后,解码的视频信号可以输入到显示驱动器130,在显示器125上产生视频图象。
手持装置一般具有有限的电源。另外,视频解码操作是高强度的计算。因此,用在这种装置中的处理器有利地的相对高速度、低功耗的装置。
DSP 110可以具有深度流水线、负载/存储结构。通过使用流水线,DSP的性能可以比非流水线DSP增强。代替取第一指令、执行第一指令、并然后取第二指令,流水线DSP 110可以在执行第一指令的同时取第二指令,从而改善指令的吞吐量。另外,流水线DSP的时钟周期可以短于非流水线DSP,其中指令的取出和执行是在相同的时钟周期中。
这种DSP 110是为用于视频摄象机、电视会议、PC视频卡、和高清晰度电视(HDTV)设计的。另外,DSP 110还是用于与其他利用数字信号处理器的技术相关连而设计的,例如用在移动电话、语音识别、和其他应用。
图2表示包括按照所示的一个实施例的DSP 110的信号处理系统200的框图。可以由例如天线105的外部源提供一个或多个模拟信号到信号校正器202。信号校正器202被安排为对模拟信号执行某些预处理功能。示例性的预处理功能可以包括将若干个模拟信号混合在一起、滤波、放大等。
模-数变换器(ADC)204可以耦合接收来自信号校正器202的经处理的模拟信号并且可以变换经处理的模拟信号为由各个样值形成的数字信号,如上所述。根据由信号校正器202接收的模拟信号的特性确定的取样速率提取各样值。当接收数字信号时DSP 110可以执行希望的信号变换,产生一个或多个输出数字信号。数-模变换器(DAC)206可以耦合从DSP 110接收数字信号。DAC 206变换输出数字信号为输出模拟信号。输出模拟信号然后可以被传送到另外的信号校正器208。当输出模拟信号时信号校正器208可以执行后处理功能。示例性后处理功能类似于上述的预处理功能。这些装置的任何合适的配置可以耦合到具有DSP110的信号处理系统200。
图3表示按照另外实施例的信号处理系统300。在这个实施例中,数字接收机302可以被安排为接收一个或多个数字信号并传送接收的数字信号到DSP 110。如图2所示的实施例,当接收数字信号时DSP 110执行希望的信号变换,产生一个或多个输出数字信号。数字信号发送机可以耦合接收输出数字信号。在一个示例性应用中,信号处理系统300是数字音频装置,其中数字接收机302传送信号到DSP 110,数字指示存储在数字存储装置120中的数据。然后DSP 110可以处理数字信号并传送产生的输出数字信号到数字发送机304。数字发送机304然后可以产生要发送到显示驱动器130的输出数字信号的各个值,在显示器125上产生视频图像。
如图4所示的流水线可以包括8级,这些级可以包括指令取出402-403、解码404、地址计算405、执行406-408、和写回409级。指令i可以在一个时钟周期取出并然后在流水线中与取出新的指令例如i+1和i+2同时按连续时钟周期进行操作和执行。
流水线可能引入附加协调问题并且冒处理器性能的风险。在程序流中转移可能在流水线中产生空隙,或“气泡”。产生提取、除外、或产生中断的有条件分支的状态可以改变指令流的序列。在这种情况发生后,新的指令必须从连续程序流的外部取出,使得流水线中的其余指令不相关。可以使用流水线中的诸如数据转发、动态转移预测、和有效位与指令地址的方法处理这些复杂性问题。
跟踪缓冲器可以存储处理器的程序计数器(程序流)信息。跟踪缓冲器可以用作调试工具,在执行期间重建采取的程序路径。当执行程序时,某些指令可能产生无法预料的事件。这种无法预料的事件可能引起程序流的中断。这些事件包括,例如根据一个结果的动态分支或由系统中的其他装置触发中断。从静态分析码预测这些事件可能是困难的。当执行码和进行触发时,在跟踪缓冲器执行的各个指令(跟踪数据)的记录可以用于确定何时出现这种不希望事件。
跟踪缓冲器150(图1)可以通过写总线152连接到DSP 110。跟踪缓冲器150可以在串行互联寄存器中存储取指令的地址。存储的地址可以从跟踪缓冲器150中读到读总线156的跟踪存储器154。跟踪存储器154可以是DSP内部的或外部的。
图5表示按照一个实施例的跟踪缓冲器500的结构。跟踪缓冲器500可以在一连串的32个32位跟踪缓冲器寄存器中存储指定为tbuf.0到tbuf.31的32位指令地址,每个具有一个相连的输入复用器505。按照一个实施例,跟踪缓冲器150可以有64位写总线152(图1)和32位读总线156。
除非发生事件诸如发生分支或中断,使程序计数器(pc)转移到码的另外的位置外,均顺序地执行程序码。因为这种转移事件之间的码是连续的,可以从转移事件的记录重建程序流。为了减少对跟踪缓冲器要求的存储及其操作速度,跟踪缓冲器可以仅存储引起程序转移或中断的指令的地址,即转移指令、除外、中断、和转移目标的地址。
转移可以是在程序流中的公共转移事件。每个转移可以利用一对地址进行识别,转移目标地址和转移源地址。转移目标地址可以是转移指令集中的第一指令地址,并且转移源地址可以是产生程序流中断的指令或者最后完成的指令的地址。
跟踪缓冲器150在写操作中可以按先进-先出(FIFO)寄存器操作。对于转移而言转移目标地址和转移源地址可以在64位写总线152作为64位字同时写入跟踪缓冲器。转移目标地址可以存储在连接到tbuf.0的指定为pc.com的寄存器510,并且转移源地址可以存储在连接到tbuf.1的指定为pc.hold的寄存器510。当在pc.com的寄存器510中的转移目标地址被写到tbuf.0时,即使有,当前存储在tbuf.0的转移目标地址可以按写路径514被移位到tbuf.2。同样,当在pc.hold的寄存器512中的转移目标地址被写到tbuf.1时,即使有,当前存储在tbuf.1的转移源地址可以按写路径516被移位到tbuf.3。在接下的写操作中,在tbuf.0中的转移目标地址可以被移位到tbuf.2和在tbuf.2中的转移目标地址可以被移位到tbuf.4。同样的移位发生在tbuf.1中的转移源地址移位到tbuf.3,和tbuf.3中的转移源地址移位到tbuf.5。同样的移位可以发生在其他跟踪缓冲器寄存器中,即,在跟踪缓冲器寄存器中的每个指令地址每个写周期可以向下游移位2个寄存器。
对于读操作跟踪缓冲器可以按后进-先出(LIFO)寄存器进行操作。因为读总线156是32位宽度,可以不按对地个别读出32位转移目标地址和转移源地址。当读出tbuf.0中的地址时,tbuf.1中的地址可以按读路径520被左移(上游)到tbuf.0。同样,在其他跟踪缓冲器寄存器中的地址也向上游移位一个寄存器。同样的移位可以发生在其他跟踪缓冲器寄存器中,即,每个时钟周期跟踪缓冲器中的每个指令地址向上游移位一个寄存器。
当跟踪缓冲器150全满时,即,填充tbuf.30和tbuf.31,跟踪缓冲器可以触发一个全除外的跟踪缓冲器。除外可以发送到一个除外处理器,该处理器可以确定要除外的跟踪缓冲器并对跟踪缓冲器的空置内容初始化为跟踪存储器154的读出操作。除外处理器在读出跟踪缓冲器150的同时还可以中止程序流,防止跟踪信息的丢失。跟踪缓冲器可以按存储器映射读出(MMR)操作进行读出,其中tbuf.0的每个读出地址被存储在存储器的对跟踪缓冲器150的内容特别分配的一个区域。
按照另外的实施例,当跟踪缓冲器150充满时,跟踪缓冲器可以不触发全除外的跟踪缓冲器。而是,按FIFO寄存器进行操作的跟踪缓冲器150可以取消跟踪缓冲器底部的地址,即,这些地址可以移出tbuf.30和tbuf.31。
为了进一步保存跟踪缓冲器资源,并因此改善性能水平和跟踪缓冲器150可以操作的速度,可以提供跟踪码压缩的结构。程序流可以包括可能迅速充满跟踪缓冲器的软件和硬件环,增加读出操作的频率,并因此减慢跟踪集合。虽然n-周期的环路中,进行存储的转移目标/源地址对被重复n次并因此可以不提供关于程序流的重要信息。从而,对压缩重复的目标/源地址对是希望的。
跟踪缓冲器150能够导致一次压缩的级和两次压缩的级,其中一次压缩的级可以由任何环进行触发,和两次压缩的级可以由含有嵌套的内部环路进行触发。图6表示描述包括一次压缩和两次压缩操作600的流程图。如下的描述仅为实现操作600的一个实施例。在其他实施例中,描述可以跳过或按不同的方式执行。
当提出新的转移目标时,转移目标/源地址对可以分别存储在pc.com和pc.hold寄存器中,并且操作600可以返回状态602。如果在pc.com和pc.hold寄存器中的地址对是新的地址对,在状态604可以比较tbuf.0和tbuf.1中存储的地址对与一个比较器550级。
按照一个实施例,指令地址可以具有16位边界。因此,指令地址的最低有效位(LSB)可以是(0),并因此提供无用信息。因此,在新地址对与含在tbuf.0和tbuf.1中存储的地址对之间的比较中,不考虑指令地址的LSB。
按照一个实施例,在tbuf.0中的转移目标地址的LSB可以用于指示一次压缩级。如果地址对匹配,在状态606在tbuf.0和tbuf.1中存储的地址对可以通过设置一般为零(0)的tbuf.0中的转移目标地址LSB为一(1)进行压缩。在这种情况下,新的地址对不写入跟踪缓冲器。
如果在状态608二级压缩被确定为不能,并新的和存储的地址对不匹配,则在状态610新的地址对可以写入tbuf.0和tbuf.1。
如果在状态608二级压缩被确定为能,并新的和存储的地址对不匹配,则在状态612在pc.com和pc.hold寄存器的新地址对可以通过两个比较器552级与存储在tbuf.2和tbuf.3的地址对进行比较。如果新地址对和存储在tbuf.2和tbuf.3的地址对匹配,在状态614,tbuf.3中的转移源地址的LSB可以设置为一(1)。在这种情况下,新的地址对不写入跟踪缓冲器。
如果新的地址对和存储在tbuf.2和tbuf.3的地址对不匹配,在状态610新的地址对可以写入跟踪缓冲器。
例1表示一个一次压缩操作级的示例。
  指令地址   指令
  0x2000   I1
  0x2002   I2
  0x2006   I3
  0x2008   I4
  0x200a   如果环未满转移到I2
  0x200c   I5
例1中的程序流包括一个递归环,该环包含在指令地址0x200a到在指令地址0x2002的指令I2的转移(转移源地址),直至环期满为止。一旦环期满,PC则离开该环到指令地址0x200c的指令I5。
在该环的第一迭代后,tbuf.0含有指令地址0x2002(转移目标地址)和tbuf.1含有指令地址0x200a(转移源地址)。在该环的第二迭代中,一个比较器550级比较新的目标/源地址对(0x2002、0x200a)与在tbuf.0和tbuf.1存储的地址对,忽略各地址的LSB。因为新的和存储的地址对匹配,新的地址对不写入tbuf.0和tbuf.1并且tbuf.0中的转移目标地址的LSB被设置为一(1)。转移目标地址的LSB的设置从0x2002到0x200a改变其值。
在该环的第三迭代中,一个比较器550级比较新的地址对(0x2002、0x200a)与在tbuf.0和tbuf.1存储的地址对,忽略各地址的LSB。因为地址对匹配,在pc.com和pc.hold寄存器中的新的地址对不写入tbuf.0和tbuf.1,并且tbuf.0和tbuf.1的地址对仍然为(0x2003、0x200a)。
例2表示两次压缩操作级的例子。
  指令地址   指令
  0x2000   I1
  0x2002   I2
  0x2006   I3
  0x2008   如果环未满转移到I2
  0x200a   I4
  0x200c   I5
  0x2010   如果环未满转移到I2
  0x2014   I6
例2的程序流包括一个递归外环,该环包含在指令地址0x2010向在指令地址0x2000的指令I1的转移,并且包括一个内环,该环包含在指令地址0x2008向在指令地址0x2002的指令I2的转移。
42.在内环的第一迭代后,tbuf.0含有指令地址0x2002(转移目标地址)和tbuf.1含有指令地址0x200a(转移源地址)。在内环的第二迭代中,如上参照例1所述产生一次压缩级并且在tbuf.0中的转移目标地址,即,0x2002被设置为0x2003。
一旦内环期满,PC离开该环到在指令地址0x200a的指令I4,直至迂到在指令地址0x2010的转移指令返回到指令I1。在外环的第一迭代中,外环的转移目标地址,即0x2000,被写入tbuf.0,外环的转移源地址,即0x2010,被写入tbuf.1,并且tbuf.0和tbuf.1中的地址对(0x2003、0x2008)被移位到tbuf.2和tbuf.3。在外环的第二迭代中迂到内环的第二时间,发生二级压缩。在状态604(图6)一次比较器550级比较新的地址与存储在tbuf.0和tbuf.1(0x2000、0x2010)中的地址对。因为这些对不匹配,在状态612,两个比较器552级比较新的地址对(0x2002、0x2008)与存储在tbuf.0和tbuf.1(0x2003、0x2008)中的地址对,忽略LSB。一切这些地址对匹配,新的地址对不写入tbuf.0和tbuf.1。二级压缩是通过设置tbuf.3中的源地址的LSB从零(0)到(1)指示的地址,改变存储的指令地址值从0x2008到0x2009。
在外环第二迭代中,一次压缩级发生在外环。一个比较器550的级比较新的地址对(0x2000、0x2010)与存储在tbuf.0和tbuf.1(0x2000、0x2010)的地址对,忽略各地址的LSB。因为新的和存储的地址对匹配,新的地址对不写入tbuf.0和tbuf.1,并且在tbuf.0中的目标地址LSB被从零(0)设置为一(1),从0x2000到0x2001改变存储的指令地址值。
当电源关闭后DSP 110重开,即电源导通重新设置时,跟踪缓冲器150可能仍含有DSP 110关机前正在执行的程序流的无效指令地址。按照一个实施例,在跟踪缓冲器中的每个指令地址具有一个相关的1-位有效位。有效位分别利用HIGH或LOW值指示在跟踪缓冲器150中的指令地址对于当前程序流是有效还是无效。如果指令地址是无效的,在读操作中它可以不写入跟踪存储器154。
图7表示有效位缓冲器700,它可以跟踪跟踪缓冲器150中与指令地址相关的有效位。有效位缓冲器700可能具有跟踪缓冲器150的并行结构,跟踪缓冲器150包括指定给每个与输入MUX 705相连的vbuf.0和vbuf.31的32个1位触发器(FF)。每个有效位缓冲器的输入MUX 705可以包括一个复位门710。在电源导通复位的情况下,在每个有效位缓冲器FF中的有效位可以设置为零(0),指示在跟踪缓冲器150中的对应的指令地址无效。
有效位缓冲器的操作还可以并行于跟踪缓冲器的操作。在写操作的情况下,对应于在pc.com寄存器中的转移目标地址的有效位可以从FF 713转移到vbuf.1。类似跟踪缓冲器150,在写操作情况下有效位可以沿写路径714移位两个FF,并且在读操作情况下沿读路径716移位一个FF。对于vbuf.0的每个有效位读出,具有LOW值的1位有效位可以利用有效位发生器720写入vbuf.31,代替移位到vbuf.30。
按照各种实施例的跟踪缓冲器可以有益地产生精确的除外,同时捕获程序流中的所有变化。另外,跟踪缓冲器的FIFO/LIFO组织可以要求比仅FIFO或者仅LIFO结构少的复用,因此减少芯片上跟踪缓冲器150的空间和功耗要求。
已经描述了本发明的一些实施例。但是,应理解为在不超出本发明的精神和范围的情况下可以作出各种修改。例如,虽然描述了具有32位宽度的指令地址,但是例如16位或64位宽度的指令地址利用相应规模的跟踪缓冲器寄存器和读/写总线的跟踪缓冲器也可以进行跟踪。从而,其他各实施例都在如下权利要求书的范围内。

Claims (23)

1.一种跟踪缓冲器电路,包括:
多个互联的寄存器,包括用于在跟踪操作期间输入和输出取出指令的地址的第一终端寄存器、和第二终端寄存器、和连接在所述第一终端寄存器和所述第二终端寄存器之间的多个中间寄存器,多个互连的寄存器具有一个读路径和一个写路径,所述写路径在写操作情况下将所述多个互联的寄存器之一中的指令地址向第二终端寄存器移位两个寄存器,所述读路径在读操作情况下将指令地址向第一终端寄存器移位一个寄存器;
第一保持寄存器;
第二保持寄存器;
第一比较器,比较第一保持寄存器中对应于环路的新转移目标地址与第一终端寄存器中存储的转移目标地址;
第二比较器,比较第二保持寄存器中对应于环路的新转移源地址与第一邻近寄存器中存储的转移源地址,所述第一邻近寄存器连接到读路径上的第一终端寄存器;和
压缩指示电路,响应于新转移目标地址匹配于存储的转移目标地址和新转移源地址匹配于存储的转移源地址而产生压缩指示符。
2.权利要求1的电路,其中,跟踪缓冲器在写操作情况下按先-进先出寄存器操作和在读操作情况下按后进-先出寄存器操作。
3.权利要求1的电路,其中,指令地址包括32位字。
4.权利要求3的电路,其中,第一和第二终端寄存器和多个互联寄存器的每个包括32位字。
5.权利要求4的电路,其中多个互联寄存器包括32个寄存器。
6.权利要求4的电路,还包括:
64位写总线,在写操作情况下写64位地址对到第一和第二终端寄存器和一个邻近寄存器;和
32位读总线,在读操作情况下从第一终端寄存器读32位指令地址。
7.权利要求1的电路,其中压缩指示电路响应于新转移目标地址匹配于存储的转移目标地址和新转移源地址匹配于存储的转移源地址,进行操作设置存储的转移目标地址的最低有效位。
8.权利要求1的电路,还包括:
在所述多个寄存器中的第二邻近寄存器,所述第二邻近寄存器在读路径中连接到第一邻近寄存器;
在所述多个寄存器中的第三邻近寄存器,所述第三邻近寄存器在读路径中连接到第二邻近寄存器;
第三比较器,比较第一保持寄存器中的新转移目标地址与第二邻近寄存器中的第二存储转移目标地址;和
第四比较器,比较第二保持寄存器中的新转移源地址与第三邻近寄存器中的第二存储转移源地址;
其中,压缩指示电路响应于新转移目标地址匹配于第二邻近寄存器中的第二存储转移目标地址和新转移源地址匹配于第三邻近寄存器中的第二存储转移源地址,进行操作产生压缩指示符。
9.权利要求8的电路,其中,压缩指示电路响应于新转移目标地址匹配于在第二邻近寄存器中存储的转移目标地址和新转移源地址匹配于在第三邻近寄存器中存储的转移源地址,进行操作设置在第三邻近寄存器存储的转移源地址的最低有效位。
10.权利要求1的电路,还包括有效位缓冲器,包括:
第一终端触发器,从有效位缓冲器输入和输出有效位;
第二终端触发器;
连接在所述第一终端触发器和所述第二终端触发器之间的多个互联触发器;
一个写路径,在写操作情况下将多个互联触发器之一中的一个有效位向下游触发器移位两个触发器;和
一个读路径,在读操作情况下将该有效位向上游触发器移位一个触发器。
11.一种流水线处理器,包括:
一个跟踪缓冲器电路,包括:
多个互联的寄存器,包括用于在跟踪操作期间输入和输出取出指令的地址的第一终端寄存器,第二终端寄存器,和连接在所述第一终端寄存器和第二终端寄存器之间的多个中间寄存器;
一个写路径,在写操作情况下将所述多个互联的寄存器之一中的指令地址向第二终端寄存器移位两个寄存器;和
一个读路径,在读操作情况下将该指令地址向第一终端寄存器移位一个寄存器。
12.权利要求11的处理器,其中,在写操作情况下跟踪缓冲器按先-进先出寄存器操作和在读操作情况下按后进-先出寄存器操作。
13.权利要求11的处理器,其中,指令地址包括32位字。
14.权利要求13的处理器,其中,每个第一和第二终端寄存器和多个互联寄存器的每个包括32位寄存器。
15.权利要求14的处理器,还包括:
64位写总线,在写操作情况下写64位地址对到第一终端寄存器和一个邻近寄存器;和
32位读总线,在读操作情况下从第一终端寄存器读32位指令地址。
16.一种方法,包括:
执行跟踪操作,包括在跟踪缓冲器中存储对应于取出指令中环路的地址对;和
执行压缩操作,包括:
比较存储的地址对与取出指令中的新地址对,和
响应于新地址对匹配于存储的地址对,设置在存储的地址对中的地址的最低有效位。
17.权利要求16的方法,还包括:响应于新地址对匹配于存储的地址对,忽略新地址对。
18.权利要求16的方法,还包括:在第一对寄存器中存储存储的地址对;和
比较新地址对与存储的地址对。
19.权利要求18的方法,还包括:
响应于新地址对不匹配于存储的对,写新地址对到第一对寄存器。
20.权利要求18的方法,还包括:
比较新地址对与在邻近第一寄存器对的第二对寄存器中的第二存储地址对;
响应于新地址对匹配于第二存储对,设置在第二存储地址对中的地址的最低有效位;和
响应于新地址对不匹配于第二存储对,写新地址对到第一对寄存器。
21.权利要求20的方法,还包括:
响应于新地址对匹配于第二存储地址对,忽略新地址对。
22.权利要求17的方法,其中,地址对中的所述地址包括转移目标地址。
23.权利要求21的方法,其中,第二地址对中的所述地址包括转移源地址。
CNB01816465XA 2000-09-29 2001-09-26 用于环路压缩的跟踪缓冲器、方法和流水线处理器 Expired - Fee Related CN100346293C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/675,569 US7155570B1 (en) 2000-09-29 2000-09-29 FIFO write/LIFO read trace buffer with software and hardware loop compression
US09/675,569 2000-09-29
PCT/US2001/042367 WO2002027483A2 (en) 2000-09-29 2001-09-26 Trace buffer for loop compression

Publications (2)

Publication Number Publication Date
CN1541356A CN1541356A (zh) 2004-10-27
CN100346293C true CN100346293C (zh) 2007-10-31

Family

ID=24711058

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB01816465XA Expired - Fee Related CN100346293C (zh) 2000-09-29 2001-09-26 用于环路压缩的跟踪缓冲器、方法和流水线处理器

Country Status (6)

Country Link
US (1) US7155570B1 (zh)
JP (1) JP3818965B2 (zh)
KR (1) KR100509009B1 (zh)
CN (1) CN100346293C (zh)
TW (1) TWI249129B (zh)
WO (1) WO2002027483A2 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0403128D0 (sv) * 2004-12-22 2004-12-22 Xelerated Ab A method for a processor, and a processor
FR2882832A1 (fr) * 2005-03-04 2006-09-08 St Microelectronics Sa Dispositif de generation de suivi de branchement pour microprocesseur et microprocesseur dote d'un tel dispositif
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
KR100847727B1 (ko) * 2007-01-22 2008-07-23 삼성전자주식회사 실시간 패킷 수신을 위한 장치 및 방법
US8473946B2 (en) * 2008-07-03 2013-06-25 Vmware, Inc. Efficient recording and replaying of non-deterministic instructions in a virtual machine and CPU therefor
US9524227B2 (en) * 2014-07-09 2016-12-20 Intel Corporation Apparatuses and methods for generating a suppressed address trace
US10175912B1 (en) 2017-07-05 2019-01-08 Google Llc Hardware double buffering using a special purpose computational unit

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3975717A (en) * 1974-09-09 1976-08-17 Burroughs Corporation Charge coupled device stack memory organization and refresh method
US5161217A (en) * 1986-10-14 1992-11-03 Bull Hn Information Systems Inc. Buffered address stack register with parallel input registers and overflow protection

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS50120529A (zh) 1974-03-08 1975-09-20
JPS58103047A (ja) 1981-12-16 1983-06-18 Hitachi Ltd 命令トレ−ス装置
JPH0272440A (ja) 1988-09-07 1990-03-12 Nec Corp プログラム実行ステップ観測方式
JPH0748183B2 (ja) 1989-09-28 1995-05-24 横河電機株式会社 トレース回路
JPH05134848A (ja) * 1991-03-06 1993-06-01 Fujitsu Ltd 中央処理装置のデータシフト回路
JPH05100900A (ja) 1991-10-09 1993-04-23 Nec Corp 情報処理装置
JPH05324396A (ja) 1992-05-19 1993-12-07 Fujitsu Ltd プログラム走行履歴記録方式
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
JPH11306044A (ja) 1998-04-22 1999-11-05 Hitachi Ltd データプロセッサ
EP1039386A1 (en) 1999-03-19 2000-09-27 Motorola, Inc. Computer system with trace unit, and method therefor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3975717A (en) * 1974-09-09 1976-08-17 Burroughs Corporation Charge coupled device stack memory organization and refresh method
US5161217A (en) * 1986-10-14 1992-11-03 Bull Hn Information Systems Inc. Buffered address stack register with parallel input registers and overflow protection

Also Published As

Publication number Publication date
WO2002027483A2 (en) 2002-04-04
KR100509009B1 (ko) 2005-08-18
TWI249129B (en) 2006-02-11
US7155570B1 (en) 2006-12-26
WO2002027483A3 (en) 2003-09-25
JP2004510248A (ja) 2004-04-02
CN1541356A (zh) 2004-10-27
KR20030036856A (ko) 2003-05-09
JP3818965B2 (ja) 2006-09-06

Similar Documents

Publication Publication Date Title
US6885319B2 (en) System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US6819271B2 (en) Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6829695B1 (en) Enhanced boolean processor with parallel input
US7804903B2 (en) Hardware-based CABAC decoder
US7129860B2 (en) System and method for performing scalable embedded parallel data decompression
US6334123B1 (en) Index relational processor
US7262722B1 (en) Hardware-based CABAC decoder with parallel binary arithmetic decoding
US7882284B2 (en) Compute unit with an internal bit FIFO circuit
US6798364B2 (en) Method and apparatus for variable length coding
CN100346293C (zh) 用于环路压缩的跟踪缓冲器、方法和流水线处理器
US6507877B1 (en) Asynchronous concurrent dual-stream FIFO
US20080122662A1 (en) Method and System for Providing Single Cycle Context Weight Update Leveraging Context Address Look Ahead
US6865668B1 (en) Variable-length, high-speed asynchronous decoder circuit
US6535150B1 (en) Method and apparatus for implementing run-length compression
CN111279617A (zh) 数据解压缩的装置与方法
US8817875B2 (en) Methods and systems to encode and decode sequences of images
CN1288551C (zh) 流水线处理器中的指令地址生成和跟踪
CN1430746A (zh) 用于存储和提供解码信息的带高速缓存器的装置及其方法
CN1219252C (zh) 支持可变长度指令执行的方法和设备
US7075462B2 (en) Speeding up variable length code decoding on general purpose processors
US6496602B2 (en) Sorting device of variable-length code
CN1543603A (zh) 基于指令宽度的高效仿真调度
CN1308827C (zh) 用于事件矢量表的超越的方法、处理器及装置
US20080028192A1 (en) Data processing apparatus, and data processing method
CN115695819A (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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20081226

Address before: California, USA

Patentee before: INTEL Corp.

Effective date of registration: 20081226

Address after: Massachusetts, USA

Patentee after: ANALOG DEVICES, Inc.

Address before: California, USA

Co-patentee before: ANALOG DEVICES, Inc.

ASS Succession or assignment of patent right

Owner name: ANALOG DEVICES, INC.

Free format text: FORMER OWNER: INTEL CORP

Effective date: 20081226

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20071031

Termination date: 20170926

CF01 Termination of patent right due to non-payment of annual fee