CN107368450A - 实现维护被拒指令的加载/存储单元的多片处理器的操作 - Google Patents
实现维护被拒指令的加载/存储单元的多片处理器的操作 Download PDFInfo
- Publication number
- CN107368450A CN107368450A CN201710320187.7A CN201710320187A CN107368450A CN 107368450 A CN107368450 A CN 107368450A CN 201710320187 A CN201710320187 A CN 201710320187A CN 107368450 A CN107368450 A CN 107368450A
- Authority
- CN
- China
- Prior art keywords
- instruction
- loading
- storage
- storage piece
- queue
- 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
- 238000011068 loading method Methods 0.000 claims abstract description 202
- 238000012163 sequencing technique Methods 0.000 claims abstract description 68
- 230000004044 response Effects 0.000 claims abstract description 25
- 230000008707 rearrangement Effects 0.000 claims description 51
- 238000000034 method Methods 0.000 claims description 49
- 230000003466 anti-cipated effect Effects 0.000 claims description 7
- 238000011017 operating method Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 13
- 230000001419 dependent effect Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000011084 recovery Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000000284 resting effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 235000013399 edible fruits Nutrition 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000005059 dormancy Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- DKOQGJHPHLTOJR-WHRDSVKCSA-N cefpirome Chemical compound N([C@@H]1C(N2C(=C(C[N+]=3C=4CCCC=4C=CC=3)CS[C@@H]21)C([O-])=O)=O)C(=O)\C(=N/OC)C1=CSC(N)=N1 DKOQGJHPHLTOJR-WHRDSVKCSA-N 0.000 description 1
- 229960000466 cefpirome Drugs 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
Abstract
本发明涉及实现维护被拒指令的加载/存储单元的多片处理器的操作。一种多片处理器的操作,所述多片处理器包括多个执行片、多个加载/存储片、以及一个或多个指令排序单元,其中操作包括:在加载/存储片处从指令排序单元接收要发出的指令;在所述加载/存储片处确定所述指令的拒绝条件;以及响应于确定所述指令的所述拒绝条件,在所述加载/存储片中维护所述指令的状态信息,而不是向所述指令排序单元通知所述指令的拒绝。
Description
技术领域
本发明的领域涉及数据处理,或者更具体地说,涉及用于多片处理器(multi-slice processor)的操作的方法和装置。
背景技术
1948年EDVAC计算机系统的开发通常被认为是计算机时代的开始。从此之后,计算机系统逐渐演变为非常复杂的设备。今天的计算机比诸如EDVAC之类的早期系统要复杂的多。计算机系统一般由硬件组件及软件组件、应用程序、操作系统、处理器、总线、存储器、输入/输出设备等组合而成。由于半导体工艺和计算机体系结构的发展促使计算机的性能不断提高,因此开发了更复杂的计算机软件以充分利用更高的硬件性能,从而使得今天的计算机系统比仅仅几年前的系统功能强大得多。
发展的计算机系统技术的一个领域是计算机处理器。随着数据中心中的计算机系统数量和移动计算设备数量的增加,对更高效的计算机处理器的需求也在增加。操作速度和功率消耗只是影响计算机处理器效率的计算机处理器技术的两个方面。
发明内容
在本说明书中公开用于多片处理器的操作的方法和装置。此类多片处理器包括多个执行片和多个加载/存储片,其中所述加载/存储片经由结果总线(results bus)耦合到所述执行片。此类多片处理器可以进一步包括一个或多个指令排序单元。此类多片处理器的操作包括:在加载/存储片处从指令排序单元接收要发出的指令;在所述加载/存储片处确定所述指令的拒绝条件;以及响应于确定所述指令的所述拒绝条件,在所述加载/存储片中维护所述指令的状态信息,而不是向所述指令排序单元通知所述指令的拒绝。
从如附图中示出的以下对本发明的示例性实施例的更具体的描述,本发明的上述和其它目标、特性和优点将变得显而易见,其中相同的标号通常表示本发明的示例性实施例的相同部件。
附图说明
图1示出根据本发明实施例的被配置用于多片处理器的操作的实例系统的框图;
图2示出根据本发明实施例的多片处理器的一部分的框图;
图3示出根据不同实施例的多片处理器的加载/存储片的一部分的框图,其中加载/存储片实现维护被拒绝的指令;
图4是示出根据不同实施例的多片处理器的操作的示例性方法的流程图,其中加载/存储片实现维护被拒绝的指令;
图5是示出根据不同实施例的多片处理器的操作的示例性方法的流程图,其中加载/存储片被配置为实现维护被拒绝的指令;
图6是示出根据不同实施例的多片处理器的操作的示例性方法的流程图,其中加载/存储片被配置为实现维护被拒绝的指令。
具体实施方式
参考附图描述根据本发明的用于多片处理器的操作的示例性方法和装置,从图1开始。图1示出根据本发明实施例的被配置用于多片处理器的操作的实例系统的框图。图1的系统包括计算机(152)形式的自动化计算机器的一个实例。
图1的计算机(152)包括至少一个计算机处理器(156)或“CPU”以及随机存取存储器(168)(“RAM”),RAM 168通过高速存储总线(166)和总线适配器(158)连接到处理器(156)和计算机(152)的其它组件。
图1的实例计算机处理器(156)可以被实现为多片处理器。如在本说明书中使用的,术语“多片”指具有多组类似或相同组件的处理器,其中每个组可以独立于所有其它组操作或者与一个或多个其它组协调操作。图1的多片处理器(156)例如包括数个执行片(“ES”)和数个加载/存储片(“LSS”)—其中加载/存储片通常可以被称为加载/存储单元。每个执行片可以被配置为提供支持指令执行的组件:发出队列、通用寄存器、历史缓冲区、算术逻辑单元(包括矢量标量单元、浮点单元和其它单元)等。每个加载/存储片可以被配置有支持数据移动操作的组件,这些数据移动操作例如包括从高速缓存或存储器加载数据或者将数据存储在高速缓存或存储器中。在某些实施例中,每个加载/存储片包括数据高速缓存。加载/存储片通过结果总线耦合到执行片。在某些实施例中,每个执行片可以与单个加载/存储片关联以便形成单个处理器片。在某些实施例中,多个处理器片可以被配置为一起操作。
除了执行片和加载/存储片之外,图1的实例多片处理器(156)还可以包括其它处理器组件。在图1的系统中,多片处理器(156)包括取回逻辑、分派逻辑、以及分支预测逻辑。此外,尽管在某些实施例中每个加载/存储片包括高速缓冲存储器,但多片处理器(156)还可以包括可由任何或所有处理器片访问的高速缓存。
尽管图1的实例中的多片处理器(156)被示为通过前端总线(162)、总线适配器(158)以及高速存储总线(166)耦合到RAM(168),但本领域的技术人员将认识到此类配置仅是一个实例实施方式。实际上,多片处理器(156)可以以各种配置耦合到计算机系统的其它组件。例如,在某些实施例中,多片处理器(156)可以包括被配置为直接耦合到存储总线(166)的存储控制器。在某些实施例中,多片处理器(156)可以支持诸如PCIe连接之类的直接外围连接。
在实例计算机(152)中的RAM(168)中存储数据处理应用(102),这是计算机程序指令模块,当由多片处理器(156)执行时,其可以提供任何数量的数据处理任务。此类数据处理应用的实例可以包括本领域的技术人员将想到的字处理应用、电子表格应用、数据库管理应用、媒体库应用、Web服务器应用等。在RAM(168)中还存储操作系统(154)。在被配置用于根据本发明实施例的多片处理器的操作的计算机中,可用的操作系统包括本领域的技术人员将想到的UNIXTM、LinuxTM、Microsoft WindowsTM、AIXTM、IBM的z/OSTM和其它操作系统。图1的实例中的操作系统(154)和数据处理应用(102)被示出在RAM(168)中,但此类软件的许多组件通常还存储在非易失性存储器中,例如存储在磁盘驱动器(170)上。
图1的计算机(152)包括磁盘驱动器适配器(172),其通过扩展总线(160)和总线适配器(158)耦合到处理器(156)和计算机(152)的其它组件。磁盘驱动器适配器(172)将磁盘驱动器(170)形式的非易失性数据存储装置连接到计算机(152)。在被配置用于根据本发明实施例的多片处理器的操作的计算机中,可用的磁盘驱动器适配器包括本领域的技术人员将想到的集成驱动电子设备(“IDE”)适配器、小型计算机系统接口(“SCSI”)适配器和其它适配器。非易失性计算机存储器还可以被实现为本领域的技术人员将想到的光盘驱动器、电可擦式可编程只读存储器(所谓的“EEPROM”或“闪存”)、RAM驱动器等。
图1的实例计算机(152)包括一个或多个输入/输出(“I/O”)适配器(178)。I/O适配器例如通过软件驱动器和计算机硬件实现面向用户的输入/输出,以便控制向诸如计算机显示屏之类的显示设备的输出、以及来自诸如键盘和鼠标之类的用户输入设备(181)的用户输入。图1的实例计算机(152)包括视频适配器(209),其是专门设计用于到诸如显示屏或计算机显示器之类的显示设备(180)的图形输出的I/O适配器的一个实例。视频适配器(209)通过高速视频总线(164)、总线适配器(158)、以及前端总线(162)(其也是高速总线)连接到处理器(156)。
图1的示例性计算机(152)包括通信适配器(167),其用于与其它计算机(182)的数据通信和与数据通信网络(100)的数据通信。此类数据通信可以通过RS-232连接,通过诸如通用串行总线(“USB”)之类的外部总线,通过诸如IP数据通信网络之类的数据通信网络,以及以本领域的技术人员将想到的其它方式顺序执行。通信适配器实现硬件级别的数据通信,通过这些数据通信,一个计算机直接或通过数据通信网络向另一个计算机发送数据通信。在被配置用于根据本发明实施例的多片处理器的操作的计算机中,可用的通信适配器的实例包括用于有线拨号通信的调制解调器、用于有线数据通信的以太网(IEEE 802.3)适配器、以及用于无线数据通信的802.11适配器。
构成图1中所示的示例性系统的计算机和其它设备的布置用于解释而不是用于限制。根据本发明的各种实施例的可用数据处理系统可以包括本领域的技术人员将想到的额外服务器、路由器、其它设备和对等架构(图1中未示出)。此类数据处理系统中的网络可以支持许多数据通信协议,例如包括本领域的技术人员将想到的TCP(传输控制协议)、IP(网际协议)、HTTP(超文本传输协议)、WAP(无线接入协议)、HDTP(手持设备传输协议)和其它协议。除了图1中所示的那些平台之外,本发明的各种实施例可以在各种硬件平台上实现。
为了进一步解释,图2示出根据本发明实施例的多片处理器的一部分的框图。图2的实例中的多片处理器包括分派网络(202)。分派网络(202)包括被配置为分派指令以便在执行片之间执行的逻辑。
图2的实例中的多片处理器还包括多个执行片(204a、204b-204n)。每个执行片包括通用寄存器(206)和历史缓冲区(208)。通用寄存器和历史缓冲区有时可以被称为映射工具,因为寄存器用于寄存器重命名和支持逻辑寄存器。
通用寄存器(206)被配置为存储目标为特定逻辑寄存器的最新指令和该指令的执行结果。逻辑寄存器是物理寄存器的抽象,其使能目标为同一物理寄存器的指令的无序执行。
当接收目标为同一特定逻辑寄存器的较新指令时,将通用寄存器中的条目移动到历史缓冲区,并且通用寄存器中的条目被该较新指令替换。历史缓冲区(208)可以被配置为存储目标为同一逻辑寄存器的许多指令。即,通用寄存器通常被配置为存储用于每个逻辑寄存器的单个最新指令,而历史缓冲区可以存储用于每个逻辑寄存器的许多非最新指令。
图2的多片处理器的每个执行片(204)还包括执行保留站(210)。执行保留站(210)可以被配置为发出指令以便执行。执行保留站(210)可以包括发出队列。发出队列可以包括用于指令的每个操作数的条目。执行保留站可以发出操作数以便由算术逻辑单元执行,或者经由结果总线(220)向加载/存储片(222a、222b、222c)发出操作数。
图2的实例中所示的算术逻辑单元(212)可以包括许多组件,这些组件例如包括加法逻辑、乘法逻辑、浮点单元、矢量/标量单元等。一旦算术逻辑单元执行了操作数,执行结果就可以被存储在结果缓冲区(214)中或者通过多路复用器(216)在结果总线(220)上提供执行结果。
结果总线(220)可以以各种方式被配置并且可以包括各种大小。在某些情况下,每个执行片可以被配置为在结果总线(220)的单条总线上提供结果。以类似的方式,每个加载/存储片可以被配置为在结果总线(220)的单条总线上提供结果。在此类配置中,包含四个处理器片的多片处理器可以具有包含八条总线的结果总线—分配给四个加载/存储片中的每一个的四条总线和分配给四个执行片中的每一个的四条总线。每个执行片可以被配置为窥探结果总线的任一总线上的结果。在某些实施例中,任一指令可以被分派到特定执行单元,并且然后被发出到任何其它片以便执行。因此,任何执行片均可以耦合到所有总线以便从任何其它片接收结果。此外,每个加载/存储片可以耦合到每条总线以便从任何执行片接收发出加载/存储指令。本领域的技术人员将认识到可以实施结果总线的许多不同配置。
图2的实例中的多片处理器还包括多个加载/存储片(222a、222b-222n)。除其他组件外,每个加载/存储片还包括下面针对图3描述的队列(224)、多路复用器(228)、数据高速缓存(232)、以及格式化逻辑(226)。队列接收要由加载/存储片(222)执行的加载和存储操作。格式化逻辑(226)将数据格式化成可以作为加载或存储指令的结果而在结果总线(220)上被返回给执行片的形式。
图2的实例多片处理器可以被配置为用于清仓(flush)和恢复(recovery)操作。清仓和恢复操作是其中将多片处理器的寄存器(通用寄存器和历史缓冲区)有效地“回滚”到先前状态的操作。依据本说明书中的上下文要求,可以使用术语“复原(restore)”和“恢复(recover)”作为同义词。可以出于许多原因而执行清仓和恢复操作,这些原因包括未命中的分支预测、异常等。作为典型的清仓和恢复操作的一个实例,考虑多片处理器的分派器随着时间并按照以下顺序分派:目标为逻辑寄存器5的指令A、目标为逻辑寄存器5的指令B、以及目标为逻辑寄存器5的指令C。在分派指令A时,将指令参数存储在用于逻辑寄存器5的通用寄存器条目中。然后,当分派指令B时,将指令A驱逐到历史缓冲区(将所有指令参数复制到历史缓冲区,包括逻辑寄存器和作为指令A的驱逐者的指令B的标识),并且将指令B的参数存储在用于逻辑寄存器5的通用寄存器条目中。当分派指令C时,将指令B驱逐到历史缓冲区,并且将指令C的参数存储在用于逻辑寄存器5的通用寄存器条目中。现在,考虑发出寄存器的清仓和恢复操作,其中分派发出与指令C的标识符相匹配的清仓标识符。在此类实例中,清仓和恢复包括丢弃用于逻辑寄存器5的通用寄存器条目中的指令C的参数,并且将指令B的参数从指令B的历史缓冲区移回到用于逻辑寄存器5的通用寄存器条目中。
在清仓和恢复操作期间,在现有技术处理器中,分派器被配置为停止向执行片分派新指令。此类指令可以被认为是目标指令或源指令。目标指令是目标为逻辑寄存器以便存储结果数据的指令。相比之下,源指令具有逻辑寄存器作为其源。目标指令在执行时将导致存储在寄存器文件的条目中的数据,而源指令利用此类数据作为用于执行指令的源。源指令在利用一个逻辑寄存器作为其源的同时,还可以将另一个逻辑寄存器作为目标以便存储指令结果。即,针对一个逻辑寄存器,指令可以被认为是源指令,并且针对另一个逻辑寄存器,同一指令可以被认为是目标指令。
图2的实例中的多片处理器还包括指令排序单元(240)。尽管被示为单个单元,但多个执行片中的每一个可以包括类似于指令排序单元(240)的相应指令排序单元。指令排序单元(240)可以获得分派的指令并且检查指令的依赖性,以便判定是否已传送相对于当前指令的所有较旧指令,或者可以可预测地很快传送当前指令所依赖的这些较旧指令的结果,以使得当前指令可以正确地执行。如果满足对当前指令的所有依赖性,则可以确定当前指令准备好发出,并且因此可以被发出—而不考虑由ITAG确定的指令的程序顺序。此类指令发出可以被称为“无序”执行,并且多片处理器可以被认为是无序机器。
在某些情况下,接收所发出的指令的加载/存储单元(例如加载/存储片)可能还不能处理该指令,并且指令排序单元(240)可以保持指令排队,直到加载/存储片可以处理该指令时为止。在发出指令之后,指令排序单元(240)可以至少部分地基于从加载/存储片接收的信号来跟踪指令的进度。
为了进一步解释,图3是示出实现架构组件的加载/存储片(222a)的扩展视图的框图,这些架构组件包括加载/存储访问队列(LSAQ)(224)、加载重新排序队列(LRQ)(304)、加载未命中队列(LMQ)(308)、存储重新排序队列(SRQ)(306)、数据高速缓存(232)以及其它组件。
在先前系统中,如果加载/存储单元从指令排序单元接收到指令,并且加载/存储单元由于某种原因不能处理该指令,则加载/存储单元将向指令排序单元通知指令被拒绝,并且加载/存储单元将丢弃与被拒绝指令相关的信息。在此类情况下,指令排序单元将继续维护信息以便跟踪并维护被拒绝的指令,直到将该指令重新发送到加载/存储单元。可能由于各种原因而拒绝指令,这些原因包括地址转换高速缓存中的地址未命中、设定的预测未命中、数据高速缓存存储冲突、加载未命中队列(308)的过载以及其它可能的拒绝条件。
与上述先前系统相反,加载/存储片(222a)被配置为确定从指令排序单元接收的指令的拒绝条件,但是,加载/存储片(222a)不是向指令排序单元发送拒绝信号,而是维护指令的跟踪和处理—包括可用于重新发布或重新发出指令的信息—直到拒绝条件被解决。此外,加载重新排序队列(304)或存储重新排序队列(306)中的条目可以被配置为维护用于跟踪否则将被拒绝并被从加载重新排序队列(304)移除的指令的信息。例如,如果加载/存储片(222a)确定针对给定加载或存储指令存在拒绝条件,则除了其它通知以外,加载/存储片内的逻辑可以通知加载重新排序队列(304)或存储重新排序队列(306)将该指令置于休眠状态达给定数量的周期,或者将该指令置于休眠状态直到被通知唤醒,或者立即重新发出该指令,以便执行其它操作。
以这种方式,加载/存储片(222a)能够节省周期(否则如果指令被拒绝到指令排序单元,则这些周期将丢失),因为加载/存储片(222a)除了比指令排序单元更快速地检测到拒绝条件的解决之外,还可以在拒绝条件被解决时更有效和快速地重新发出指令。例如,如果响应于确定已解决阻止指令完成的一个或多个拒绝条件,加载/存储片(222a)确定可以重新发出处于休眠状态的指令,则加载/存储片可以通知加载重新排序队列(304)或存储重新排序队列(306)立即或者在某一数量的周期之后重新发布或重新发出该指令。周期数量可以取决于拒绝条件的类型或者影响指令的重新发出或重新发布的其它因素。在本实例中,加载重新排序队列(304)或存储重新排序队列(306)可以通过向加载/存储访问队列(224)提供用于重新发出指令的信息来重新发出或重新发布指令,其中加载重新排序队列(304)或存储重新排序队列(306)可以沿着线路(314)与加载/存储访问队列(224)通信,并且可以沿着线路(313)提供用于重新发出或重新发布该指令的数据。
如果确定了拒绝条件,则由维护指令的加载/存储片(222a)带来的另一个改进是与指令排序单元相比,加载/存储片(222a)使用更少的资源(例如用于锁存器和其它组件的逻辑和电路)来维护指令。换言之,假设指令排序单元可能在处理指令完成时依赖于加载/存储片(222a),则在向加载/存储片(222a)提供指令之后,指令排序单元可以释放资源。
此外,指令排序单元(240)可以至少部分地基于与加载/存储片(222a)的通信,判定何时以及是否唤醒可能依赖于正在由加载/存储片(222a)处理的当前指令的指令。因此,如果加载/存储片(222a)确定存在拒绝条件,则加载/存储片(222a)延迟到指令排序单元(240)的唤醒相关指令的通知,以便防止指令排序单元(240)发出相关指令,由于缺少来自当前指令的结果,这些相关指令随后不能完成。以这种方式,指令排序单元(240)可以避免浪费重新发出不能完成的相关指令的执行周期。
例如,加载/存储片(222a)可以通过在处理加载指令时的不同点处生成信号,与指令排序单元(240)通信,这些信号指示要重新发出加载指令或者用于加载指令的数据有效。在某些情况下,响应于指令排序单元(240)从加载/存储片(222a)接收要重新发出给定指令的信号,指令排序单元(240)可以根据给定指令唤醒指令,并且预计给定指令在被重新发出之后将完成并提供有效数据。
加载/存储片(222a)还可以从存储层次结构的任何层检索数据,从本地数据高速缓冲(232)开始,并且根据需要在层次结构中向下延伸以便找到所请求的数据。所请求的数据可以在接收时被提供给通用寄存器、虚拟寄存器或某个其它目的地。所接收的数据还可以被存储在数据高速缓存(232)中以便后续访问。加载/存储片(222a)还可以管理有效地址到实地址的转换以便与存储层次结构的不同级别通信。
存储重新排序队列(306)可以包括用于跟踪高速缓存操作的顺序一致性的条目,并且可以将操作重新发出到加载/存储流水线中以便独立于执行片而执行。
加载未命中队列(308)可以向多层存储层次结构的一个或多个数据存储设备发出数据请求,其中数据请求可以对应于针对该数据的加载指令。
响应于数据沿着线路(302)返回到加载/存储片(222a),可以将数据传送到诸如结果总线(图2的220)之类的目的地,以便例如加载到通用寄存器中—其中数据的传送可以来自数据高速缓存(232)或者通过线路(310)。线路(310)绕过数据高速缓存(232)并且允许实现关键数据转发路径。加载重新排序队列(304)还可以使用线路(312)向指令排序单元或某个其它逻辑组件通知数据可用。
加载重新排序队列(304)可以跟踪向加载/存储片(222a)发出的高速缓存操作的执行,并且包括用于跟踪高速缓存操作的顺序一致性的条目以及其它属性。加载重新排序队列(304)还可以将操作重新发出到加载/存储流水线中以便执行,这提供独立于执行片的操作。
为了进一步解释,图4是示出实现被配置为维护被拒绝指令的加载/存储单元的多片处理器的操作的示例性方法的流程图。图4的方法可以由与图1-3的实例中的多片处理器类似的多片处理器执行。此类多片处理器可以包括指令排序单元(240)和多个加载/存储片(220a-220n),其中每个加载/存储片可以实现加载/存储访问队列(224)、加载重新排序队列(304)和存储重新排序队列(306),如上面针对图3所述。
图4的方法还包括在加载/存储片(222a)处接收(402)要发出的指令(452)。接收(402)指令可以由加载/存储片(222a)通过以下操作执行:在加载/存储访问队列(224)处接收数据请求,并且使操作移动通过加载/存储片(222a)流水线。可以从指令排序单元(240)接收指令(452),并且指令(452)可以是加载指令或存储指令。
在正常操作期间,加载操作可以访问已经存储在数据高速缓存中的数据,并且加载操作完成而不被重新发出。但是,在某些条件下,加载/存储片(222a)可以确定要重新发出或拒绝指令—其中可以立即或者在某一数量的周期(取决于指令的拒绝条件被解决)之后重新发出指令。尽管通常情况下重新发出的指令可以完成,但如果重新发出的指令未完成,则向指令排序单元(240)发送信号可能导致依赖该重新发出的指令的指令被过早地唤醒。同样,在某些条件下,存储指令可能无法执行。
图4的方法还包括在加载/存储片(224a)处确定(404)指令(452)的拒绝条件。确定(404)指令(452)的拒绝条件可以由加载/存储片(222a)通过以下操作执行:确定将导致加载/存储片(222a)拒绝指令的一个或多个条件,包括数据高速缓存当前不能读取所请求的数据地址、转换机制不能转换所请求的数据地址、加载/未命中队列太忙而无法处理指令请求、检测到的其它加载或存储指令危险、等待存储转发完成、以及用于拒绝指令的其它可能条件。
图4的方法还包括响应于在加载/存储片(222a)处确定指令的拒绝条件,在加载/存储片(222a)中维护(406)指令的状态信息,而不是向指令排序单元通知指令的拒绝。在加载/存储片(222a)中维护(406)指令的状态信息可以通过以下方式执行:在加载指令的情况下,由加载/存储片(222a)内的逻辑通知加载重新排序队列(304)修改存储状态信息的条目的状态,以便指示休眠状态或者否则将使指令空闲的状态。同样,在指令是存储指令的情况下,加载/存储片(222a)内的逻辑可以通知存储重新排序队列(306)修改存储状态信息的条目的状态,以便指示休眠状态或者否则将使指令空闲的状态。
此外,维护状态信息可以包括例如在加载重新排序队列(304)或存储重新排序队列(306)的条目内存储由于拒绝条件被解决或者由于预计在某一数量的周期内解决拒绝条件,在接收通知以便唤醒之后可用于重新发出或重新发布指令的信息。
例如,条目可以存储或维护先前保存的用于处理指令的信息,以使得重新发出的指令看起来与最初从指令排序单元接收的指令相同或类似。例如,条目可以存储或维护指令操作代码或操作码、用于确定高速缓存行中的哪些字节包含在指令中的有效地址信息、可以用于对指令排序的ITAG、可以描述由存储器的较低层使用的高速缓存行地址的实地址、各种控制位以及其它信息。此外,条目可以存储或维护对应于不同拒绝条件的一组等待状态,其中该信息可以是响应于对应拒绝条件被解决而唤醒指令的基础。
加载重新排序队列(304)和存储重新排序队列(306)被进一步配置为响应于被通知将指令置于休眠状态,不向提供指令的指令排序单元发送任何信号或通知以便防止指令排序单元过早地唤醒依赖于被置于休眠状态的指令的任何指令。
例如,响应于指令排序单元(240)在结果总线(220)上接收指示指令正在被重新发出的信号,指令排序单元(240)可以唤醒依赖于被重新发出的指令的指令,以预计随后是数据有效信号,所述数据有效信号将允许相关指令正确地执行。但是,如果加载/存储片(222a)延迟发送指令正在被重新发出的信号,则指令排序单元(240)不唤醒依赖于被重新发出的指令的指令,从而避免取消针对重新发出的指令(其在重新发出时未完成)唤醒的相关指令,这防止浪费从取消相关指令恢复的执行周期。
以这种方式,在指令排序单元向加载/存储片(222a)提供指令之后,加载/存储片(222a)使指令排序单元免于消耗任何跟踪该指令的资源,因为指令排序单元依赖于加载/存储片(222a)来处理指令完成,无论加载/存储片(222a)是否确定或标识任何拒绝条件,这些拒绝条件否则将需要指令排序单元维护该指令的状态信息。
为了进一步解释,图5是示出实现被配置为维护被拒绝指令的加载/存储单元的多片处理器的操作的示例性方法的流程图。图5的方法可以由与图1-3的实例中的多片处理器类似的多片处理器执行。此类多片处理器可以包括指令排序单元(240)和多个加载/存储片(220a-220n),其中每个加载/存储片可以实现加载/存储访问队列(224)、加载重新排序队列(304)和存储重新排序队列(306),如上面针对图3所述。
图5的方法类似于图4的方法,因为图5的方法也包括在加载/存储片(222a)处接收(402)要发出的指令(452);在加载/存储片(224a)处确定(404)指令(452)的拒绝条件;以及响应于在加载/存储片(222a)处确定指令的拒绝条件,在加载/存储片(222a)中维护(406)指令的状态信息,而不是向指令排序单元通知指令的拒绝。
但是,图5的方法不同于图4的方法,因为图5的方法进一步包括:确定(502)指令的拒绝条件已解决或正在等待解决;响应于确定指令的拒绝条件已解决或正在等待解决,从加载/存储片(222a)中重新发出(504)指令,并且向指令排序单元通知(506)指令正在被重新发出;确定(508)指令的数据从存储器的低层到达加载/存储片(222a)上的数据高速缓存(232)中;以及调度(510)要发出的指令以使得指令能够向目的地提供指令的数据而不访问数据高速缓存(232)。
确定(502)指令的拒绝条件已解决或正在等待解决可以由加载/存储片(222a)通过以下操作执行:确定指令的拒绝可以基于的一个或多个条件(如在(404)处确定)已被解决或者预计在某一数量的周期内被解决。例如,加载/存储片(222a)可以确定拒绝条件的解决,这些拒绝条件包括:数据高速缓存当前不能读取所请求的数据地址、转换机制不能转换所请求的数据地址、加载/未命中队列太忙而无法处理指令请求、检测到的其它加载或存储指令危险、等待存储转发完成、以及用于拒绝指令的其它可能条件。
加载/存储片(222a)可以进一步基于拒绝的类型,确定其中预计解决拒绝条件的周期数量,并且通知加载重新排序队列(304)或存储重新排序队列(306)。
从加载/存储片(222a)中重新发出(504)指令(452)可以由加载/存储片(222a)通过以下操作执行:通知加载重新排序队列(304)或存储重新排序队列(306)唤醒先前置于休眠状态的指令,或者在经过某一数量的周期之后唤醒。响应于接收要唤醒的信号,加载重新排序队列(304)或存储重新排序队列(306)可以沿着线路(314)用信号通知(552)加载/存储访问队列(224)重新发出或重新发布指令。
此外,加载/存储片(222a)可以确定唤醒处于休眠状态以等待解决拒绝条件的多个指令的顺序。换言之,当指令按照由指令排序单元确定的顺序到达加载/存储片(222a)时,加载/存储片(222a)可以对指令重新排序,以使得已完成的重新排序的指令的任何效果与从指令排序单元接收指令的顺序一致。例如,加载/存储片(222a)可以至少部分地基于指令的存在时间、指令接近完成的度量、或者根据可以利用承载数据转发的指令来确定唤醒优先级。
向指令排序单元(240)通知(506)指令正在被重新发出可以由加载重新排序队列(304)或存储重新排序队列(306)通过以下操作执行:向结果总线(220)生成沿着线路(312)通知指令排序单元(240)的信号(554)(其中信号(554)可以向指令排序单元(240)指示重新发出信号的标识)、以及标识被重新发出的指令的ITAG。
此外,加载/存储片(222a)可以将信号传播到指令排序单元(240),该信号指示由加载指令所请求、可由ITAG标识的数据在结果总线上并且有效,其中指令排序单元(240)接收该信号并且将该信号与数据有效并在结果总线(220)上的指示相对应。
确定(508)指令的数据从存储器的低层到达加载/存储片(222a)上的数据高速缓存(232)中可以由加载/存储片(222a)通过以下操作执行:从存储器的低层接收所请求的数据正在朝向数据高速缓存(232)移动并可以预计在给定数量的周期内可用的指示。此类信息可以允许加载/存储片(222a)及时地唤醒加载指令以便使用承载数据转发路径。
调度(510)要发出的指令以使得指令可以向目的地提供指令的数据而不访问数据高速缓存(232)可以由加载/存储片(222a)通过以下操作执行:通知加载重新排序队列(304)及时地唤醒休眠指令,以使得指令可以沿着承载数据转发路径(310)向目的地提供正在被接收的数据,而不等待所请求的数据首先被锁存或存储在数据高速缓存(232)中。换言之,指令利用上面针对图3描述的承载数据转发技术。例如,加载/存储片(222a)可以确定在将唤醒信号发送到加载重新排序队列(304)之前从当前点起等待多少个周期,以使得当被唤醒的指令已经历重新发出以便利用所请求的数据时,该数据是可用的。
以这种方式,加载/存储片(222a)可以在距当前点多个周期的时间点处唤醒指令,以使得被唤醒的和被重新发出的指令在完成时不被延迟。
为了进一步解释,图6是示出实现被配置为维护被拒绝指令的加载/存储单元的多片处理器的操作的示例性方法的流程图。图6的方法可以由与图1-3的实例中的多片处理器类似的多片处理器执行。此类多片处理器可以包括指令排序单元(240)和多个加载/存储片(220a-220n),其中每个加载/存储片可以实现加载/存储访问队列(224)、加载重新排序队列(304)和存储重新排序队列(306),如上面针对图3所述。
图6的方法类似于图4的方法,因为图6的方法也包括在加载/存储片(222a)处接收(402)要发出的指令(452);在加载/存储片(224a)处确定(404)指令(452)的拒绝条件;以及响应于在加载/存储片(222a)处确定指令的拒绝条件,在加载/存储片(222a)中维护(406)指令的状态信息,而不是向指令排序单元通知指令的拒绝。
但是,图6的方法不同于图4的方法,因为图6的方法进一步包括判定(602)指令(452)是加载还是存储,其中如果指令(452)是加载,则从加载/存储访问队列(224)向加载重新排序队列(304)提供(604)指令,并且如果指令(452)是存储,则从加载/存储访问队列(224)向存储重新排序队列(306)提供(606)指令。
判定(602)指令(452)是加载还是存储可以由加载/存储片(222a)通过以下操作执行:判定从指令排序单元接收的指令(452)的操作码是与加载操作还是存储操作相匹配。
从加载/存储访问队列(224)向加载重新排序队列(304)提供(604)指令(452)可以由加载/存储访问队列(224)通过以下操作执行:沿着线路(316)通过多路复用器(228)将指令(452)传播到加载重新排序队列(304)。
从加载/存储访问队列(224)向存储重新排序队列(306)提供(606)指令(452)可以由加载/存储访问队列(224)通过以下操作执行:沿着线路(316)通过多路复用器(228)将指令(452)传播到存储重新排序队列(306)。
以这种方式,加载/存储访问队列(224)可以将加载和存储指令路由到对应队列以便处理指令,其中加载重新排序队列(304)和存储重新排序队列(306)均包括这样的条目:这些条目被配置为维护用于维护被确定为经历拒绝条件的指令的信息,以使得所维护的信息可以用于重新唤醒并重新发出等待解决一个或多个拒绝条件的指令。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是—但不限于—电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读存储介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
将从以上描述中理解,可以在本发明的各种实施例中做出修改和更改而不偏离本发明的真实精神。本说明书中的描述仅为示例目的并且不应以限制的意义来理解所述描述。本发明的范围仅由以下权利要求的语言来限定。
Claims (20)
1.一种多片处理器的操作方法,所述多片处理器包括指令排序单元、多个执行片、以及多个加载/存储片,所述方法包括:
在加载/存储片处从所述指令排序单元接收要发出的指令;
在所述加载/存储片处确定所述指令的拒绝条件;以及
响应于确定所述指令的所述拒绝条件,在所述加载/存储片中维护所述指令的状态信息,而不是向所述指令排序单元通知所述指令的拒绝。
2.根据权利要求1所述的方法,进一步包括:
确定所述指令的所述拒绝条件已解决或正在等待解决;以及
响应于确定所述指令的所述拒绝条件已解决或正在等待解决,从所述加载/存储片中重新发出所述指令。
3.根据权利要求2所述的方法,进一步包括:
响应于确定所述指令的所述拒绝条件已解决或正在等待解决,向所述指令排序单元通知所述指令正在被重新发出。
4.根据权利要求2所述的方法,其中所述指令是加载指令,并且其中所述方法进一步包括:
确定所述指令的数据从存储器的低层到达所述加载/存储片上的数据高速缓存中;以及
调度所述要发出的指令,以使得所述指令能够向目的地提供所述指令的数据而不访问所述数据高速缓存。
5.根据权利要求1所述的方法,进一步包括:
确定所述拒绝条件被预计在某一数量的周期内解决;以及
响应于确定所述拒绝条件被预计在所述数量的周期内解决,在经过所述数量的周期的同时调度所述要发出的指令。
6.根据权利要求1所述的方法,其中所述加载/存储片包括加载/存储访问队列和加载重新排序队列,并且其中接收所述要发出的指令包括:
确定所述指令是加载指令;以及
从所述加载/存储访问队列向所述加载重新排序队列提供所述指令。
7.根据权利要求1所述的方法,其中所述加载/存储片包括加载/存储访问队列和存储重新排序队列,并且其中接收所述要发出的指令包括:
确定所述指令是存储指令;以及
从所述加载/存储访问队列向所述存储重新排序队列提供所述指令。
8.一种多片处理器,包括:
指令排序单元、多个执行片、以及多个加载/存储片,其中所述多片处理器被配置为执行:
在加载/存储片处从所述指令排序单元接收要发出的指令;
在所述加载/存储片处确定所述指令的拒绝条件;以及
响应于确定所述指令的所述拒绝条件,在所述加载/存储片中维护所述指令的状态信息,而不是向所述指令排序单元通知所述指令的拒绝。
9.根据权利要求8所述的多片处理器,其中所述多片处理器被进一步配置为执行:
确定所述指令的所述拒绝条件已解决或正在等待解决;以及
响应于确定所述指令的所述拒绝条件已解决或正在等待解决,从所述加载/存储片中重新发出所述指令。
10.根据权利要求9所述的多片处理器,其中所述多片处理器被进一步配置为执行:
响应于确定所述指令的所述拒绝条件已解决或正在等待解决,向所述指令排序单元通知所述指令正在被重新发出。
11.根据权利要求9所述的多片处理器,其中所述指令是加载指令,并且其中所述多片处理器被进一步配置为执行:
确定所述指令的数据从存储器的低层到达所述加载/存储片上的数据高速缓存中;以及
调度所述要发出的指令,以使得所述指令能够向目的地提供所述指令的数据而不访问所述数据高速缓存。
12.根据权利要求8所述的多片处理器,其中所述多片处理器被进一步配置为执行:
确定所述拒绝条件被预计在某一数量的周期内解决;以及
响应于确定所述拒绝条件被预计在所述数量的周期内解决,在经过所述数量的周期的同时调度所述要发出的指令。
13.根据权利要求8所述的多片处理器,其中所述加载/存储片包括加载/存储访问队列和加载重新排序队列,并且其中接收所述要发出的指令包括:
确定所述指令是加载指令;以及
从所述加载/存储访问队列向所述加载重新排序队列提供所述指令。
14.根据权利要求8所述的多片处理器,其中所述加载/存储片包括加载/存储访问队列和存储重新排序队列,并且其中接收所述要发出的指令包括:
确定所述指令是存储指令;以及
从所述加载/存储访问队列向所述存储重新排序队列提供所述指令。
15.一种装置,包括:
指令排序单元、多个执行片、以及多个加载/存储片,其中所述多片处理器被配置为执行:
在加载/存储片处从所述指令排序单元接收要发出的指令;
在所述加载/存储片处确定所述指令的拒绝条件;以及
响应于确定所述指令的所述拒绝条件,在所述加载/存储片中维护所述指令的状态信息,而不是向所述指令排序单元通知所述指令的拒绝。
16.根据权利要求15所述的装置,其中所述多片处理器被进一步配置为执行:
确定所述指令的所述拒绝条件已解决或正在等待解决;以及
响应于确定所述指令的所述拒绝条件已解决或正在等待解决,从所述加载/存储片中重新发出所述指令。
17.根据权利要求16所述的装置,其中所述多片处理器被进一步配置为执行:
响应于确定所述指令的所述拒绝条件已解决或正在等待解决,向所述指令排序单元通知所述指令正在被重新发出。
18.根据权利要求17所述的装置,其中所述指令是加载指令,并且其中所述多片处理器被进一步配置为执行:
确定所述指令的数据从存储器的低层到达所述加载/存储片上的数据高速缓存中;以及
调度所述要发出的指令,以使得所述指令能够向目的地提供所述指令的数据而不访问所述数据高速缓存。
19.根据权利要求15所述的装置,其中所述多片处理器被进一步配置为执行:
确定所述拒绝条件被预计在某一数量的周期内解决;以及
响应于确定所述拒绝条件被预计在所述数量的周期内解决,在经过所述数量的周期的同时调度所述要发出的指令。
20.根据权利要求15所述的装置,其中所述加载/存储片包括加载/存储访问队列和加载重新排序队列,并且其中接收所述要发出的指令包括:
确定所述指令是加载指令;以及
从所述加载/存储访问队列向所述加载重新排序队列提供所述指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/152257 | 2016-05-11 | ||
US15/152,257 US10037229B2 (en) | 2016-05-11 | 2016-05-11 | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107368450A true CN107368450A (zh) | 2017-11-21 |
CN107368450B CN107368450B (zh) | 2020-09-01 |
Family
ID=60295120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710320187.7A Active CN107368450B (zh) | 2016-05-11 | 2017-05-09 | 多片处理器及其操作方法 |
Country Status (2)
Country | Link |
---|---|
US (4) | US10037229B2 (zh) |
CN (1) | CN107368450B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427654A (zh) * | 2020-04-13 | 2020-07-17 | 北京达佳互联信息技术有限公司 | 一种指令处理方法及装置 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
US10402263B2 (en) * | 2017-12-04 | 2019-09-03 | Intel Corporation | Accelerating memory fault resolution by performing fast re-fetching |
CN117270971B (zh) * | 2023-09-15 | 2024-03-19 | 上海合芯数字科技有限公司 | 加载队列控制方法、装置及处理器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526896A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微系统有限公司 | 嵌入式处理器的加载/存储单元 |
CN101542430A (zh) * | 2006-09-29 | 2009-09-23 | Mips技术公司 | 用于处理器的加载/存储单元及其应用 |
CN102282540A (zh) * | 2008-12-17 | 2011-12-14 | 超威半导体公司 | 带有共享指令流的协处理器单元 |
CN105487841A (zh) * | 2014-12-14 | 2016-04-13 | 上海兆芯集成电路有限公司 | 用以改善在处理器中重新执行加载的装置与方法 |
Family Cites Families (216)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5095424A (en) | 1986-10-17 | 1992-03-10 | Amdahl Corporation | Computer system architecture implementing split instruction and operand cache line-pair-state management |
US4858113A (en) | 1987-04-10 | 1989-08-15 | The United States Of America As Represented By The Director Of The National Security Agency | Reconfigurable pipelined processor |
US5055999A (en) | 1987-12-22 | 1991-10-08 | Kendall Square Research Corporation | Multiprocessor digital data processing system |
US5471593A (en) | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
CA2073516A1 (en) | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
US5553305A (en) | 1992-04-14 | 1996-09-03 | International Business Machines Corporation | System for synchronizing execution by a processing element of threads within a process using a state indicator |
US5353426A (en) | 1992-04-29 | 1994-10-04 | Sun Microsystems, Inc. | Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete |
US5418922A (en) | 1992-04-30 | 1995-05-23 | International Business Machines Corporation | History table for set prediction for accessing a set associative cache |
US5630149A (en) | 1993-10-18 | 1997-05-13 | Cyrix Corporation | Pipelined processor with register renaming hardware to accommodate multiple size registers |
US6138230A (en) | 1993-10-18 | 2000-10-24 | Via-Cyrix, Inc. | Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline |
US6073231A (en) | 1993-10-18 | 2000-06-06 | Via-Cyrix, Inc. | Pipelined processor with microcontrol of register translation hardware |
US5724536A (en) | 1994-01-04 | 1998-03-03 | Intel Corporation | Method and apparatus for blocking execution of and storing load operations during their execution |
EP0686912B1 (en) | 1994-06-03 | 1998-12-16 | Motorola, Inc. | Data processor with an execution unit for performing load instructions and method of operation |
US5680597A (en) | 1995-01-26 | 1997-10-21 | International Business Machines Corporation | System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions |
US6112019A (en) | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
JP3479385B2 (ja) | 1995-06-29 | 2003-12-15 | 東芝マイクロエレクトロニクス株式会社 | 情報処理装置 |
US6356918B1 (en) | 1995-07-26 | 2002-03-12 | International Business Machines Corporation | Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US7301541B2 (en) | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US5897651A (en) | 1995-11-13 | 1999-04-27 | International Business Machines Corporation | Information handling system including a direct access set associative cache and method for accessing same |
US5809530A (en) | 1995-11-13 | 1998-09-15 | Motorola, Inc. | Method and apparatus for processing multiple cache misses using reload folding and store merging |
US5809522A (en) | 1995-12-18 | 1998-09-15 | Advanced Micro Devices, Inc. | Microprocessor system with process identification tag entries to reduce cache flushing after a context switch |
US5822602A (en) | 1996-07-23 | 1998-10-13 | S3 Incorporated | Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity |
US5996068A (en) | 1997-03-26 | 1999-11-30 | Lucent Technologies Inc. | Method and apparatus for renaming registers corresponding to multiple thread identifications |
US5913048A (en) | 1997-03-31 | 1999-06-15 | International Business Machines Corporation | Dispatching instructions in a processor supporting out-of-order execution |
US6021485A (en) | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
US6170051B1 (en) | 1997-08-01 | 2001-01-02 | Micron Technology, Inc. | Apparatus and method for program level parallelism in a VLIW processor |
US6026478A (en) | 1997-08-01 | 2000-02-15 | Micron Technology, Inc. | Split embedded DRAM processor |
US6487578B2 (en) | 1997-09-29 | 2002-11-26 | Intel Corporation | Dynamic feedback costing to enable adaptive control of resource utilization |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6549930B1 (en) | 1997-11-26 | 2003-04-15 | Compaq Computer Corporation | Method for scheduling threads in a multithreaded processor |
US6044448A (en) | 1997-12-16 | 2000-03-28 | S3 Incorporated | Processor having multiple datapath instances |
US6145054A (en) | 1998-01-21 | 2000-11-07 | Sun Microsystems, Inc. | Apparatus and method for handling multiple mergeable misses in a non-blocking cache |
US6108753A (en) | 1998-03-31 | 2000-08-22 | International Business Machines Corporation | Cache error retry technique |
US6230257B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US6092175A (en) | 1998-04-02 | 2000-07-18 | University Of Washington | Shared register storage mechanisms for multithreaded computer systems with out-of-order execution |
US6098166A (en) | 1998-04-10 | 2000-08-01 | Compaq Computer Corporation | Speculative issue of instructions under a load miss shadow |
US6205519B1 (en) | 1998-05-27 | 2001-03-20 | Hewlett Packard Company | Cache management for a multi-threaded processor |
JP3786521B2 (ja) | 1998-07-01 | 2006-06-14 | 株式会社日立製作所 | 半導体集積回路及びデータ処理システム |
US6073215A (en) | 1998-08-03 | 2000-06-06 | Motorola, Inc. | Data processing system having a data prefetch mechanism and method therefor |
US6119203A (en) | 1998-08-03 | 2000-09-12 | Motorola, Inc. | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system |
ATE557343T1 (de) | 1998-08-24 | 2012-05-15 | Microunity Systems Eng | Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand |
US6286027B1 (en) | 1998-11-30 | 2001-09-04 | Lucent Technologies Inc. | Two step thread creation with register renaming |
US6237081B1 (en) | 1998-12-16 | 2001-05-22 | International Business Machines Corporation | Queuing method and apparatus for facilitating the rejection of sequential instructions in a processor |
US6418525B1 (en) | 1999-01-29 | 2002-07-09 | International Business Machines Corporation | Method and apparatus for reducing latency in set-associative caches using set prediction |
US6738896B1 (en) | 1999-02-01 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Method and apparatus for determining availability of a queue which allows random insertion |
US6336183B1 (en) | 1999-02-26 | 2002-01-01 | International Business Machines Corporation | System and method for executing store instructions |
US6336168B1 (en) | 1999-02-26 | 2002-01-01 | International Business Machines Corporation | System and method for merging multiple outstanding load miss instructions |
US6269427B1 (en) | 1999-03-18 | 2001-07-31 | International Business Machines Corporation | Multiple load miss handling in a cache memory system |
US6418513B1 (en) | 1999-06-25 | 2002-07-09 | International Business Machines Corporation | Queue-less and state-less layered local data cache mechanism |
DE60035422D1 (de) | 1999-08-13 | 2007-08-16 | Sun Microsystems Inc | Elegante verteilung des lastausgleichs für anwendungs-server |
US6463524B1 (en) | 1999-08-26 | 2002-10-08 | International Business Machines Corporation | Superscalar processor and method for incrementally issuing store instructions |
US6654876B1 (en) | 1999-11-04 | 2003-11-25 | International Business Machines Corporation | System for rejecting and reissuing instructions after a variable delay time period |
US6553480B1 (en) | 1999-11-05 | 2003-04-22 | International Business Machines Corporation | System and method for managing the execution of instruction groups having multiple executable instructions |
GB2356324B (en) | 1999-11-10 | 2001-10-17 | 3Com Corp | Signal receiver including band-pass filtering and compensation for baseline wander |
US7512724B1 (en) | 1999-11-19 | 2009-03-31 | The United States Of America As Represented By The Secretary Of The Navy | Multi-thread peripheral processing using dedicated peripheral bus |
US6357016B1 (en) | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US6564315B1 (en) | 2000-01-03 | 2003-05-13 | Advanced Micro Devices, Inc. | Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction |
US20020194251A1 (en) | 2000-03-03 | 2002-12-19 | Richter Roger K. | Systems and methods for resource usage accounting in information management environments |
US7124160B2 (en) | 2000-03-08 | 2006-10-17 | Sun Microsystems, Inc. | Processing architecture having parallel arithmetic capability |
US6988181B2 (en) | 2000-03-08 | 2006-01-17 | Sun Microsystems, Inc. | VLIW computer processing architecture having a scalable number of register files |
EP1150213B1 (en) | 2000-04-28 | 2012-01-25 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Data processing system and method |
US6965991B1 (en) | 2000-05-12 | 2005-11-15 | Pts Corporation | Methods and apparatus for power control in a scalable array of processor elements |
US7836317B2 (en) | 2000-05-12 | 2010-11-16 | Altera Corp. | Methods and apparatus for power control in a scalable array of processor elements |
US7086053B2 (en) | 2000-06-12 | 2006-08-01 | Sun Microsystems, Inc. | Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension |
US6868491B1 (en) | 2000-06-22 | 2005-03-15 | International Business Machines Corporation | Processor and method of executing load instructions out-of-order having reduced hazard penalty |
US7100028B2 (en) | 2000-08-09 | 2006-08-29 | Advanced Micro Devices, Inc. | Multiple entry points for system call instructions |
US6728866B1 (en) | 2000-08-31 | 2004-04-27 | International Business Machines Corporation | Partitioned issue queue and allocation strategy |
US6732236B2 (en) | 2000-12-18 | 2004-05-04 | Redback Networks Inc. | Cache retry request queue |
US20020165999A1 (en) | 2001-03-07 | 2002-11-07 | Ajile Systems, Inc. | Apparatus and method for interfacing hardware events with software events |
US6978459B1 (en) | 2001-04-13 | 2005-12-20 | The United States Of America As Represented By The Secretary Of The Navy | System and method for processing overlapping tasks in a programmable network processor environment |
US6948051B2 (en) | 2001-05-15 | 2005-09-20 | International Business Machines Corporation | Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width |
US6954846B2 (en) | 2001-08-07 | 2005-10-11 | Sun Microsystems, Inc. | Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode |
US6839828B2 (en) | 2001-08-14 | 2005-01-04 | International Business Machines Corporation | SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode |
US20030120882A1 (en) | 2001-12-20 | 2003-06-26 | Granston Elana D. | Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor |
US6901504B2 (en) | 2002-01-22 | 2005-05-31 | International Business Machines Corporation | Result forwarding of either input operand to same operand input to reduce forwarding path |
JP2005516303A (ja) | 2002-01-30 | 2005-06-02 | リアル・エンタープライズ・ソリューションズ・ディヴェロップメント・ビー・ヴィー | 優先スケジューリングを備えたマルチプログラミングコンピュータシステムにおける優先レベルを設定する方法、マルチプログラミングコンピュータシステムおよびそれらのプログラム |
US7398374B2 (en) | 2002-02-27 | 2008-07-08 | Hewlett-Packard Development Company, L.P. | Multi-cluster processor for processing instructions of one or more instruction threads |
US20030182537A1 (en) | 2002-03-21 | 2003-09-25 | International Business Machines Corporation | Mechanism to assign more logical load/store tags than available physical registers in a microprocessor system |
US6944744B2 (en) | 2002-08-27 | 2005-09-13 | Advanced Micro Devices, Inc. | Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor |
US8108656B2 (en) | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US7024543B2 (en) | 2002-09-13 | 2006-04-04 | Arm Limited | Synchronising pipelines in a data processing apparatus |
US7100157B2 (en) | 2002-09-24 | 2006-08-29 | Intel Corporation | Methods and apparatus to avoid dynamic micro-architectural penalties in an in-order processor |
US20040136241A1 (en) | 2002-10-31 | 2004-07-15 | Lockheed Martin Corporation | Pipeline accelerator for improved computing architecture and related system and method |
US7600096B2 (en) | 2002-11-19 | 2009-10-06 | Stmicroelectronics, Inc. | Coprocessor extension architecture built using a novel split-instruction transaction model |
US20040111594A1 (en) | 2002-12-05 | 2004-06-10 | International Business Machines Corporation | Multithreading recycle and dispatch mechanism |
AU2003283672A1 (en) | 2002-12-30 | 2004-07-22 | Koninklijke Philips Electronics N.V. | A method for accessing a bus in a clustered instruction level parallelism processor |
US7191320B2 (en) | 2003-02-11 | 2007-03-13 | Via Technologies, Inc. | Apparatus and method for performing a detached load operation in a pipeline microprocessor |
US7467326B2 (en) | 2003-02-28 | 2008-12-16 | Maxwell Technologies, Inc. | Self-correcting computer |
US7290261B2 (en) | 2003-04-24 | 2007-10-30 | International Business Machines Corporation | Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor |
US20040216101A1 (en) | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor |
US7155600B2 (en) | 2003-04-24 | 2006-12-26 | International Business Machines Corporation | Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor |
US7370177B2 (en) | 2003-04-25 | 2008-05-06 | International Business Machines Corporation | Mechanism for avoiding check stops in speculative accesses while operating in real mode |
US7366877B2 (en) | 2003-09-17 | 2008-04-29 | International Business Machines Corporation | Speculative instruction issue in a simultaneously multithreaded processor |
US20050138290A1 (en) | 2003-12-23 | 2005-06-23 | Intel Corporation | System and method for instruction rescheduling |
US7669035B2 (en) | 2004-01-21 | 2010-02-23 | The Charles Stark Draper Laboratory, Inc. | Systems and methods for reconfigurable computing |
US7617496B2 (en) | 2004-04-23 | 2009-11-10 | Apple Inc. | Macroscalar processor architecture |
US7395419B1 (en) | 2004-04-23 | 2008-07-01 | Apple Inc. | Macroscalar processor architecture |
US7730456B2 (en) | 2004-05-19 | 2010-06-01 | Sony Computer Entertainment Inc. | Methods and apparatus for handling processing errors in a multi-processing system |
US7478198B2 (en) | 2004-05-24 | 2009-01-13 | Intel Corporation | Multithreaded clustered microarchitecture with dynamic back-end assignment |
KR20070072848A (ko) | 2004-06-08 | 2007-07-06 | 유니버시티 오브 로체스터 | 밀집된 클러스터에서 통신-병렬성 트레이드 오프를동적으로 관리하는 방법 |
US7478225B1 (en) | 2004-06-30 | 2009-01-13 | Sun Microsystems, Inc. | Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor |
US7509484B1 (en) | 2004-06-30 | 2009-03-24 | Sun Microsystems, Inc. | Handling cache misses by selectively flushing the pipeline |
US7721069B2 (en) | 2004-07-13 | 2010-05-18 | 3Plus1 Technology, Inc | Low power, high performance, heterogeneous, scalable processor architecture |
US8166282B2 (en) | 2004-07-21 | 2012-04-24 | Intel Corporation | Multi-version register file for multithreading processors with live-in precomputation |
US7890735B2 (en) | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US7302527B2 (en) | 2004-11-12 | 2007-11-27 | International Business Machines Corporation | Systems and methods for executing load instructions that avoid order violations |
US7469318B2 (en) | 2005-02-10 | 2008-12-23 | International Business Machines Corporation | System bus structure for large L2 cache array topology with different latency domains |
US8230423B2 (en) | 2005-04-07 | 2012-07-24 | International Business Machines Corporation | Multithreaded processor architecture with operational latency hiding |
JP4893621B2 (ja) | 2005-05-20 | 2012-03-07 | ソニー株式会社 | 信号処理装置 |
US7401188B2 (en) | 2005-06-29 | 2008-07-15 | Intel Corporation | Method, device, and system to avoid flushing the contents of a cache by not inserting data from large requests |
US20070022277A1 (en) | 2005-07-20 | 2007-01-25 | Kenji Iwamura | Method and system for an enhanced microprocessor |
US20070083735A1 (en) | 2005-08-29 | 2007-04-12 | Glew Andrew F | Hierarchical processor |
US8099556B2 (en) | 2005-09-13 | 2012-01-17 | Arm Limited | Cache miss detection in a data processing apparatus |
US7350056B2 (en) | 2005-09-27 | 2008-03-25 | International Business Machines Corporation | Method and apparatus for issuing instructions from an issue queue in an information handling system |
US7793278B2 (en) | 2005-09-30 | 2010-09-07 | Intel Corporation | Systems and methods for affine-partitioning programs onto multiple processing units |
US20070101102A1 (en) | 2005-10-27 | 2007-05-03 | Dierks Herman D Jr | Selectively pausing a software thread |
US7739476B2 (en) | 2005-11-04 | 2010-06-15 | Apple Inc. | R and C bit update handling |
US8074224B1 (en) | 2005-12-19 | 2011-12-06 | Nvidia Corporation | Managing state information for a multi-threaded processor |
US7454585B2 (en) | 2005-12-22 | 2008-11-18 | International Business Machines Corporation | Efficient and flexible memory copy operation |
US7461239B2 (en) | 2006-02-02 | 2008-12-02 | International Business Machines Corporation | Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines |
US8812822B2 (en) | 2006-02-09 | 2014-08-19 | International Business Machines Corporation | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss |
EP1990713B1 (en) | 2006-02-28 | 2013-04-10 | Fujitsu Ltd. | Branch predicting device for computer |
US8131980B2 (en) | 2006-09-11 | 2012-03-06 | International Business Machines Corporation | Structure for dynamic livelock resolution with variable delay memory access queue |
US7472260B2 (en) | 2006-10-10 | 2008-12-30 | P.A. Semi, Inc. | Early retirement of store operation past exception reporting pipeline stage in strongly ordered processor with load/store queue entry retained until completion |
JP2008123045A (ja) | 2006-11-08 | 2008-05-29 | Matsushita Electric Ind Co Ltd | プロセッサ |
US20080162889A1 (en) | 2007-01-03 | 2008-07-03 | International Business Machines Corporation | Method and apparatus for implementing efficient data dependence tracking for multiprocessor architectures |
US8184686B2 (en) | 2007-01-10 | 2012-05-22 | Cortina Systems, Inc. | System and method for recovering data received over a communication channel |
US7757068B2 (en) | 2007-01-16 | 2010-07-13 | Oracle America, Inc. | Method and apparatus for measuring performance during speculative execution |
US7685410B2 (en) | 2007-02-13 | 2010-03-23 | Global Foundries Inc. | Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects |
CN100456230C (zh) | 2007-03-19 | 2009-01-28 | 中国人民解放军国防科学技术大学 | 超长指令字与单指令流多数据流融合的计算群单元 |
US7707390B2 (en) | 2007-04-25 | 2010-04-27 | Arm Limited | Instruction issue control within a multi-threaded in-order superscalar processor |
US8555039B2 (en) | 2007-05-03 | 2013-10-08 | Qualcomm Incorporated | System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor |
US8046566B2 (en) | 2007-05-14 | 2011-10-25 | International Business Machines Corporation | Method to reduce power consumption of a register file with multi SMT support |
GB2449454B (en) | 2007-05-22 | 2011-08-24 | Advanced Risc Mach Ltd | Control data modification within a cache memory |
US9250899B2 (en) | 2007-06-13 | 2016-02-02 | International Business Machines Corporation | Method and apparatus for spatial register partitioning with a multi-bit cell register file |
US7669036B2 (en) | 2007-06-14 | 2010-02-23 | Qualcomm Incorporated | Direct path monitoring by primary processor to each status register in pipeline chained secondary processors for task allocation via downstream communication |
JP4913685B2 (ja) | 2007-07-04 | 2012-04-11 | 株式会社リコー | Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法 |
US7979677B2 (en) | 2007-08-03 | 2011-07-12 | International Business Machines Corporation | Adaptive allocation of reservation station entries to an instruction set with variable operands in a microprocessor |
US20090113182A1 (en) | 2007-10-24 | 2009-04-30 | Abernathy Christopher M | System and Method for Issuing Load-Dependent Instructions from an Issue Queue in a Processing Unit |
JP2009157887A (ja) | 2007-12-28 | 2009-07-16 | Nec Corp | ロードストアキューの制御方法及びその制御システム |
US7694112B2 (en) | 2008-01-31 | 2010-04-06 | International Business Machines Corporation | Multiplexing output from second execution unit add/saturation processing portion of wider width intermediate result of first primitive execution unit for compound computation |
CN101926121A (zh) | 2008-02-01 | 2010-12-22 | 拉姆伯斯公司 | 具有增强的时钟和数据恢复的接收器 |
US8086831B2 (en) | 2008-02-01 | 2011-12-27 | International Business Machines Corporation | Indexed table circuit having reduced aliasing |
US8243866B2 (en) | 2008-03-05 | 2012-08-14 | Oracle America, Inc. | Analog baud rate clock and data recovery |
US8732438B2 (en) | 2008-04-16 | 2014-05-20 | Oracle America, Inc. | Anti-prefetch instruction |
US9146744B2 (en) | 2008-05-06 | 2015-09-29 | Oracle America, Inc. | Store queue having restricted and unrestricted entries |
US20090300319A1 (en) | 2008-06-02 | 2009-12-03 | Ehud Cohen | Apparatus and method for memory structure to handle two load operations |
US8135942B2 (en) | 2008-08-28 | 2012-03-13 | International Business Machines Corpration | System and method for double-issue instructions using a dependency matrix and a side issue queue |
JP5357475B2 (ja) | 2008-09-09 | 2013-12-04 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
US8135941B2 (en) | 2008-09-19 | 2012-03-13 | International Business Machines Corporation | Vector morphing mechanism for multiple processor cores |
JP5300407B2 (ja) | 2008-10-20 | 2013-09-25 | 株式会社東芝 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
US8041928B2 (en) | 2008-12-22 | 2011-10-18 | International Business Machines Corporation | Information handling system with real and virtual load/store instruction issue queue |
US8103852B2 (en) | 2008-12-22 | 2012-01-24 | International Business Machines Corporation | Information handling system including a processor with a bifurcated issue queue |
US8140832B2 (en) | 2009-01-23 | 2012-03-20 | International Business Machines Corporation | Single step mode in a software pipeline within a highly threaded network on a chip microprocessor |
US8086801B2 (en) | 2009-04-08 | 2011-12-27 | International Business Machines Corporation | Loading data to vector renamed register from across multiple cache lines |
US8271765B2 (en) | 2009-04-08 | 2012-09-18 | International Business Machines Corporation | Managing instructions for more efficient load/store unit usage |
US8489794B2 (en) | 2010-03-12 | 2013-07-16 | Lsi Corporation | Processor bus bridge for network processors or the like |
US8325793B2 (en) | 2009-05-05 | 2012-12-04 | Lsi Corporation | Precursor ISI cancellation using adaptation of negative gain linear equalizer |
US8151012B2 (en) | 2009-09-25 | 2012-04-03 | Intel Corporation | Virtual row buffers for use with random access memory |
US8335892B1 (en) | 2009-09-28 | 2012-12-18 | Nvidia Corporation | Cache arbitration between multiple clients |
US9286075B2 (en) | 2009-09-30 | 2016-03-15 | Oracle America, Inc. | Optimal deallocation of instructions from a unified pick queue |
KR101039782B1 (ko) | 2009-11-26 | 2011-06-09 | 한양대학교 산학협력단 | 능동 메모리 프로세서를 포함하는 네트워크-온-칩 시스템 |
US8521992B2 (en) | 2009-12-22 | 2013-08-27 | International Business Machines Corporation | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors |
US8984264B2 (en) | 2010-01-15 | 2015-03-17 | Oracle America, Inc. | Precise data return handling in speculative processors |
EP2378727A1 (en) | 2010-04-14 | 2011-10-19 | Texas Instruments Limited | Channel equalization using application specific digital signal processing in high-speed digital transmission systems |
CN101876892B (zh) | 2010-05-20 | 2013-07-31 | 复旦大学 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
US20120060016A1 (en) | 2010-09-07 | 2012-03-08 | International Business Machines Corporation | Vector Loads from Scattered Memory Locations |
US8904153B2 (en) | 2010-09-07 | 2014-12-02 | International Business Machines Corporation | Vector loads with multiple vector elements from a same cache line in a scattered load operation |
US8713263B2 (en) | 2010-11-01 | 2014-04-29 | Advanced Micro Devices, Inc. | Out-of-order load/store queue structure |
US9207995B2 (en) | 2010-11-03 | 2015-12-08 | International Business Machines Corporation | Mechanism to speed-up multithreaded execution by register file write port reallocation |
CN102004719B (zh) | 2010-11-16 | 2015-05-20 | 清华大学 | 支持同时多线程的超长指令字处理器结构 |
EP2689330B1 (en) | 2011-03-25 | 2022-12-21 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US8656401B2 (en) | 2011-05-13 | 2014-02-18 | Advanced Micro Devices, Inc. | Method and apparatus for prioritizing processor scheduler queue operations |
US9069563B2 (en) | 2011-09-16 | 2015-06-30 | International Business Machines Corporation | Reducing store-hit-loads in an out-of-order processor |
US8793435B1 (en) | 2011-09-30 | 2014-07-29 | Applied Micro Circuits Corporation | Load miss result buffer with shared data lines |
US8806135B1 (en) | 2011-09-30 | 2014-08-12 | Applied Micro Circuits Corporation | Load store unit with load miss result buffer |
US8850121B1 (en) | 2011-09-30 | 2014-09-30 | Applied Micro Circuits Corporation | Outstanding load miss buffer with shared entries |
US8935513B2 (en) | 2012-02-08 | 2015-01-13 | International Business Machines Corporation | Processor performance improvement for instruction sequences that include barrier instructions |
US8966232B2 (en) | 2012-02-10 | 2015-02-24 | Freescale Semiconductor, Inc. | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation |
US9223709B1 (en) | 2012-03-06 | 2015-12-29 | Marvell International Ltd. | Thread-aware cache memory management |
US9274960B2 (en) | 2012-03-20 | 2016-03-01 | Stefanos Kaxiras | System and method for simplifying cache coherence using multiple write policies |
US10067765B2 (en) | 2012-05-14 | 2018-09-04 | International Business Machines Corporation | Speeding up younger store instruction execution after a sync instruction |
US9626189B2 (en) | 2012-06-15 | 2017-04-18 | International Business Machines Corporation | Reducing operand store compare penalties |
US10241797B2 (en) | 2012-07-17 | 2019-03-26 | Advanced Micro Devices, Inc. | Replay reduction by wakeup suppression using early miss indication |
US9632777B2 (en) | 2012-08-03 | 2017-04-25 | International Business Machines Corporation | Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry |
US20140189243A1 (en) | 2012-12-28 | 2014-07-03 | Blas Cuesta | Sectored cache with hybrid line granularity |
US9424045B2 (en) | 2013-01-29 | 2016-08-23 | Arm Limited | Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit |
US9256428B2 (en) | 2013-02-06 | 2016-02-09 | International Business Machines Corporation | Load latency speculation in an out-of-order computer processor |
US9323739B2 (en) | 2013-02-26 | 2016-04-26 | Lenovo (Singapore) Pte. Ltd. | Identifying words for a context |
US10198265B2 (en) | 2013-03-15 | 2019-02-05 | Intel Corporation | Microprocessor for gating a load operation based on entries of a prediction table |
US9361113B2 (en) | 2013-04-24 | 2016-06-07 | Globalfoundries Inc. | Simultaneous finish of stores and dependent loads |
US9946666B2 (en) | 2013-08-06 | 2018-04-17 | Nvidia Corporation | Coalescing texture access and load/store operations |
JP2016534431A (ja) | 2013-10-25 | 2016-11-04 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上 |
US10303480B2 (en) | 2013-10-30 | 2019-05-28 | Advanced Micro Devices | Unified store queue for reducing linear aliasing effects |
CN104639578B (zh) | 2013-11-08 | 2018-05-11 | 华为技术有限公司 | 多协议栈负载均衡方法及装置 |
US9639369B2 (en) | 2013-11-11 | 2017-05-02 | Apple Inc. | Split register file for operands of different sizes |
US9448936B2 (en) | 2014-01-13 | 2016-09-20 | Apple Inc. | Concurrent store and load operations |
US9665372B2 (en) | 2014-05-12 | 2017-05-30 | International Business Machines Corporation | Parallel slice processor with dynamic instruction stream mapping |
US9672043B2 (en) | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
US9760375B2 (en) | 2014-09-09 | 2017-09-12 | International Business Machines Corporation | Register files for storing data operated on by instructions of multiple widths |
US9720696B2 (en) | 2014-09-30 | 2017-08-01 | International Business Machines Corporation | Independent mapping of threads |
US9898409B2 (en) | 2014-10-09 | 2018-02-20 | The Regents Of The University Of Michigan | Issue control for multithreaded processing |
US9519484B1 (en) | 2014-11-02 | 2016-12-13 | Netronome Systems, Inc. | Picoengine instruction that controls an intelligent packet data register file prefetch function |
US9977678B2 (en) | 2015-01-12 | 2018-05-22 | International Business Machines Corporation | Reconfigurable parallel execution and load-store slice processor |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US10133581B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Linkable issue queue parallel execution slice for a processor |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US10606600B2 (en) | 2016-06-03 | 2020-03-31 | International Business Machines Corporation | Fetched data in an ultra-short piped load store unit |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
-
2016
- 2016-05-11 US US15/152,257 patent/US10037229B2/en active Active
- 2016-07-27 US US15/221,035 patent/US10042770B2/en active Active
-
2017
- 2017-05-09 CN CN201710320187.7A patent/CN107368450B/zh active Active
-
2018
- 2018-06-01 US US15/995,850 patent/US10255107B2/en active Active
- 2018-06-05 US US15/997,863 patent/US10268518B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101542430A (zh) * | 2006-09-29 | 2009-09-23 | Mips技术公司 | 用于处理器的加载/存储单元及其应用 |
CN102282540A (zh) * | 2008-12-17 | 2011-12-14 | 超威半导体公司 | 带有共享指令流的协处理器单元 |
CN101526896A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微系统有限公司 | 嵌入式处理器的加载/存储单元 |
CN105487841A (zh) * | 2014-12-14 | 2016-04-13 | 上海兆芯集成电路有限公司 | 用以改善在处理器中重新执行加载的装置与方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427654A (zh) * | 2020-04-13 | 2020-07-17 | 北京达佳互联信息技术有限公司 | 一种指令处理方法及装置 |
CN111427654B (zh) * | 2020-04-13 | 2023-05-30 | 北京达佳互联信息技术有限公司 | 一种指令处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20180285161A1 (en) | 2018-10-04 |
US10042770B2 (en) | 2018-08-07 |
US10268518B2 (en) | 2019-04-23 |
US20170329713A1 (en) | 2017-11-16 |
US20180276132A1 (en) | 2018-09-27 |
US10037229B2 (en) | 2018-07-31 |
CN107368450B (zh) | 2020-09-01 |
US20170329641A1 (en) | 2017-11-16 |
US10255107B2 (en) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107368450A (zh) | 实现维护被拒指令的加载/存储单元的多片处理器的操作 | |
US10564978B2 (en) | Operation of a multi-slice processor with an expanded merge fetching queue | |
US10761854B2 (en) | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor | |
US9983875B2 (en) | Operation of a multi-slice processor preventing early dependent instruction wakeup | |
US10346174B2 (en) | Operation of a multi-slice processor with dynamic canceling of partial loads | |
US10042647B2 (en) | Managing a divided load reorder queue | |
CN105528193B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105511839B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN107077335A (zh) | 使用所预测值表来提供循环不变值预测,以及相关设备、方法和计算机可读媒体 | |
CN105487841B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
US9916245B2 (en) | Accessing partial cachelines in a data cache | |
CN105573714B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105528194B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105487842B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105511841B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105511840B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105607893B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105487901B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105511917B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105549954B (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105573718B (zh) | 用以改善在处理器中重新执行加载的装置与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |