CN102089742A - 执行单元内的数据转发系统和方法 - Google Patents

执行单元内的数据转发系统和方法 Download PDF

Info

Publication number
CN102089742A
CN102089742A CN2009801064667A CN200980106466A CN102089742A CN 102089742 A CN102089742 A CN 102089742A CN 2009801064667 A CN2009801064667 A CN 2009801064667A CN 200980106466 A CN200980106466 A CN 200980106466A CN 102089742 A CN102089742 A CN 102089742A
Authority
CN
China
Prior art keywords
address
data
instruction
identifier
performance element
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.)
Pending
Application number
CN2009801064667A
Other languages
English (en)
Inventor
苏雷什·K·文库马汉提
卢奇安·科德雷斯库
王琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Priority to CN201310217180.4A priority Critical patent/CN103365627B/zh
Publication of CN102089742A publication Critical patent/CN102089742A/zh
Pending 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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 or 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 or look ahead
    • G06F9/3824Operand accessing
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

在一实施例中,揭示一种方法,所述方法包括在执行单元处的回写阶段期间将与来自第一指令的执行的待写入到寄存器堆的结果相关联的写入识别符与同具有多个执行单元的交错式多线程(IMT)处理器内的执行管线处的第二指令相关联的读取识别符比较。当所述写入识别符与所述读取识别符匹配时,所述方法进一步包括将所述结果存储在所述执行单元的本机存储器处以供所述执行单元在后续读取阶段中使用。

Description

执行单元内的数据转发系统和方法
技术领域
本发明大体上涉及执行单元内的数据转发系统及方法。
背景技术
在常规处理器中,指令的执行可能需要若干阶段。在程序序列内,依赖于数据的指令通常经分离以允许用于经由所述阶段中的每一者处理第一指令及用于在执行使用来自第一指令的结果的第二指令之前将结果写入到寄存器的时间。在此例子中,可使用若干不依赖于数据的指令来分离指令序列内的依赖于数据的指令,以允许用于产生结果且于在执行后续指令时需要所述结果之前存储所述结果的时间。通过使用不依赖于数据的指令来分离依赖于数据的指令,可通过允许处理器管线在或接近容量下操作而减少管线暂停(pipeline stall)。
现代编译器试图通过以无序方式执行指令来减少执行管线单元暂停。确切地说,将不依赖于数据的指令及/或准备好执行的指令放置在尚未准备好的指令(亦即,可为依赖于数据的指令,其中尚未根据另一执行指令确定所述数据)之前。通常,可使用编译器应用程序来辨别所述依赖于数据的指令,且可在程序序列内组织指令以通过在程序序列内将依赖于数据的指令与对应的数据产生指令间隔开来减少管线暂停。
发明内容
在特定实施例中,揭示一种方法,所述方法包括在执行单元处的同写阶段期间将与来自第一指令的执行的待写入到寄存器堆的结果相关联的写入识别符与同具有多个执行单元的交错式多线程(IMT)处理器内的执行管线处的第二指令相关联的读取识别符比较。当写入识别符与读取识别符匹配时,所述方法进一步包括将结果存储在执行单元的本机存储器处以用于由执行单元在后续读取阶段中使用。
在另一特定实施例中,揭示一种方法,所述方法包括根据与第一指令包相关联的第一地址确定与第二指令包相关联的第二地址。检查数据单元的加法器的进位位以确定是否确定第二地址跨越与多路高速缓冲存储器相关联的高速缓冲存储器线的边界。当不跨越边界时,存取多路高速缓冲存储器以使用根据先前标记阵列查找操作确定的与第一地址相关联的标记阵列数据及翻译旁视缓冲器(TLB)查找数据从第二地址检索数据。
在再一特定实施例中,揭示一种多线程处理器,所述多线程处理器包括具有用于存储一个或一个以上数据值的本机存储器的执行单元。所述执行单元进一步包括逻辑电路,所述逻辑电路适于确定与读取操作相关联的读取地址是否与同先前回写操作相关联的回写地址匹配。所述逻辑电路适于在读取地址与回写地址匹配时将所述一个或一个以上数据值存储在本机存储器处。
在又一特定实施例中,揭示一种处理器,所述处理器包括用于将与来自第一指令包的执行的待写入到寄存器堆的结果相关联的写入识别符与同具有多个执行单元的交错式多线程(IMT)处理器内的执行管线处的第二指令包相关联的读取识别符比较的装置。所述处理器进一步包括用于在写入识别符与读取识别符匹配时将结果选择性地本机存储在执行单元处以用于在执行第二指令包时使用的装置。
通过具有数据转发逻辑及本机存储器的处理器的实施例提供的一个特定优点在于:可本机存储来自第指令的执行的结果且在执行第二指令时使用所述结果,而不执行寄存器读取堆操作。可通过选择性地略过寄存器读取堆操作而减少寄存器堆电力消耗。
提供的另一特定优点在于:当第二指令的第二地址与同第一指令的第一地址相同的高速缓冲存储器线相关联时,可选择性地略过标记阵列查找操作。在此实例中,可略过针对第二地址的标记阵列查找操作,且可再用根据与第一地址相关联的先前查找操作确定的标记阵列信息。可通过选择性地略过标记阵列查找操作而减少总电力消耗。
提供的又一特定优点在于:相同逻辑电路可用于选择性地转发数据及选择性地略过标记阵列查找及TLB查找操作。另外,汇编器或编译器可用于排列指令包以产生用于转发数据(亦即,槽内转发)、用于再用标记阵列信息(亦即,略过标记阵列查找操作)及用于选择性地略过TLB查找操作的机会。所述数据的转发及标记查找及/或TLB查找操作的选择性略过可减少读取操作的总数目,从而减少总电力消耗。
本发明的其它方面、优点及特征将在审阅包括以下部分的整个申请案后变得显而易见:“附图说明”、“具体实施方式”及“权利要求书”。
附图说明
图1为包括适于转发数据的执行单元的系统的特定说明性实施例的框图;
图2为适于转发数据的执行单元的特定说明性实施例的框图;
图3为包括具有数据转发逻辑电路及标记阵列查找/翻译旁视缓冲器(TLB)查找略过逻辑电路的共享控制单元的系统的特定实施例的框图;
图4为包括适于选择性地转发数据且选择性地略过标记阵列查找及翻译旁视缓冲器(TLB)操作的可编程逻辑电路(PLC)的处理器的特定实施例的框图;
图5为执行管线内适于转发数据的过程的说明性实施例的时序图;
图6为执行管线内的转发逻辑电路的特定说明性实例的图;
图7为执行管线内适于略过标记阵列查找操作的过程的说明性实施例的时序图;
图8为适于选择性地转发数据且选择性地略过标记阵列查找或翻译旁视缓冲器(TLB)查找操作的系统的特定说明性实施例的框图;
图9为在执行单元内转发数据的方法的特定说明性实施例的流程图;
图10为选择性地略过标记阵列查找操作的方法的特定说明性实施例的流程图;
图11为选择性地略过标记阵列查找操作及/或翻译旁视缓冲器(TLB)查找操作的方法的特定说明性实施例的流程图;及
图12为包括具有转发逻辑电路及查找略过逻辑电路的执行单元的通信装置的特定说明性实施例的框图。
具体实施方式
图1为包括具有转发逻辑电路及本机存储器的至少一个执行单元的处理系统100的特定说明性实施例的框图。处理系统100包括适于经由总线接口104而与指令高速缓冲存储器106及数据高速缓冲存储器112通信的存储器102。指令高速缓冲存储器106通过总线110而耦合到序列器114。另外,序列器114适于接收可从中断寄存器接收的中断(例如,通用中断116)。序列器114还耦合到管理程序控制寄存器132及全局控制寄存器134。
在特定实施例中,指令高速缓冲存储器106经由多个当前指令寄存器而耦合到序列器114,所述多个当前指令寄存器可耦合到总线110且与处理系统100的特定线程相关联。在特定实施例中,处理系统100为包括六个线程的交错式多线程处理器。
序列器114耦合到第一指令执行单元118、第二指令执行单元120、第三指令执行单元122及第四指令执行单元124。每一指令执行单元118、120、122及124可经由第二总线128而耦合到通用寄存器堆126。通用寄存器堆126还可经由第三总线130而耦合到序列器114、数据高速缓冲存储器112及存储器102。管理程序控制寄存器132及全局控制寄存器134可存储可由序列器114内的控制逻辑存取以确定是否接受中断且控制指令的执行的位。
第一执行单元118包括转发逻辑电路136及本机存储器138。第二执行单元120包括转发逻辑电路140及本机存储器142。第三执行单元122包括转发逻辑电路144及本机存储器146。第四执行单元124包括转发逻辑电路148及本机存储器150。尽管执行单元118、120、122及124中的每一者经指示为包括转发逻辑(亦即,分别为转发逻辑136、140、144及148),但应理解,在特定实施例中,转发逻辑(例如,转发逻辑136)可由其它执行单元(例如,执行单元120、122及124)共享。举例来说,在特定实施例中,执行单元118可包括转发逻辑136及本机存储器138,且其它执行单元120、122及124可包括本机存储器142、146及150且可共享转发逻辑136。在特定实施例中,执行单元118、120、122及124中的一者或一者以上可共享本机存储器。举例来说,执行单元118与120可共亨本机存储器138,而执行单元122与124可共亨本机存储器146。在另一特定实例中,转发逻辑136可在执行单元118的外部且可与执行单元118、120、122及124通信,如关于图4中所说明的控制单元406及执行单元408、410、412及414所展示。
在特定实施例中,处理系统100适于接收可由执行单元118、120、122及124执行的第一指令包,且接收依赖于来自第一指令包的结果的第二指令包。第一指令包可包括可提供到执行单元118、120、122及124的四个指令。执行单元118、120、122及124可经由多个阶段来处理来自第一指令包的指令,所述多个阶段包括解码阶段、寄存器堆存取阶段、多次执行阶段及回写阶段。在回写阶段处,执行单元118的转发逻辑136可确定第二指令包的读取地址与第一指令包的回写地址匹配,且可将数据回写到通用寄存器堆126并将数据本机存储在存储器138处。在替代实施例中,执行单元118可对每一所接收的指令包的指令的至少一部分进行解码,以确定每一指令的读取地址及回写地址。转发逻辑电路136可适于将第二包的读取地址与第一指令包的回写地址比较,且将数据转发控制信号发送到其它执行单元(例如,指令执行单元120、122及124)以本机存储数据(亦即,在相应本机存储器142、146或150处)。可从存储器138、142、146或150检索数据以用于在执行来自第二(后续)指令包的指令时使用。
在特定实例中,转发逻辑电路136可检测到第二指令包的指令使用来自第一指令包的结果。确切地说,第一指令将数据写入到与第二指令读取数据的位置相同的位置。在此实例中,转发逻辑电路136适于确定第一指令包内的指令的结果由第二指令包内的指令利用。作为说明性非限制实例,转发逻辑电路136可经由指令高速缓冲存储器106或序列器114而接收来自能够存取将来的指令的控制逻辑电路(未图示)的信号;或转发逻辑电路136可检测第一包中的可由汇编器、编译器、序列器114或其它电路设置的转发指示符(例如,指定的位);或转发逻辑电路136可至少部分响应于指令类型而预测指令的结果的使用。在另一实施例中,转发逻辑电路136可能可配置以在第一模式中操作以本机存储所有指令结果用于由后续指令使用,或在第二模式中操作而不存储指令结果。除经由总线128而将结果写入到通用寄存器堆126之外,转发逻辑电路136使得执行单元118将执行的结果存储在本机存储器138中。当将来自第二指令包的依赖于数据的指令提供到执行单元118时,转发逻辑电路136使执行单元118略过寄存器读取操作且存取存储在本机存储器138中的结果,并在执行来自第二指令包的指令时利用所述结果。因此,执行单元118利用转发逻辑电路136来减少对通用寄存器堆126的读取操作的数目。
通过编译指令包以便将依赖于数据的指令在程序序列内的邻近包中排序,经编译的应用程序可通过利用执行单元118、120、122及124的转发逻辑电路136、140、144及148来增强电力节省。可将由较早指令产生的数据存储在本机存储器138、142、146或150处(例如,缓冲器、锁存器或触发器、本机寄存器或其它存储器元件处)以在不执行针对邻近包的寄存器读取的情况下由邻近包使用。在可在不邻近的包之间转发数据的说明性实施例中,本机存储器138、142、146或150可包括一个或一个以上寄存器,用于在处理一个或一个以上介入包时进行数据的临时本机存储。确切地说,通过在邻近指令包中对依赖于数据的指令排序,编译器增加数据转发的可能,借此增加所略过的读取操作的数目并减少总电力消耗。
在特定实例中,执行单元118包括用以将操作数(及/或数据)从一个指令包转发到下一指令包的转发逻辑电路136。所述数据转发减少了寄存器读取堆操作的总数目,且减少了总寄存器堆电力消耗。下文在表1中提供一对依赖于数据的指令包的实例。
表1:数据转发实例。
//第一指令包
{
R7:6=VALIGNB(R9:8,R7:6,#2)
R15:14+=VDMPY(R13:12,R7:6):<<1:sat
R1=R21
R3=ADD(R0,#8)
}
//第二指令包
{
R15:14=VASRW(R15:14,#3)//缩放输出
R17:16+=VDMPY(R13:12,R7:6):<<1:sat
R10=MEMW(R1++#4)//负载系数
}
在此实例中,除了由执行单元在执行与第一指令包相关联的VALIGNB指令时产生的存储在寄存器对R7:6处的值由执行单元在执行与第二包相关联的VDMPY指令时使用之外,所执行的特定指令与本发明无关。在特定实例中,汇编器或编译器可排列所述指令以便在同一执行槽(例如,执行单元118)中执行VALIGNB与后续的VDMPY两者。另外,汇编器或编译器可将第二指令包排列为在程序序列内紧跟在第一指令包之后。
图2为包括具有转发逻辑电路220及存储器222的执行单元202的系统200的一部分的框图。系统200包括在执行单元202的外部且具有多个存储器位置208、210、212、214、216及218的存储器装置204。存储器位置208、210、212、214、216及218中的每一者可与对于执行单元202来说可经由总线206存取的存储器地址相关联。一般来说,存储器位置208、210、212、214、216及218与执行单元202通过不同长度的总线迹线而分离。另外,由执行单元202对存储器204内的特定存储器位置进行的每一存取消耗电力。一般来说,执行单元202适于接收指令,对指令进行解码,存取存储器204的寄存器堆以检索数据,使用所检索的数据执行指令,且将数据回写到存储器204。
执行单元202包括转发逻辑电路220及本机存储器222。转发逻辑电路220适于检测通过特定指令的执行而产生的数据将在执行程序序列中的下一指令时使用的例子。在此例子中,执行单元202适于利用转发逻辑220来将来自第一指令的执行的结果存储在本机存储器222中。执行单元202可略过寄存器堆读取操作或存储器读取操作,且在执行下一指令期间利用存储在本机存储器222中的数据,借此避免存储器读取操作且节约电力。一般来说,通过减少总存储器存取,可通过选择性地避免耗散电力的存储器读取操作而节约电力消耗。
图3为包括具有数据转发逻辑电路306及查找略过逻辑电路308的共享控制单元304的系统300的框图。系统300包括耦合到共享控制单元304的指令高速缓冲存储器302。共享控制单元304耦合到服务单元314、存储器单元316及数据单元318。共享控制单元304还耦合到与指令单元310通信的来源寄存器堆312。指令单元310与数据单元318也经由耦合到存储器324(例如,多路高速缓冲存储器)的总线单元322而通信。服务单元314、存储器单元316及数据单元318耦合到目的地寄存器堆320。
在特定说明性实施例中,系统300接收可由数据单元318执行以产生结果的指令包。共享控制单元304适于利用数据转发逻辑电路306来确定结果是否将由后续指令包使用。共享控制单元304适于与服务单元314、存储器单元316及数据单元318通信以略过后续寄存器读取堆操作。另外,共亨控制单元304适于与数据单元314通信以指示数据单元314将结果存储在本机存储器(例如,图2中所说明的存储器222或图1中所说明的本机存储器138、142、146及150)中。共享控制单元304还适于控制服务单元314、存储器单元316及数据单元318以在执行后续指令包时利用本机存储的数据。在特定实施例中,服务单元314、存储器单元316及数据单元318组合执行类似于由图1中所描绘的执行单元118、120、122及124执行的操作的处理操作。
在另一特定实施例中,共享控制单元304适于利用查找略过逻辑电路308来(例如)当与第一指令相关联的第一存储器地址与同第二指令相关联的第二存储器地址在存储器内的同一高速缓冲存储器线内时确定是否略过标记阵列查找操作。在特定实例中,系统300可正在“自动递增地址”模式中操作,其中数据单元318可确定第一存储器地址且可基于第一存储器地址而计算第二存储器地址。举例来说,数据单元318可确定第一存储器地址(A)且计算出第二存储器地址(A+8)。在此特定实例中,数据单元318接收与第一指令包相关联的至少一个指令。数据单元318适于确定与指令相关联的存储器地址且计算第二存储器地址。
在特定实例中,存储器地址可为与n-路高速缓冲存储器内的物理存储器地址有关的虚拟存储器地址。在此实例中,数据单元318可通过执行翻译旁视缓冲器(TLB)查找操作来执行虚拟地址到物理地址翻译以确定物理存储器地址。数据单元318可执行标记阵列查找操作以识别标记数据,所述标记数据识别数据阵列内的与物理存储器地址有关的一路。数据单元318可使用标记数据及物理存储器地址信息从n-路高速缓冲存储器检索数据。可将标记数据(包括与多路高速缓冲存储器相关联的一路)以第二存储器地址存储在本机存储器处。当检索第二存储器地址以用于由数据单元318使用时,数据单元318可确定第二存储器地址与第一存储器地址是否在同一高速缓冲存储器线内。当第一存储器地址及第二存储器地址与n-路高速缓冲存储器内的同一高速缓冲存储器线相关联时,查找略过逻辑电路308适于指示数据单元318略过后续标记阵列查找操作,且使用来自第一存储器地址的路来存取n-路高速缓冲存储器处的与第二存储器地址相关联的数据。如果第一存储器地址及第二存储器地址与n-路高速缓冲存储器内的不同高速缓冲存储器线相关联,则查找略过逻辑电路308适于指示数据单元318执行标记阵列查找操作而不执行翻译旁视缓冲器(TLB)查找操作。如果数据单元318确定第二存储器地址跨越页边界(亦即,超过页大小),则查找略过逻辑电路308指示数据单元318执行TLB查找操作及标记阵列查找操作以确定与第二存储器地址相关联的物理地址及标记数据。
在特定实例中,n-路高速缓冲存储器的页具有大于高速缓冲存储器线的大小。举例来说,高速缓冲存储器线可包括32个字节,且页可为大约4096个位(大约4kb)。在此例子中,如果自动递增地址递增8个字节,则可在自动递增地址计算前进到下一高速缓冲存储器线(假定在顺序操作中存取高速缓冲存储器线)之前将标记阵列数据再用三次,且可(例如)在需要执行另一TLB查找操作之前将来自第一TLB查找操作的页翻译再用许多次(亦即,大约511次)。
确切地说,如果由后续指令存取的存储器地址同与先前存储器存取相同的高速缓冲存储器线相关联,则针对后续存储器地址,可再用先前标记阵列查找操作中所获得的标记阵列数据,因此避免后续标记阵列查找操作。在另一特定实例中,通过仅在跨越页边界时选择性地执行TLB查找操作,可通过减少存取TLB的次数而减少总电力消耗。
图4为处器器系统400的框图。处理器系统400包括耦合到控制单元406的指令单元402及中断寄存器404。控制单元406耦合到多个执行单元408、410、412及414。执行单元408、410、412及414中的每一者可分别包括本机存储器426、428、430及432。
控制单元406包括解码器416、控制寄存器堆418、通用寄存器堆420、可编程逻辑控制器(PLC)电路422及硅中除错器(in-silicon debugger)(ISDB)电路424。ISDB电路424提供可用于在处理器系统400运行时对软件进行除错的基于联合测试行动组(JTAG)的硬件除错器。在特定实施例中,ISDB电路424支持个别线程除错,允许线程执行的中止且允许指令及数据存储器(包括控制寄存器堆418及通用寄存器堆420)的观测及变更。
在特定说明性实施例中,解码器416接收指令并对指令进行解码。解码器416将与经解码的指令有关的数据传送到PLC电路422,PLC电路422可包括用于检测第一指令包何时产生将由指令包序列中的第二指令包利用的结果的逻辑。在检测到顺序指令包之间的所述数据依赖性之后,PLC电路422适于产生对于执行单元408、410、412及414中的正执行数据产生指令的至少一者的控制信号以将结果存储在相应本机存储器426、428、430或432处。PLC 422适于控制通用寄存器堆420及解码器416以将依赖于数据的指令从后续指令包路由到选定执行单元(例如,执行单元408),以使得执行单元可在执行后续指令时利用本机存储的数据(亦即,存储在本机存储器426处的数据)。在此实例中,PLC 422还可控制执行单元408及总线434以在本机存储结果时防止执行单元408存取存储器(例如,通用寄存器堆420)以检索结果。
在特定实例中,执行单元408可从控制单元406接收数据产生指令,执行所述指令,且将结果回写到通用寄存器堆420。执行单元408也可响应于从控制单元406的PLC 422接收的控制信号而将结果存储在本机存储器426中。执行单元408可从控制单元406接收利用来自本机存储器426的所存储的结果的下一指令。执行单元408可存取本机存储器426以检索所存储的结果并使用所检索的结果执行下一指令。在此特定实例中,执行单元408可在不从通用寄存器堆420读回结果的情况下执行下一指令,借此略过寄存器读取堆操作并节约电力。
在另一特定实施例中,控制单元406适于选择性地再用根据标记阵列查找操作确定的标记阵列数据。举例来说,当使用自动递增特征根据第一地址计算第二地址时,PLC422可检查进位位以确定第二地址何时与不同于第一地址的高速缓冲存储器线相关联。举例来说,如果高速缓冲存储器线为32个字节宽,则第二地址的第五位表示一进位位。当进位位改变时,第二地址与高速缓冲存储器内的下一高速缓冲存储器线相关联。一般来说,PLC 422指示执行单元408、410、412及414再用来自先前标记阵列查找操作的标记阵列数据,直到所述进位位指示第二地址与不同于第一指令的高速缓冲存储器线相关联为止。在此例子中,PLC 422使执行单元408、410、412及414执行新的标记阵列查找操作而不执行翻译旁视缓冲器(TLB)查找操作。
在再一特定实施例中,控制单元406适于选择性地执行翻译旁视缓冲器(TLB)查找操作。确切地说,PLC 422可检查来自第二存储器地址的计算的进位位以确定所计算的存储器地址何时指示已跨越页边界。举例来说,如果存储器阵列的页大小为大约4096个位(亦即,4kb),则第二存储器地址的第十一位可表示一进位位。因此,当第二存储器地址的第十一位改变时,跨越页边界且PLC 422使执行单元408、410、412或414中的一者起始TLB查找操作,TLB查找操作之后可为标记阵列查找操作。在此实例中,标记阵列查找操作比TLB查找操作频繁地发生。PLC 422适于选择性地略过标记阵列查找操作与TLB查找操作中的一者或两者,从而减少总电力消耗。
图5为包括数据转发逻辑的执行单元的指令循环500的特定实例的图。一般来说,从特定线程的观点来看,指令循环500表示执行单元的多个阶段。执行单元通常在一个或一个以上阶段期间处理数据及指令,所述一个或一个以上阶段包括回写阶段502、解码阶段504、寄存器读取阶段506、一个或一个以上执行阶段508、510及512,及第二回写阶段514。应理解,指令循环500仅包括一个回写阶段(回写阶段514)且接着执行循环重复(在解码阶段504处开始)。出于论述的目的说明回写阶段502。
通常,在516处,在回写阶段502处,将来自先前所执行的指令的结果回写到寄存器(例如,通用寄存器堆)。在518处,接收下一指令包(其可包括一到四个指令)并将所接收的包的读取识别符与同写入到寄存器的写入结果相关联的写入识别符比较。当读取识别符与写入识别符匹配时,将写入结果本机存储在执行单元处(在520处),且将写入结果回写于寄存器处(在516处)。在此例子中,在522处,可略过寄存器读取(在506处)且可使用本机存储在执行单元处的数据。在524处,使用寄存器读取阶段(506)期间所读取的数据或本机存储在执行单元处的数据中的至少一者执行指令。因此,当读取识别符与写入识别符匹配时(在518处),可略过寄存器读取阶段(在506处)且可利用本机存储的数据,因此允许数据转发。
在特定说明性实施例中,图5中所说明的执行单元阶段504、506、508、510、512及514表示交错式多线程处理器内的执行单元的循环。另外,回写阶段502表示先前指令的执行循环的最后阶段。在不在读取堆阶段506处执行寄存器读取堆操作的情况下,可从执行单元处的本机存储器检索(在522处)来自先前指令的数据,且可在524处(亦即,在所述一个或一个以上执行阶段508、510及512期间)将所述数据与下一指令一起处理。在特定说明性实施例中,阶段504、516、508、510、512及514中的每一者可表示执行特定操作的时钟循环。
图6为处理器的执行单元内的数据转发逻辑600的特定说明性实施例的框图。在此例子中,关于回写阶段602、解码阶段604及读取寄存器堆阶段606来说明数据转发逻辑600。在说明性实施例中,数据转发逻辑600表示多个槽中的单个处理槽(例如,代表性槽2),其可使用寄存器堆的代表性寄存器“S”及“T”来处理读取及写入操作。
关于回写阶段602,转发逻辑600包括比较器608及610、逻辑OR门611、反相器614及616、逻辑AND门618及620,及寄存器堆612。转发逻辑600还包括转发启用触发器电路636及转发数据触发器电路638。比较器608接收下一包寄存器“S”(Rs)读取识别符信息622及当前包写入识别符信息624作为输入,且提供耦合到反相器614的输入的输出。反相器614的输出耦合到逻辑AND门618的第一输入,且逻辑AND门618的第二输入耦合到槽2寄存器“S”读取启用(s2RsRdEn)输入632。逻辑AND门618还包括耦合到寄存器堆612的槽2寄存器的输出。比较器610接收下一包寄存器“T”(Rt)读取识别符信息626(其可与下一包读取识别符信息622相同)及当前包写入识别符信息628,并提供经由反相器616而耦合到逻辑AND门620的输入的输出。逻辑AND门620还在第二输入处接收槽2寄存器“T”读取启用(s2RtRdEn)输入634,且提供耦合到寄存器堆612的槽2寄存器的输出。比较器608及610的输出也经提供作为到转发启用触发器636的输入及作为到逻辑OR门611的输入,逻辑OR门611提供到转发数据触发器638的启用输入。转发数据触发器638还接收来自执行单元数据回写630的数据。
在转发逻辑600的解码阶段604处,提供转发启用触发器636的输出作为到第二转发启用触发器640的输入且作为到第二转发数据触发器642的启用输入。转发数据触发器638提供到第二转发数据触发器642的数据输入。
在读取寄存器堆阶段606处,第二转发启用触发器640将转发启用信号提供到第一多路复用器644的选择输入且提供到第二多路复用器646的选择输入。第一多路复用器644接收第一输入处的经转发的数据及第二输入处的寄存器(s)数据且提供输出648,输出648载运用于在执行下一指令包时使用的经转发的数据或寄存器(s)数据。第二多路复用器646接收第一输入处的经转发的数据及第二输入处的寄存器(t)数据且提供输出650,输出650载运用于在执行下一指令包时使用的经转发的数据或寄存器(t)数据。
一般来说,比较器608适于接收下一包读取识别符信息622及当前包写入识别符信息624。比较器610适于接收下一包读取识别符信息626及当前包写入识别符信息628。当下一包读取识别符622及626中的一者与当前包写入识别符624及628中的一者匹配时,识别匹配的比较器(例如,比较器608及610中的一者)在其输出处提供逻辑一(1)值,从而启用转发数据触发器638并经由相应反相器614或616及相应逻辑AND门618或620而关闭对应寄存器读取启用。
在特定说明性实施例中,当下一包读取识别符622与当前包写入识别符信息624匹配时,比较器608提供逻辑高输出作为到转发数据触发器638的输入。反相器614使逻辑高输出反相且提供逻辑低值作为到逻辑AND门618的输入,从而停用对寄存器堆612的槽2寄存器(s)读取启用。转发数据触发器638经由回写输入630而接收来自执行单元的数据并存储所述数据。在解码阶段604期间,将数据转发到第二转发数据触发器642。将经转发的数据提供到第一多路复用器644及第二多路复用器646,且基于来自第二转发启用触发器640的输出而将经转发的数据选择性地提供到第一输出648及第二输出650中的一者。第二转发启用触发器640可将比较器608的输出提供到第一多路复用器644,且将比较器610的输出提供到第二多路复用器646以选择来自第二转发数据触发器642的经转发的数据或寄存器数据中的一者。
转发逻辑600适于基于读取/写入识别符匹配而选择性地启用寄存器读取操作。转发逻辑600还可用于选择性地高速缓存与存储器地址相关联的标记阵列数据(例如,路信息)以供在后续指令中再用。在特定实例中,转发逻辑600或类似逻辑可适于检查与所计算的地址相关联的进位位,以确定所计算的地址何时与下一高速缓冲存储器线相关联(亦即,导致标记阵列查找操作且略过翻译旁视缓冲器(TLB)查找操作)。在另一特定实例中,转发逻辑或类似逻辑可适于检查与所计算的地址相关联的进位位,以确定所计算的地址何时跨越页边界(亦即,导致翻译旁视缓冲器(TLB)查找操作及标记阵列查找操作)。当转发逻辑600或类似逻辑确定标记阵列数据仍有效(亦即,第一存储器地址与第二存储器地址的高速缓冲存储器线相同)时,可将标记阵列数据锁存于数据锁存器(例如,转发数据触发器638及642)处以供在存取第二存储器位置时使用,而不执行TLB查找操作及/或标记阵列查找操作。
图7为包括数据转发逻辑且适于选择性地略过查找操作的执行单元的指令循环700的特定实例的图。指令循环700通常包括多个阶段,包括回写阶段702、解码阶段704、寄存器读取阶段706、一个或一个以上执行阶段708、710及712、及第二回写阶段714。应理解,指令循环700仪包括一个回写阶段(回写阶段714)且接着执行循环重复(在解码阶段704处开始)。出于论述的目的说明回写阶段702。
一般来说,在先前指令的执行的执行阶段(例如,执行阶段708)处,可计算第一存储器地址及第二存储器地址,且可将第二存储器地址存储在本机存储器(例如,图1中所说明的本机存储器138)处。在716处,在回写阶段702期间,将来自先前所执行的指令的结果回写到高速缓冲存储器地址或寄存器(例如,通用寄存器堆)。在718处,可从本机存储器检索第二存储器地址。在720处,检验与第二存储器地址相关联的一个或一个以上进位位的值,以确定所述一个或一个以上进位位是否指示归因于自动递增操作的经进位值。如果所述一个或一个以上进位位中的第一进位位的值不指示第二存储器地址与不同于第一存储器地址的高速缓冲存储器线相关联,则在722处,略过翻译旁视缓冲器(TLB)查找操作及标记阵列查找操作,且使用先前标记阵列值从存储器检索数据。如果所述一个或一个以上进位位的第一进位位的值指示经进位值且所述一个或一个以上进位位中的第二进位位不指示经进位值,例如,当第二存储器地址同与先前存储器地址相同的页内的不同高速缓冲存储器线相关联时,在724处,略过TLB查找操作但执行标记阵列查找操作以检索用于从存储器检索数据的标记阵列值。如果所述一个或一个以上进位位中的每一者指示一进位值,则如726处所指示执行TLB查找操作及标记阵列查找操作。
在特定实例中,可略过标记阵列查找操作且可使用根据先前标记阵列查找操作确定的标记阵列数据来存取存储器内的地址。确切地说,可在不查找标记阵列数据且不执行TLB查找操作的情况下使用标记阵列数据来存取存储器地址。
在特定说明性实施例中,图7中所说明的阶段704、706、708、710、712及714可表示交错式多线程处理器内的执行单元的阶段。另外,在特定实施例中,阶段704、706、708、710、712及714可表示时钟循环。
图8为包括具有控制单元806的电路装置802的系统800的特定说明性实施例的框图,控制单元806用于分别使用本机存储器809及811在执行单元808及810内选择性地转发数据。控制单元806还适于选择性地略过与标记阵列826或与翻译旁视缓冲器(TLB)单元862有关的查找操作。在特定实例中,控制单元806可通过在所计算的地址在与先前所计算的地址相同的高速缓冲存储器线内或相同的页内时转发来自先前查找操作的标记阵列信息及/或翻译旁视缓冲器(TLB)信息而略过标记阵列826处的查找操作、TLB单元862处的查找操作或其任何组合。
一般来说,电路装置802包括数据单元804,数据单元804与控制单元806、与总线单元812及与联合翻译旁视缓冲器(TLB)单元813通信。总线单元812与层级2紧密耦合存储器(TCM)/高速缓冲存储器858通信。控制单元806还与第一执行单元808、第二执行单元810、指令单元814及硅中除错器(ISDB)单元818通信。指令单元814与联合TLB单元813及与ISDB单元818通信。电路装置802还包括嵌入式迹线单元(EU)820及存储器内建式自测试(BIST)或可测试性设计(DFT)单元822。ISDB单元818、EU 820及存储器BIST单元822提供用于对在电路装置802处操作的软件进行测试及除错的装置。
控制单元806包括寄存器堆836及838、控制逻辑电路840、中断控制电路842、控制寄存器844及指令解码器848。一般来说,控制单元806对线程进行调度且向指令单元(IU)814请求指令,且对指令进行解码并向以下三个执行单元发出指令:数据单元804(分别为执行槽1830及执行槽0832)、执行单元808,及执行单元810。指令单元814包括指令翻译旁视缓冲器(ITLB)864、指令地址产生单元866、指令控制寄存器868、指令包对准电路870及指令高速缓冲存储器872。指令单元(IU)814可为负责从主存储器或从指令高速缓冲存储器872取出指令且负责将所取出的指令提供到控制单元806的处理器管线的前端。
数据单元804包括含有可高速缓存的数据的数据阵列824。在特定实施例中,数据阵列824可为排列于16子阵列存储器组(每一组包括16个16路的集合)中的多路数据阵列。子阵列内的每一存储器位置可适于存储双字或8字节的数据。在特定实例中,子阵列可含有256个双字(亦即,16×16个双字)。数据单元804还包括用于存储与数据阵列824相关联的物理标记的标记阵列826。在特定实施例中,标记阵列826为静态随机存取存储器(SRAM)。数据单元804还包括适于存储与高速缓冲存储器线相关联的状态的状态阵列828。在特定实例中,状态阵列828供应用于响应于高速缓存未命中事件(cache miss event)的替换的高速缓冲存储器路。数据单元804还包括通常执行加载及存储操作的执行单元(槽1)830及执行单元(槽0)832。数据单元804包括用于控制数据单元804的操作的控制电路834。
一般来说,数据单元804与控制单元806通信以接收用于在执行单元830及832处执行的指令。数据单元804还与总线单元812通信以用于总线服务请求且与联合TLB单元813通信以用于联合TLB-主存储器单元翻译。
总线单元812包括总线队列单元850、层级2标记阵列854、异步先入先出(FIFO)单元852及层级2接口856。层级2接口856与层级2TCM/高速缓冲存储器858通信。联合TLB单元813包括控制寄存器860及包括64个条目的联合TLB表862。
在特定说明性实施例中,控制单元806接收第一指令包及第二指令包。控制单元806可将来自第一指令包的指令提供到执行单元808以用于执行。执行单元808可执行来自第一指令包的第一指令,且确定与第一指令相关联的第一地址。在特定实例中,执行单元808可基于第一指令而计算第一虚拟地址,且可基于第一虚拟地址而计算第二虚拟地址(亦即,经由自动递增特征)。执行单元808可经由控制单元808而与数据单元804通信,以经由TLB单元813而执行翻译旁视缓冲器(TLB)查找操作。数据单元804可通过与TLB单元813通信而控制TLB查找操作,且还可经由标记阵列826而执行标记阵列查找操作以确定多路存储器(例如,数据阵列824)内的一路。可经由控制单元806而将TLB页翻译信息及标记阵列数据提供到执行单元808。控制单元806可指示执行单元808将标记阵列信息及/或TLB页翻译信息存储在存储器809处。执行单元808可基于标记阵列信息而从存储器位置检索数据。
在特定实例中,如果第二虚拟地址同与第一虚拟地址相同的高速缓冲存储器线相关联,则执行单元808可使用来自存储器809的所存储的标记阵列信息而直接存取物理存储器(例如,数据阵列824),而不执行标记阵列查找操作且不执行TLB页翻译。在特定实施例中,控制单元806处的控制逻辑电路840可指示执行单元808使用所存储的标记阵列信息。如果第二虚拟地址同与第一虚拟地址不同的高速缓冲存储器线相关联,则执行单元808可经由控制单元806而与数据单元804通信以执行标记阵列查找操作以确定与第二虚拟地址有关的标记信息,而不执行TLB查找操作(亦即,不执行虚拟页到物理页翻译)。
在特定说明性实施例中,执行单元808及810包括用于确定何时略过标记阵列查找及/或TLB查找操作的存储器阵列查找略过逻辑电路,例如图3中所说明的查找略过逻辑电路308。在另一特定说明性实施例中,控制逻辑电路840可控制执行单元808及810选择性地略过标记阵列查找、TLB查找或其任何组合。另外,执行单元808及810可包括数据转发逻辑电路,例如图1中所说明的转发逻辑电路136。在特定说明性实施例中,控制逻辑电路840适于通过控制执行单元808及810将数据存储在相应存储器809及811处而将来自第一指令的数据选择性地转发到第二指令以用于在执行后续指令时使用。
图9为数据转发方法的特定说明性实施例的框图。在902处,在执行单元处的回写阶段期间,将与待写入到寄存器堆的数据相关联的写入识别符与具有多个执行单元的交错式多线程处理器内的执行管线的后续读取阶段的读取识别符比较。进行到904,如果写入识别符不与读取识别符匹配,则方法前进到906且将由第一指令包的执行产生的数据写入到寄存器堆处的一位置,而不将数据本机存储在执行单元处。或者,如果在904处写入识别符确实与读取识别符匹配,则方法前进到908且将数据写入到寄存器堆并将数据本机存储在执行单元处以用于由执行单元在后续读取阶段中使用。前进到910,方法包括从本机存储位置或从寄存器堆位置检索数据。移动到912,方法包括使用所检索的数据执行后续读取阶段。在特定实例中,方法包括在执行单元处使用本机存储在执行单元处的数据而执行指令包。方法在914处终止。
在特定实例中,方法可包括识别数据中所包括的一个或一个以上零值位以确定写入识别符是否与读取识别符匹配。基于所述零值位,方法可包括产生用于减少到执行单元内与所述一个或一个以上零值位相关联的数据路径的电力的指示符。在另一特定实例中,方法包括将多路高速缓冲存储器的与数据单元相关联的高速缓冲存储器线地址与同写入识别符相关联的高速缓冲存储器线地址比较,且当与写入识别符相关联的高速缓冲存储器线地址与同数据单元相关联的高速缓冲存储器线地址匹配时,从多路高速缓冲存储器检索数据而不读取翻译旁视缓冲器(TLB)标记。
图10为选择性地略过标记阵列查找操作的方法的特定说明性实施例的框图。在1002处,使用自动递增特征根据第一存储器地址计算第二存储器地址。继续到1004,检查与第二存储器地址相关联的第一进位位。在说明性实施例中,为了确定第二地址是否在与第一地址相同的高速缓冲存储器线内,进位位为与高速缓冲存储器线的大小相关联的地址位。举例来说,在具有低序位0000、0001......0111的连续地址处于单个高速缓冲存储器线内但具有低序位1000的下一连续地址处于不同高速缓冲存储器线中的情况下,那么从0改变到1的位(亦即,第四最低有效地址位)为在1004处检查的进位位。继续所述实例,当通过自动递增第一地址而产生第二地址时,如果第四最低有效地址位改变值,那么指示进位值。在1006处,如果第一进位位指示一进位值,则方法前进到1008且执行标记阵列查找操作以检索与第二存储器地址相关联的标记阵列信息。进行到1010,将标记阵列信息存储在本机存储器处。移动到1012,使用标记阵列信息从高速缓冲存储器检索数据。
返回到1006,如果第一进位位并不指示一进位值,则方法前进到1014且从本机存储器检索标记阵列信息,其中标记阵列信息是在先前标记阵列查找操作(例如,与第一存储器地址相关联的查找操作)期间被识别。方法在1016处终止。
图11为选择性地略过(绕过)标记阵列查找操作、翻译旁视缓冲器(TLB)查找操作或其任何组合的方法的特定说明性实施例的流程图。在1102处,执行TLB查找操作以将虚拟存储器地址翻译成物理存储器地址。继续到1104,执行标记阵列查找操作以确定与物理地址相关联的标记信息。进行到1106,将标记阵列信息存储在本机存储器处。前进到1108,接收使用自动递增特征根据第一存储器地址计算的第二存储器地址。在特定实例中,可通过递增第一存储器地址而根据第一存储器地址计算第二存储器地址。继续到1110,检查与第二存储器地址相关联的高速缓冲存储器线进位位以识别进位值(亦即,进位位的值)。在特定实例中,进位位可为(例如)与32位高速缓冲存储器有关的第五地址位。如果在1112处高速缓冲存储器线进位位不指示进位值,则方法前进到1114且检索存储在本机存储器处的标记信息。继续到1116,基于所检索的标记信息而从存储器处的第二存储器地址检索数据。返回到1112,如果高速缓冲存储器线进位位指示一进位值,则方法前进到1118且检查页边界进位位以识别进位值。在1120处,如果页边界进位位指示一进位值,则方法返回到1102且执行TLB查找操作以将存储器地址翻译成物理地址。返回到1120,如果页边界位不指示进位值,则方法前进到1104且执行标记阵列查找操作以确定与物理地址相关联的标记信息,而不执行TLB查找操作。
图12为包括处理器的代表性无线通信装置1200的框图,所述处理器包括用于选择性地略过寄存器读取操作及/或翻译旁视缓冲器(TLB)查找操作的逻辑电路。无线通信装置1200可包括数字信号处理器(DSP)1210,其包括与一个或一个以上执行单元1268通信的数据转发/查找略过逻辑电路1264。所述一个或一个以上执行单元1268中的每一者包括本机存储器1270。数据转发/查找略过逻辑电路1264可操作以控制执行单元1268通过将数据本机存储在本机存储器1270中而转发数据以供由后续指令包使用。无线通信装置1200还包括DSP 1210可存取的存储器1232。数据转发/查找略过逻辑电路1264还适于控制执行单元1268利用先前所确定的标记阵列信息(来自与不同存储器地址相关联的先前标记阵列查找操作)来略过翻译旁视缓冲器(TLB)查找操作与标记阵列查找操作两者。可使用先前所确定的标记阵列信息来存取存储器(例如,存储器1232),而不执行另一标记阵列查找操作。在另一特定实施例中,可使用根据先前TLB查找操作确定的关于第一地址的页翻译信息来执行标记阵列查找操作,而不执行另一TLB查找操作,如关于图1到图11所描述。在特定实施例中,数据转发及/或TLB查找略过逻辑电路1264可提供数据转发功能性、标记阵列查找略过功能性、TLB查找略过功能性或其任何组合。
在特定实施例中,无线通信装置1200可包括数据转发电路与查找略过逻辑电路两者。在另一特定实施例中,无线通信装置1200可仅包括数据转发电路。在再一特定实施例中,可包括查找略过逻辑电路。在又一特定实施例中,适于确定是否转发数据的逻辑电路还可用于确定是否略过标记阵列查找操作、TLB查找操作或其任何组合。
图12还展示耦合到数字信号处理器1210且耦合到显示器1228的显示器控制器1226。编码器/解码器(CODEC)1234也可耦合到数字信号处理器1210。扬声器1236及麦克风1238可耦合到CODEC 1234。
图12还指示无线控制器1240可耦合到数字信号处理器1210且耦合到无线天线1242。在特定实施例中,输入装置1230及电源1244耦合到芯片上系统1222。此外,在特定实施例中,如图12中所说明,显示器1228、输入装置1230、扬声器1236、麦克风1238、无线天线1242及电源1244在芯片上系统1222的外部。然而,每一者耦合到芯片上系统1222的一组件。
应理解,尽管数据转发及/或TLB查找略过逻辑电路1264、所述一个或一个以上执行单元1268及本机存储器1270被描绘为数字信号处理器1210的分离组件,但数据转发及/或TLB查找略过逻辑电路1264、所述一个或一个以上执行单元1268及本机存储器1270可整合到其它处理组件中,例如无线控制器1240、CODEC 1234、显示器控制器1226、其它处理组件(例如,通用处理器(未图示))或其任何组合。
所属领域的技术人员应进一步了解,结合本文中所揭示的实施例而描述的各种说明性逻辑块、配置、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的此互换性,上文已大体上在功能性方面描述了各种说明性组件、块、配置、模块、电路及步骤。将所述功能性实施为硬件还是软件取决于特定应用及强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以变化的方式实施所描述的功能性,但所述实施决策不应被解释为会引起偏离本发明的范围。
结合本文中所揭示的实施例而描述的方法或算法的步骤可直接在硬件中、由处理器执行的软件模块中或所述两者的组合中实施。软件模块可驻存在RAM存储器、快闪存储器、ROM存储器、PROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸盘、CD-ROM或此项技术中已知的任何其它形式的存储媒体中。将示范性存储媒体耦合到处理器,以使得所述处理器可从所述存储媒体读取信息,并可将信息写入到所述存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器及存储媒体可驻存在ASIC中。ASIC可驻存在计算装置或用户终端中。在替代方案中,处理器及存储媒体可作为离散组件驻存在计算装置或用户终端中。
提供对所揭示的实施例的先前描述以使得任何所属领域的技术人员能够制造或使用所揭示的实施例。对于所属领域的技术人员来说,对这些实施例的各种修改将显而易见,且可在不偏离本发明的精神或范围的情况下将本文中所界定的一般原理应用于其它实施例。因此,本发明不希望限于本文中所展示的实施例,而是应符合与如随附权利要求书所界定的原理及新颖特征一致的可能的最广泛范围。

Claims (25)

1.一种方法,其包含:
在执行单元处的回写阶段期间,将与来自第一指令的执行的待写入到寄存器堆的结果相关联的写入识别符与同具有多个执行单元的交错式多线程(IMT)处理器内的执行管线处的第二指令相关联的读取识别符比较;以及
当所述写入识别符与所述读取识别符匹配时,将所述结果存储在所述执行单元的本机存储器处以供所述执行单元在后续读取阶段中使用。
2.根据权利要求1所述的方法,其中当所述写入识别符不与所述读取识别符匹配时,所述方法进一步包含将所述结果写入到所述寄存器堆而不将所述结果存储在所述本机存储器处。
3.根据权利要求1所述的方法,其进一步包含使用存储在所述本机存储器处的所述结果在所述执行单元处执行指令包。
4.根据权利要求1所述的方法,其进一步包含:
识别所述写入识别符中所包括的一个或一个以上零值位;以及
产生用于减少到所述执行单元内与所述一个或一个以上零值位相关联的数据路径的电力的指示符。
5.根据权利要求1所述的方法,其进一步包含:
当所述写入识别符与所述读取识别符匹配时,产生数据转发启用输出指示符;以及
响应于所述数据转发启用输出指示符而选择性地停用寄存器堆的槽。
6.根据权利要求5所述的方法,其进一步包含:
产生与所述数据转发启用输出指示符有关的选择信号;以及
将来自所述寄存器堆的输出或来自所述本机存储器的所述结果中的一者选择性地提供到所述执行单元以供在执行所述第二指令时使用。
7.根据权利要求1所述的方法,其进一步包含:
检查根据所述第一指令的第一存储器地址计算的所述第二指令的第二存储器地址的进位位,以确定所述第二存储器地址及所述第一存储器地址是否与高速缓冲存储器线相关联;以及
当与所述第二存储器地址相关联的第二高速缓冲存储器线地址与同所述第一存储器地址相关联的第一高速缓冲存储器线地址匹配时,从多路高速缓冲存储器检索数据而不执行标记阵列查找操作。
8.一种方法,其包含:
根据与第一指令包相关联的第一地址确定与第二指令包相关联的第二地址;
检查数据单元的加法器的进位位以确定是否确定所述第二地址跨越了与多路高速缓冲存储器相关联的高速缓冲存储器线的边界;以及
当未跨越所述边界时,存取所述多路高速缓冲存储器以使用根据先前标记阵列查找操作确定的与所述第一地址相关联的标记阵列数据及翻译旁视缓冲器(TLB)查找数据从所述第二地址检索数据。
9.根据权利要求8所述的方法,其中当跨越高速缓冲存储器线边界时,所述方法进一步包含执行标记阵列查找操作以确定与所述第二指令相关联的标记阵列信息而不执行翻译旁视缓冲器(TLB)查找操作。
10.根据权利要求9所述的方法,其进一步包含使用所述标记阵列信息从所述多路高速缓冲存储器读取数据。
11.根据权利要求8所述的方法,其中所述第一地址包含第一存储器读取地址,且所述第二地址包含第二存储器读取地址。
12.根据权利要求8所述的方法,其进一步包含:
将所述第二地址与同根据执行所述第一指令包而确定的结果相关联的第一写入地址比较;以及
当所述第一写入地址与所述第二地址匹配时,将所述结果存储在执行单元内的本机存储器处以供在执行所述第二指令包时使用。
13.根据权利要求12所述的方法,其进一步包含:
从所述本机存储器检索所述结果;以及
使用所述所检索的结果执行所述第二指令包。
14.根据权利要求8所述的方法,其中当跨越页边界时,所述方法进一步包含:
执行翻译旁视缓冲器(TLB)查找操作以将所述第二地址转换成与所述多路高速缓冲存储器相关联的物理地址;
执行标记阵列查找操作以确定标记信息;以及
基于所述标记信息及所述物理地址而存取存储器。
15.根据权利要求8所述的方法,其中使用相对寻址根据所述第一地址确定所述第二地址。
16.一种多线程处理器,其包含:
执行单元,其包含:
本机存储器,其用于存储一个或一个以上数据值;以及
逻辑电路,其适于确定与读取操作相关联的读取地址是否与同先前回写操作相关联的回写地址匹配,所述逻辑电路适于在所述读取地址与所述回写地址匹配时将所述一个或一个以上数据值存储在所述本机存储器处。
17.根据权利要求16所述的多线程处理器,其中所述逻辑电路适于从所述执行单元外部的存储器的一存储器位置读取数据,当所述读取地址不与所述回写地址匹配时,所述存储器位置对应于所述读取地址。
18.根据权利要求16所述的多线程处理器,其中所述执行单元包含多个执行阶段,所述多个执行阶段包括回写阶段、解码阶段及读取寄存器堆阶段。
19.根据权利要求18所述的多线程处理器,其中所述逻辑电路包含一个或一个以上比较器,所述一个或一个以上比较器适于将读取地址信息与写入地址信息比较且产生用于选择性地启用数据转发的结果。
20.根据权利要求16所述的多线程处理器,其中所述本机存储器包含所述执行单元内的一个或一个以上数据锁存器。
21.根据权利要求20所述的多线程处理器,其中所述一个或一个以上数据锁存器由数据转发逻辑电路选择性地激活以选择性地启用数据转发。
22.根据权利要求16所述的多线程处理器,其进一步包含第二逻辑电路,所述第二逻辑电路适于在与指令相关联的读取地址的至少一部分与同先前指令相关联的读取地址的一部分匹配时,在不执行标记阵列查找操作的情况下确定多路高速缓冲存储器内的一存储器地址。
23.一种处理器,其包含:
用于将与来自第一指令包的执行的待写入到寄存器堆的结果相关联的写入识别符与同具有多个执行单元的交错式多线程(IMT)处理器内的执行管线处的第二指令包相关联的读取识别符比较的装置;以及
用于在所述写入识别符与所述读取识别符匹配时将所述结果选择性地本机存储在执行单元处以供在执行所述第二指令包时使用的装置。
24.根据权利要求23所述的处理器,其进一步包含:
用于根据与所述第一指令包相关联的第一地址确定与所述第二指令包相关联的第二地址的装置;
用于检查数据单元的加法器的进位位以确定是否确定所述第二地址跨越了与多路高速缓冲存储器相关联的高速缓冲存储器线的高速缓冲存储器线边界的装置;以及
用于在不存取翻译旁视缓冲器(TLB)或标记阵列的情况下使用与所述第一地址相关联的本机存储的物理地址数据及路数据将虚拟地址转换成与所述多路高速缓冲存储器相关联的物理地址的装置。
25.根据权利要求23所述的处理器,其中所述用于将与来自第一指令包的执行的待写入到寄存器堆的结果相关联的写入识别符与同第二指令包相关联的读取识别符比较的装置包含:
第一比较器,其适于接收所述写入识别符及所述读取识别符,且提供指示所述写入识别符与所述读取识别符是否匹配的第一输出;
第二比较器,其适于接收所述写入识别符及第二读取识别符,且提供指示所述写入识别符与所述第二读取识别符是否匹配的第二输出;以及
逻辑电路,其适于基于所述第一输出及所述第二输出而将本机存储的数据或寄存器数据中的一者选择性地提供到所述执行单元以供在执行所述第二指令包时使用。
CN2009801064667A 2008-02-26 2009-02-03 执行单元内的数据转发系统和方法 Pending CN102089742A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310217180.4A CN103365627B (zh) 2008-02-26 2009-02-03 执行单元内的数据转发系统和方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/037,300 US8145874B2 (en) 2008-02-26 2008-02-26 System and method of data forwarding within an execution unit
US12/037,300 2008-02-26
PCT/US2009/032919 WO2009108462A1 (en) 2008-02-26 2009-02-03 System and method of data forwarding within an execution unit

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201310217180.4A Division CN103365627B (zh) 2008-02-26 2009-02-03 执行单元内的数据转发系统和方法

Publications (1)

Publication Number Publication Date
CN102089742A true CN102089742A (zh) 2011-06-08

Family

ID=40382851

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310217180.4A Active CN103365627B (zh) 2008-02-26 2009-02-03 执行单元内的数据转发系统和方法
CN2009801064667A Pending CN102089742A (zh) 2008-02-26 2009-02-03 执行单元内的数据转发系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201310217180.4A Active CN103365627B (zh) 2008-02-26 2009-02-03 执行单元内的数据转发系统和方法

Country Status (7)

Country Link
US (1) US8145874B2 (zh)
EP (1) EP2263149A1 (zh)
JP (2) JP2011513843A (zh)
KR (2) KR101183651B1 (zh)
CN (2) CN103365627B (zh)
TW (1) TW200943176A (zh)
WO (1) WO2009108462A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104317555A (zh) * 2014-10-15 2015-01-28 中国航天科技集团公司第九研究院第七七一研究所 Simd处理器中写合并和写撤销的处理装置和方法
CN108572931A (zh) * 2017-03-14 2018-09-25 三星电子株式会社 存储器加载到加载熔合
WO2018171319A1 (zh) * 2017-03-21 2018-09-27 华为技术有限公司 处理器和指令调度方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009011644A1 (de) * 2009-03-04 2010-09-16 Siemens Aktiengesellschaft Verfahren und Programmprodukt zum Ermöglichen eines Auffindens von Datensätzen
US8285968B2 (en) 2009-09-29 2012-10-09 International Business Machines Corporation Performing memory accesses while omitting unnecessary address translations
JP5600517B2 (ja) 2010-08-18 2014-10-01 キヤノン株式会社 情報処理装置、情報処理方法、およびプログラム
US8561070B2 (en) 2010-12-02 2013-10-15 International Business Machines Corporation Creating a thread of execution in a computer processor without operating system intervention
US8572628B2 (en) 2010-12-02 2013-10-29 International Business Machines Corporation Inter-thread data communications in a computer processor
US20130179642A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Non-Allocating Memory Access with Physical Address
US9348775B2 (en) 2012-03-16 2016-05-24 Analog Devices, Inc. Out-of-order execution of bus transactions
US9804969B2 (en) * 2012-12-20 2017-10-31 Qualcomm Incorporated Speculative addressing using a virtual address-to-physical address page crossing buffer
US9317289B2 (en) * 2012-12-28 2016-04-19 Telefonaktiebolaget L M Ericsson (Publ) Acknowledgement forwarding
US9367468B2 (en) * 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
KR101711388B1 (ko) 2013-01-28 2017-03-02 삼성전자주식회사 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치
US9519944B2 (en) * 2014-09-02 2016-12-13 Apple Inc. Pipeline dependency resolution
US20160170770A1 (en) * 2014-12-12 2016-06-16 Qualcomm Incorporated Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media
US11061682B2 (en) * 2014-12-15 2021-07-13 Hyperion Core, Inc. Advanced processor architecture
US9354885B1 (en) 2016-01-08 2016-05-31 International Business Machines Corporation Selective suppression of instruction cache-related directory access
US9898296B2 (en) 2016-01-08 2018-02-20 International Business Machines Corporation Selective suppression of instruction translation lookaside buffer (ITLB) access

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5730177A (en) * 1980-07-30 1982-02-18 Fujitsu Ltd Address converter
JPS6386033A (ja) * 1986-09-30 1988-04-16 Fujitsu Ltd パイプライン処理方式
US5222240A (en) * 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
TW233354B (en) * 1994-03-04 1994-11-01 Motorola Inc Data processor with memory cache and method of operation
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
JP3745450B2 (ja) * 1996-05-13 2006-02-15 株式会社ルネサステクノロジ 並列処理プロセッサ
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US6301653B1 (en) 1998-10-14 2001-10-09 Conexant Systems, Inc. Processor containing data path units with forwarding paths between two data path units and a unique configuration or register blocks
JP3798563B2 (ja) * 1999-01-06 2006-07-19 株式会社東芝 命令キャッシュメモリ
US6343359B1 (en) * 1999-05-18 2002-01-29 Ip-First, L.L.C. Result forwarding cache
JP3848161B2 (ja) * 1999-12-09 2006-11-22 富士通株式会社 アドレス変換履歴テーブルを用いたメモリアクセス装置及び方法
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
KR100351504B1 (ko) * 2000-06-05 2002-09-05 삼성전자 주식회사 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
US6678815B1 (en) * 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
EP1199629A1 (en) * 2000-10-17 2002-04-24 STMicroelectronics S.r.l. Processor architecture with variable-stage pipeline
US6571318B1 (en) * 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
US6983346B2 (en) * 2002-05-10 2006-01-03 Texas Instruments Incorporated Reducing tag-ram accesses and accelerating cache operation during cache miss
US20040034759A1 (en) * 2002-08-16 2004-02-19 Lexra, Inc. Multi-threaded pipeline with context issue rules
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
TWI259659B (en) * 2005-05-13 2006-08-01 Ind Tech Res Inst Pipelined datapath with dynamically reconfigurable pipeline stages
US20060277425A1 (en) * 2005-06-07 2006-12-07 Renno Erik K System and method for power saving in pipelined microprocessors
US20070005933A1 (en) * 2005-06-29 2007-01-04 Kopec Brian J Preventing multiple translation lookaside buffer accesses for a same page in memory
US7725687B2 (en) * 2006-06-27 2010-05-25 Texas Instruments Incorporated Register file bypass with optional results storage and separate predication register file in a VLIW processor

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104317555A (zh) * 2014-10-15 2015-01-28 中国航天科技集团公司第九研究院第七七一研究所 Simd处理器中写合并和写撤销的处理装置和方法
CN104317555B (zh) * 2014-10-15 2017-03-15 中国航天科技集团公司第九研究院第七七一研究所 Simd处理器中写合并和写撤销的处理装置和方法
CN108572931A (zh) * 2017-03-14 2018-09-25 三星电子株式会社 存储器加载到加载熔合
CN108572931B (zh) * 2017-03-14 2023-03-14 三星电子株式会社 存储器加载到加载熔合
WO2018171319A1 (zh) * 2017-03-21 2018-09-27 华为技术有限公司 处理器和指令调度方法
CN108628639A (zh) * 2017-03-21 2018-10-09 华为技术有限公司 处理器和指令调度方法
CN108628639B (zh) * 2017-03-21 2021-02-12 华为技术有限公司 处理器和指令调度方法
US11256543B2 (en) 2017-03-21 2022-02-22 Huawei Technologies Co., Ltd. Processor and instruction scheduling method

Also Published As

Publication number Publication date
JP2011513843A (ja) 2011-04-28
US20090216993A1 (en) 2009-08-27
KR101221512B1 (ko) 2013-01-15
CN103365627B (zh) 2016-08-10
TW200943176A (en) 2009-10-16
JP2013239183A (ja) 2013-11-28
CN103365627A (zh) 2013-10-23
WO2009108462A1 (en) 2009-09-03
KR101183651B1 (ko) 2012-09-17
JP5661863B2 (ja) 2015-01-28
KR20100126442A (ko) 2010-12-01
US8145874B2 (en) 2012-03-27
EP2263149A1 (en) 2010-12-22

Similar Documents

Publication Publication Date Title
CN102089742A (zh) 执行单元内的数据转发系统和方法
US6687789B1 (en) Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US4648034A (en) Busy signal interface between master and slave processors in a computer system
US8255670B2 (en) Replay reduction for power saving
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
JP5837126B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
US6157994A (en) Microprocessor employing and method of using a control bit vector storage for instruction execution
KR101496009B1 (ko) 루프 버퍼 패킹
CN104657110B (zh) 具有固定数量的可变长度指令的指令高速缓存器
US6721877B1 (en) Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation
US9317285B2 (en) Instruction set architecture mode dependent sub-size access of register with associated status indication
US20210357226A1 (en) System and method for addressing data in memory
US7694110B1 (en) System and method of implementing microcode operations as subroutines
US6721876B1 (en) Branch predictor index generation using varied bit positions or bit order reversal
US6591343B1 (en) Predecode in parallel with TLB compare
CN113853584A (zh) 可变延时指令
JP2006514349A (ja) プロセッサのオペレーションを妨げることなくプロセッサの状態を判断するための方法及び装置
US20210132985A1 (en) Shadow latches in a shadow-latch configured register file for thread storage
US7711926B2 (en) Mapping system and method for instruction set processing
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统
WO2007087270A2 (en) Processor having a data mover engine that associates register addresses with memory addresses
US20050188183A1 (en) Digital signal processor having data address generator with speculative register file
WO1998002807A1 (en) A data address prediction structure and a method for operating the same

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110608