CN107810481B - 处理器指令窗口中的指令块的基于年龄的管理 - Google Patents
处理器指令窗口中的指令块的基于年龄的管理 Download PDFInfo
- Publication number
- CN107810481B CN107810481B CN201680036621.2A CN201680036621A CN107810481B CN 107810481 B CN107810481 B CN 107810481B CN 201680036621 A CN201680036621 A CN 201680036621A CN 107810481 B CN107810481 B CN 107810481B
- Authority
- CN
- China
- Prior art keywords
- instruction
- block
- instruction block
- blocks
- window
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 48
- 239000000872 buffer Substances 0.000 claims description 31
- 238000013507 mapping Methods 0.000 claims description 13
- 230000003139 buffering effect Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 4
- 238000011010 flushing procedure Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 11
- 238000012856 packing Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- 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/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种基于指令块的微架构中的处理器核包括控制单元,该控制单元显式地跟踪包括从指令高速缓存已经取回的当前块的年龄或优先级的指令块状态。跟踪的指令块以年龄顺序列表或优先级顺序列表维持。当指令块被控制单元识别为提交时,该列表被检查匹配,并且匹配的指令块可以被刷新而不从指令高速缓存中重新取回。如果找不到匹配,则可以基于年龄或优先级来提交和替换指令块。这种指令状态跟踪通常消耗很少的开销,并且使得指令块能够被重新使用并且错误预测的指令被跳过以提高处理器核效率。
Description
背景技术
指令集架构(ISA)和处理器的设计者进行功率和性能折衷。例如,如果设计者选择具有传递更高性能的指令的ISA,则处理器的功耗也可能更高。备选地,如果设计者选择消耗较低功率的指令的ISA,性能可能会更低。功耗可能被绑定到在执行期间由指令使用的处理器的硬件资源量,例如算术逻辑单元(ALU)、高速缓存线、或寄存器。大量这样的硬件资源的使用可能以更高的功耗的代价传递更高的性能。备选地,少量这样的硬件资源的使用可能以较低的性能的代价导致较低的功耗。编译器可用于将高级代码编译为与ISA和处理器架构兼容的指令。
发明内容
一种基于指令块的微架构中的处理器核包括控制单元,该控制单元显式地跟踪指令块状态,该指令块状态包括针对已经从指令高速缓存中取回的当前块的年龄或优先级。跟踪的指令块以年龄顺序或优先顺序列表被维持。当指令块被控制单元标识用于提交时,针对匹配检查该列表,并且匹配的指令块可以被刷新而不用从指令高速缓存中重新取回。如果匹配没有被找到,则可以基于年龄或优先级来提交和替换指令块。这种指令状态跟踪通常消耗很少的开销,并且使得指令块能够被重用以提高处理器核效率。控制单元不是像传统的重新排序或循环缓冲区那样基于它们的动态年龄严格地来处理指令块,而是实现控制流独立性,以能够实现指令块被无序地处理,使得可以跳过错误预测的指令块(这会以其他方式浪费处理周期)。
提供本发明内容是为了以简化的形式介绍将在以下具体实施例部中进一步描述的一些概念的选择。本发明内容并不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用作确定所要求保护的主题的范围的辅助手段。此外,要求保护的主题不限于解决本公开的任意部分中提到的任意或全部缺点的实现。
附图说明
图1示出其中编译器提供在包括多个处理器核的架构上运行的编码指令的示意性计算环境;
图2是示例性处理器核的示意性微架构的框图;
图3示出了块头部的示意性布置;以及
图4-15是示意性方法的流程图。
相同的附图标记指示附图中的相同的元件。
除非另有说明,元件不是按比例绘制的。
具体实施方式
图1示出了示意性计算环境100,指令块的当前基于年龄的管理可以与该计算环境100一起被利用。该环境包括编译器105,该编译器可用于从程序115生成编码的机器可执行指令110。指令110可由处理器架构120处理,处理器架构120被配置为处理包含例如在4和128个指令之间的可变大小的指令块。
处理器架构120通常包括在分区块的配置中由片上网络(未示出)互连并还与一个或多个2级(L2)高速缓存(代表性地由附图标记130指示)互操作的多个处理器核(代表性地由附图标记125指示)。尽管核和高速缓存的数量和结构可以根据实现而变化,但是应该注意,物理核可以在程序115的运行时期间在被称为“组成”的过程中被一起合并到一个或多个更大的逻辑处理器中,其使得更多的处理能力用于程序执行。备选地,当程序执行支持适当的线程级并行性时,核125在被称为“分解”的进程中可以被拆分以独立工作并执行来自独立线程的指令。
图2是示意性处理器核125的一部分的简化框图。如图所示,处理器核125可包括前端控制单元202、指令高速缓存204、分支预测器206、指令解码器208、指令窗口210、左操作数缓冲区212、右操作数缓冲区214、算术逻辑单元(ALU)216、另一ALU 218、寄存器220、以及加载/存储队列222。在一些情况下,总线(由箭头指示)可以携带数据和指令,而在其他情况下,总线可以携带数据(例如操作数)或控制信号。例如,前端控制单元202可以经由仅携带控制信号的总线与其他控制网络进行通信。尽管图2示出了在特定布置中被布置的用于处理器核125的一定数量的示意性部件,但是根据特定实现的需要,可以存在不同布置的更多或更少的部件。
前端控制单元202可以包括被配置为控制通过处理器核和电路的信息流以协调其内的活动的电路。前端控制单元202还可以包括用于实现有限状态机(FSM)的电路,在其中状态枚举处理器核可以采用的操作配置中的每一个。前端控制单元202中的FSM电路使用操作码(如下所述)和/或其他输入(例如硬件电平信号)可以确定下一状态和控制输出。
因此,前端控制单元202可以从指令高速缓存204取回指令用于由指令解码器208处理。前端控制单元202可以通过控制网络或总线与处理器核125的其他部分交换控制信息。例如,前端控制单元可以与后端控制单元224交换控制信息。在一些实现中,前端控制单元和后端控制单元可以被集成到单个控制单元中。
前端控制单元202还以可协调和管理处理器架构120(图1)的各种核和的其他部分的控制。因此,例如,指令块可以在多个核上同时被执行,并且前端控制单元202可以经由控制网络与其它核交换控制信息,以根据需要确保各种指令块的执行的同步。
前端控制单元202还可以处理关于被原子地执行的指令块的控制信息和元信息。例如,前端控制单元202可以处理与指令块相关联的块头部。如下面更详细地讨论的,块头部可以包括关于指令块的控制信息和/或元信息。相应地,前端控制单元202可以包括组合逻辑、状态机和临时存储单元,诸如用于处理块头部中的各个字段的触发器(flip-flops)。
前端控制单元202可以在每个时钟周期提取并解码单个指令或多个指令。解码的指令可以被存储在指令窗口210中,指令窗口210被实现在作为缓冲区的处理器核硬件中。在一些实现中,指令窗口210可以支持指令调度器230,该指令调度器230可以维持每个经解码的指令(例如预测和操作数)的输入的就绪状态。例如,当其所有输入(如果有的话)准备好时,给定的指令可以被指令调度器230唤醒并准备好发布。
在发布指令之前,根据需要,可以将指令所需的任意操作数存储在左操作数缓冲区212和/或右操作数缓冲区214中。取决于指令的操作码,可以使用ALU 216和/或ALU 218或其他功能单元在操作数上执行操作。ALU的输出可以存储在操作数缓冲区中,或者存储在一个或多个寄存器220中。以数据流顺序发布的存储操作可以在加载/存储队列222中排队,直到指令块提交为止。当指令块提交时,加载/存储队列222可以将提交块的存储写入存储器。分支预测器206可以处理与分支出口类型有关的块头部信息,并将该信息作为进行分支预测中的因素。
如上所述,处理器架构120通常利用以块的形式组织的、被原子地获取、执行、并提交的指令。因此,处理器核可整体地获取属于单个块的指令,将它们映射到处理器核内的执行资源,执行指令,并以原子方式提交它们的结果。处理器既可以提交所有指令的结果,也可以取消整个块的执行。块内的指令可以按照数据流顺序执行。另外,处理器可以允许块内的指令使用消息或其他合适形式的通信彼此直接通信。因此,产生结果的指令可能不是将结果写入寄存器文件,而是将该结果传送给块中的消耗该结果的另一指令。举例来说,将存储在寄存器R1和R2中的值相加的指令可以表示为如下面的表1所示:
表1
以这种方式,源操作数不是用指令指定的,而是由以加指令为目标的指令指定的。编译器105(图1)可以在指令110的编译期间明确地对控制和数据依赖性进行编码,从而从重新发现运行时的这些依赖性来释放处理器核。这可以有利地导致在这些指令的执行期间减少处理器负载和节能。作为示例,编译器可以使用预测来将所有的控制依赖转换成数据流指令。使用这些技术,对耗电的寄存器文件的访问次数可以被减少。下面的表2示出了这样的指令的通用指令格式的示例:
表2
操作码 | PR | BID | XOP | 目标1 | 目标2 |
每个指令可以具有合适的大小,诸如32位、64位或另一大小。在表2所示的示例中,每个指令可以包括操作码字段、PR(预测)字段、BID(广播ID)字段、XOP(扩展操作码)字段、目标1字段、和目标2字段。操作码字段可以为指令或指令块指定唯一的操作码,例如加、读取、写入、或乘法。PR(预测)字段可以指定与指令相关的任意预测。例如,可以使用两位PR字段,如下所示:00-不可预测,01是预留的,10是预测为假,11是预测为真。因此,例如,如果只有在比较结果为真的情况下才执行指令,则该指令可以在执行比较的另一指令的结果上被预测。BID(广播ID)字段可以支持将操作数发送到块中的任意数量的消费者指令。一个2位的BID字段可以被用来编码广播信道,在广播信道上对指令接收其操作数中的一个。XOP(扩展操作码)字段可以支持扩展操作码的类型。目标1和目标2字段可以允许多达两个将被编码的目标指令。目标字段可以指定生产者指令的结果的消费者指令,从而允许指令之间的直接通信。
每个指令块可以具有与该指令块相关联的特定信息,诸如与该块有关的控制信息和/或元信息。这个信息可以在将程序编译成指令110期间由编译器105生成用于在处理器架构120上执行。这些信息中的一些信息可以在指令块的编译期间由编译器提取,然后检查运行期间的指令的属性。
另外,与指令块相关联的信息可以是元信息。举例来说,该信息可以被提供给可使用特殊指令或指令的处理器核,其提供与寄存器或其它存储器有关的目标编码,该目标编码可具有与指令块相关联的相关信息。在特殊指令的情况下,这些指令的操作码字段可用于传送与指令块有关的信息。在另一示例中,这样的信息可以被维持为处理器状态字(PSW)的一部分。例如,该信息可以有利地帮助处理器更高效地执行该指令块。
可以使用块头部、专用指令、存储器引用位置、处理器状态字(PSW)、或其各种组合向处理器核提供各种类型的信息。在图3中示出示意性的指令块头部300。在该示意性示例中,块首部300是128位,并且从块的程序计数器的偏移量0处开始。还显示了每个字段的相应开始和结束。这些字段在下面的表3中描述:
表3
尽管图3中所示和表3中所描述的块头部包括多个字段,但是其旨在是示意性的,并且其他字段设置可以被用于特定实现。
在示意性示例中,编译器105(图1)可以选择用于包括在块首部中或者用于特定指令的信息,其可以基于指令的性质和/或基于处理请求的性质(诸如高性能或低功率)向处理器核提供这样的信息。这可以有利地允许在性能和功耗之间折衷的更加最优的平衡。对于某些类型的处理应用(诸如具有大量核的高性能计算),大量的信息可能是一个期望的选项。备选地,对于其他类型的处理应用(诸如物联网中使用的嵌入式处理器、移动设备、可穿戴设备、头戴式显示器(HMD)设备或其他嵌入式计算类型的应用),较少的信息可能是期望的选项。
使用块首部或特殊指令传送的信息的范围可以根据块中指令的性质来裁剪。例如,如果指令块包括以重复(“recurring”)方式执行的循环,则可能需要更广泛的信息来封装与该块相关联的控制信息。附加控制信息可以允许处理器核更高效地执行循环,从而提高性能。
备选地,如果存在将很少被执行的指令块,则相对较少的信息就足够了。例如,如果指令块包括几个预测的控制循环,则可能需要更多的信息。类似地,如果指令块具有大量的指令级并行性,则可能需要更多信息作为块头部或特殊指令的一部分。
块头部中的附加控制信息或特殊指令可以用于例如有效地利用指令块中的指令级并行性。如果指令块包括多个分支预测,则可能需要更多的信息。有关分支预测的附加控制信息通常将更高效地增强代码执行,因为其可能导致更少的管道刷新。
应当注意,与块首部中的字段对应的功能可以被组合或者被进一步分离。类似地,特殊指令可以提供与图3和表3中所示的字段中的任意一个有关的信息,或者它可以组合来自这些字段的信息。例如,尽管图3和表3的示意性块头部包括分离的标识符字段和大小字段,但是这两个字段可以组合成单个字段。
同样,当解码时,单个特殊指令可以提供关于指令块的大小的信息和标识符字段中的信息。除非另有说明,否则特殊指令可以被包括在指令块的任意地方。例如,BLOCK_SIZE#大小指令可以包含直接字段,该直接字段包括指令块大小的值。直接字段可以包含提供大小信息的整数值。备选地,直接字段可以包括与大小信息有关的编码值,使得大小信息可以通过对编码值进行解码来获得,例如通过查找大小表中的值,其可以使用逻辑、寄存器、存储器、或码流中的一个来表达。在另一示例中,BLOCK_ID#标识符特殊指令可以传送块标识符号码。
分离的数学函数或基于存储器的表可以将块标识符映射到块头部的存储器地址中。作为这种指令的一部分传送的块标识符对于每个指令块可以是专用的。在另一示例中,BLOCK_HDR_ID#标识符指令可以传送块头部标识符号。分离的数学函数或基于存储器的表可以将块标识符映射到块头部的存储器地址。作为这种指令的一部分传送的块标识符可以由具有相同头部结构或字段的几个指令块共享。
在另一示例中,BLOCK_INFO#大小、#出口类型、#存储掩码、#写入掩码指令可以提供关于指令的枚举字段的信息。这些字段可以对应于上面关于表3所讨论的字段中的任意一个。根据给定实现的要求,可以对块头部结构和格式以及特殊指令进行其他改变。例如,包括与指令块的特性有关的信息的附加字段可以被提供。基于指令块的执行的频率,可以包括特定的字段。
包括在块头部结构中的字段,或者经由特殊指令或先前讨论的其他机制提供的信息可以是特定处理器或处理器系列的公共可用标准指令集架构(ISA)的一部分。这些字段的一个子集可能是对ISA的专有扩展。该字段中的某些位值可能是针对处理器的标准ISA的一部分,但该字段中的某些其他位值可能会提供专有功能。该示例性字段可以允许ISA设计者向ISA添加专有扩展而不完全公开与专有扩展相关联的性质和功能。因此,在这种情况下,由ISA设计人员分发的编译器工具将支持该字段中的专有位值、完全分离的专有字段、或特殊指令。这样的领域的使用可能与某些处理器设计专有的硬件加速器特别相关。因此,程序可能包括块头部字段或不可识别的特殊指令;但是该程序还可以包括对该字段进行解密或对该指令进行解码的配方。
编译器105(图1)可以处理指令块,其通常被配置为由一个或多个处理器核原子地执行,以便于生成关于包括元信息和控制信息的关于指令块的信息。一些程序可能仅针对一个ISA(例如,与物联网处理器、移动设备、HMD设备、可穿戴设备或其他嵌入式计算环境一起使用的ISA)进行编译。编译器可以采用诸如静态代码分析或代码分析的技术来生成与指令块相关的信息。在某些情况下,编译器可能会考虑诸如指令块特性和其执行频率等因素。指令块的相关特性可以包括,例如,但不一定限于:(1)指令级并行性,(2)循环数,(3)预测的控制指令的数量,以及(4)分支预测的数量。
图4是用于管理设置在处理器核中的指令窗口中的指令块的示意性方法400的流程图。除非特别说明,图4的流程图中的方法或步骤以及附图中所示和下面描述的其他流程图中的方法或步骤不受限于特定的顺序或序列。另外,其中的一些方法或步骤可以同时发生或者执行,并且取决于这种实现的要求,并不是所有的方法或步骤都必须在给定的实现中被执行,并且一些方法或步骤可以被可选地利用。类似地,在一些实现中可以去除一些步骤以减少开销,但是这可能导致增加例如脆弱性。可以在任意给定的应用中实现的各种特征、成本、开销、性能和鲁棒性折衷可以典型地视为设计选择的问题。
在步骤405中,使用例如年龄向量来显式地跟踪取回的指令块的年龄。因此,控制单元不是使用指令窗口中的、通常被隐式地用于跟踪年龄的指令块顺序(即位置),而是维持显式状态。指令块的年龄排序列表在步骤410中被维持。指令块优先级(其中在一些情况下可以由编译器确定优先级)也可以被跟踪,并且在一些实现中也可以维持指令块的优先级排序列表。
在步骤415中,当指令块被标识用于处理时,搜索年龄排序列表以找到匹配的指令块。在一些实现中,针对匹配优先级排序列表也可以被搜索。如果找到匹配的指令块,则在步骤420中它可以被刷新,而不必从指令高速缓存中重新取回它,这可以提高处理器核效率。这样的刷新使能在例如程序以紧密循环执行并且指令自行分支的情况下的指令块的重用。当多个处理器核被组成大规模阵列时,这样的效率增加也可能是复合的。当刷新指令块时,指令被留在适当的位置,并且只操作数缓冲区和加载/存储队列中的有效位被清除。
如果没有找到对指令块的匹配,则可以再次利用年龄排序的列表(或优先级排序的列表)来找到可以被提交以在指令窗口中针对新的指令块打开槽。例如,最老的指令块或最低优先级的指令块可以被提交(其中高优先级块可能因为存在它将来重用的可能性而可能被期望维持缓冲)。在步骤425中,新指令块被映射到可用槽中。可以使用批量分配处理来分配指令块,在批量处理中块中的指令和与指令相关联的所有资源被立即取回(即,集中)。
在步骤430中,执行新的指令块,使得其指令被原子地提交。其他指令块可以按照与传统的重排序缓冲区类似的方式按照年龄的顺序执行(步骤435),以按原子方式提交它们各自的指令。
图5是可以由基于指令块的微架构执行的示意性方法500的流程图。在步骤505中,处理器核中的控制单元使得取回的指令块利用连续替换或非连续替换被缓冲。在步骤510中,利用连续的指令块替换,缓冲区可以像循环缓冲区那样被操作。在步骤515中,利用非连续的指令块替换,指令块可以被无序替换。例如,在步骤520中,可以执行显式的基于年龄的跟踪,使得指令块以与上述类似的方式基于跟踪的年龄被提交和替换。在步骤525中,也可以跟踪优先级,并且所跟踪的优先级可以被用于提交和替换指令块。
图6是可由在处理器核中设置的控制单元执行的示意性方法600的流程图。在步骤605中,缓冲的指令块的状态被跟踪,并且在步骤610中使用所跟踪的状态来维持指令块的列表。例如,取决于特定的实现要求,状态可以包括年龄、优先级、或其他信息或上下文。在步骤615中,当指令块被标识用于映射时,针对匹配检查列表,如步骤620所示。在步骤625中,来自列表中的匹配指令块刷新而不重新获取。在步骤630中,当匹配指令块未在列表中被找到时,则以类似于上述的方式,指令块被从指令高速缓存取回,并被映射到指令窗口中的可用槽中。
图7是用于管理在处理器核中设置的指令窗口中的指令块的示意性方法700的流程图。在步骤705中,在处理器核中维持指令块大小的大小表。大小表可以用各种方式(例如,使用逻辑、寄存器、存储器、代码流或其他合适的结构之一)表示。在步骤710中,读取在指令块的头部中被编码的索引。指令块包括一个或多个解码的指令。因此,不是使用图3和表3中示出的大小字段来对指令块大小进行硬编码,而是可以使用该字段来对索引进行编码或将索引存储到大小表中。也就是说,索引可以用作指向大小窗口中的条目的指针,以使特定大小能够与指令块相关联。
在大小表中包括的大小条目的数量可以根据实现而变化。可以利用更多数量的大小条目来使能更大的粒度,其在存在与给定的程序相关联的指令块大小的相对较宽分布的情况下可能是有益的,但是在典型的实现中以增加的开销为代价。在一些情况下,编译器可以选择在表中包括的大小的数量,以优化整个指令封装密度并最小化无操作的方式覆盖指令块大小的特定分布。例如,可以选择在大小表中包括的大小来匹配程序中常用的块指令大小。在步骤715中,使用索引从大小表中查找指令块大小。在步骤720中,指令块基于其大小被映射到指令窗口中的可用槽中。
在一些实现中,如步骤725所示,指令窗口可以被分段成例如使用两个或更多个不同的大小的两个或更多个子窗口。分段的子窗口中的这种变化可以使能进一步适应给定的指令块大小分布,并且还可以增加指令封装密度。分段也可以在一些场景中被动态地执行。
图8是可以由基于指令块的微架构执行的示意性方法800的流程图。在步骤805中,实现大小表。如上所述,大小表可以使用逻辑、寄存器、存储器、代码流或其他合适的结构之一来实现,并且可以包括对应于在由给定的程序利用的指令块的分布中通常被利用的那些大小的大小。在步骤810中,针对引用大小表中的条目的指针,检查指令块头部。在步骤815中,由表条目标识的大小被用于确定指令块在指令窗口内的放置。
在步骤820中,与指令块相关联的资源被批量分配。在步骤825中当将指令块映射到指令窗口中时,在指令块首部中指定的限制被使用。这些限制可以包括例如对齐和指令窗口对缓冲指令块的容量的限制。在步骤830中,通过控制单元跟踪指令窗口中的指令块的顺序,并且在一些情况下,块可能被无序提交。例如,不是使用指令块的循环缓冲区(其中块是基于它们在指令窗口中的位置来处理的),而是可以对块进行优先级排序,使得大量使用的、或特别重要的指令块被无序处理,这可以提高处理效率。
在步骤835中,在一些情况下,可以显式地跟踪指令块的年龄,并且指令块可以基于这种显式跟踪的年龄而被提交。在步骤840中指令块被刷新(即,重新使用而不从指令高速缓存重新取回指令块)。
图9是可由在处理器核中设置的控制单元执行的示意性方法900的流程图。在步骤905中,以与上述类似的方式,指令窗口被配置有具有两个或更多个不同大小的多个分段。在步骤910中,针对在其中被编码的索引,检查块指令头部。在步骤915中使用索引在大小表中执行查找,并且在步骤920中基于大小查找,指令块被放置到适于块的特定大小的指令窗口分段中。在步骤925中,使用批量分配来取回与指令块相关联的资源。
图10是用于管理在处理器核中设置的指令窗口中的指令块的示意性方法1000的流程图。在步骤1005中,指令块从指令高速缓存被映射到指令窗口。指令块包括一个或多个解码的指令。在步骤1010中与指令块中的指令中的每个指令相关联的资源被分配。资源通常包括控制位和操作数,并且可以使用批量分配处理来执行分配,在批量分配处理中所有资源被全部获得或取回。
不是紧密耦合资源和指令,而是指令窗口和操作数缓冲区被解耦以使得它们可以通过维持资源中和块中的解码的指令中的一个或多个指针而被独立地操作,如步骤1015所示。当在步骤1020中指令块被刷新(即,重新使用而不从指令高速缓存重新取回指令块)时,则可以在步骤1025中通过跟随指针回到原始控制状态来重新使用资源。
特别是当指令块被刷新而没有如通常发生的重新取回时,例如,当程序在紧密循环中执行并且指令被重复使用时,这种解耦可以提供增加的处理器核效率。通过由指针建立控制状态,资源被有效地预先验证,而不需要处理周期的额外花费和其他费用。当多个处理器核组成大规模阵列时,这样的效率增加也可能是复合的。
图11是可以由基于指令块的微架构执行的示意性方法1100的流程图。在步骤1105中,指令块以新的指令块代替提交的指令块的方式被映射到指令窗口中。如步骤1110所示,映射可以受到在指令块的首部中被指定的各种限制,例如,对齐和指令窗口对缓冲指令块的容量的限制。在步骤1115,针对新指令块分配资源,这通常使用批量分配处理来实现,如上所述。
在步骤1120中,控制单元跟踪指令窗口中的指令块的顺序,并且在某些情况下,块可能被无序提交。例如,不是使用指令块的循环缓冲区(在其中块是基于它们在指令窗口中的位置而被处理的),而是可以对块进行优先级排序,使得大量使用的、或特别重要的指令块被无序处理,这可以提高处理效率。
在步骤1125中,指令窗口与操作数缓冲区去耦合,使得例如指令块和操作数块被独立管理(即,不使用指令和操作数之间的严格对应关系)。如上所述,通过在指令块被刷新时使得资源能够被预先验证,解耦增加了效率。
图12是可以由在处理器核中设置的控制单元执行的示意性方法1200的流程图。在步骤1205中,维持指令窗口以缓冲一个或多个指令块。在步骤1210中一个或多个操作数缓冲区被维持以缓冲与指令块中的指令相关联的资源。如上所述,资源通常包括控制位和操作数。在步骤1215中使用指令和资源中的指针来跟踪状态。
当指令块被刷新时,在框1220中,指针可以被跟随回到被跟踪的状态。在步骤1225中,当指令块提交时,操作数缓冲区中的控制位被清除,并设置新的指针。与上面讨论的方法一样,在步骤1230,指令窗口和操作数缓冲区被被去耦合,使得控制单元在非对应的基础上维持指令块和操作数块。
图13是用于管理在处理器核中设置的指令窗口中的指令块的示意性方法1300的流程图。在步骤1305中,使用批量分配处理来分配指令块,其中块中的指令和与指令相关联的所有资源被立即(即,集中)取回。与其中指令和资源以较小的块重复取回的传统架构相比,这里的批量分配使得块中的所有指令能够被同时地且一致地管理,这可以提高处理器核操作的效率。在给定的编程构造(例如,使分支最小化的构造)使得编译器能够生成相对较大的指令块的情况下,这种改进可能甚至更加显着。例如,在一些实现中,指令块可以包含多达128个指令。
指令块的批量分配还通过刷新特征来提高处理器核效率,其中,例如当程序在紧密循环中执行并且指令自行分支时,指令块被重新使用而不像通常发生的那样被重新取回。当多个处理器核组成大规模阵列时,这样的效率增加也可能是复合的。当刷新指令块时,指令被留在适当的位置,并且只清除操作数缓冲区和加载/存储队列中的有效位。这使得刷新的指令块的取回能够被完全被绕过。
当指令组和资源在适当的位置时,指令块的批量分配也使能附加的处理效率。例如,操作数和显式消息可以从块中的一条指令发送到另一条指令。这样的功能在传统架构中是不使能的,因为一条指令不能发送任意东西到尚未被分配的另一条指令。生成常量的指令也可以将值锁定在操作数缓冲区中,使得它们在刷新后维持有效,因此每次指令块执行时都不需要重新生成这些值。
当在步骤1310中指令块被映射到指令窗口中时,在步骤1315中,它们受制于可以通过映射策略、在块头部中指定的限制或二者而被应用的约束。在一些情况下,策略可以由编译器根据给定程序的特定要求来设置。指定的限制可以包括例如对齐限制和指令窗口对缓冲指令块容量的限制。
在步骤1320中,在一些实现中,指令窗口可以被分段成相同大小或不同大小的子窗口。由于指令块大小对于给定程序通常是随机或不均匀分布的,因此分段子窗口中的这种变化可以更高效地适应给定的指令块大小的分布,从而增加指令窗口中的指令封装密度。取决于处理器核当前正在处理的块大小的分布,分段还可以在一些场景中被动态地执行。
在一些实现中,指令块头部可以对索引进行编码或者包括到使用逻辑、寄存器、存储器、或码流中的一个来实现的大小表的指针。大小表可以包括指令块大小条目,使得在步骤1325中可以从表中查找指令块大小。编码的索引和大小表的使用可以通过在可用块大小中提供更多的粒度来增强指令块中的指令封装密度,以例如当块在实现分支时包括相对少数量的指令时减小无操作(无操作)的发生。
图14是可以由基于指令块的微架构执行的示意性方法1400的流程图。在步骤1405中,处理器核中的控制单元应用用于处理指令块的策略。在步骤1410中使用上述批量分配处理来分配指令块,其中一次获取指令和所有相关资源。在步骤1415中,指令块被映射到指令窗口中,其中映射可能受到各种限制,诸如对准的限制和对指令窗口对在指令块的首部中指定的缓冲指令块的容量的限制,如上所述。
在步骤1420,可以应用包括由控制单元跟踪指令窗口在指令窗口中的顺序的策略。例如,在某些情况下块可能不按顺序提交,而不是使用指令块的循环缓冲区(其中基于块在指令窗口中的位置来处理块)提交。在步骤1425中,可以应用包括基于优先级(其可以在一些场景中由编译器指定)来处理块的策略,使得重度使用、或者特别重要的块被乱序处理,这还可以增加处理效率。
在步骤1430中,在一些情况下,可以应用包括明确跟踪指令块的年龄并且可以基于这种明确跟踪的年龄来提交指令块的策略。在步骤1435中,可以应用包括根据指令窗口中适当调整大小的槽(或窗口的分段)的可用性来映射指令块的策略。在步骤1440,可以应用包括使用循环缓冲区将指令块映射到指令窗口中的策略。
在一些实现中,可以利用策略的各种组合,以便于进一步增强处理器核效率。例如,控制单元可以在策略之间动态切换,以应用为给定指令块或指令块组提供更优选操作的策略。例如,在一些场景中,使用其中指令块以连续的方式按顺序处理的循环缓存技术可能更高效。在其他情况下,乱序和基于年龄的处理可能会提供更最优的操作。
图14是可以由在处理器核中设置的控制单元执行的示意性方法1500的流程图。在步骤1505中,以与上述类似的方式,指令窗口被配有具有两个或更多个不同大小的多个分段。在步骤1510中,指令块被取回,并在步骤1515中所有其相关联的资源被取回。
在步骤1520中,将指令块被放置在窗口的适当分段中,该适当分段使窗口中的指令密度最大化。例如,如果编译器产生包括具有低指令计数的相对大量块的块大小的分布(例如,为了实现程序分支等),则指令窗口可以具有被具体调整大小用于小指令块的的分段。类似地,如果存在相对大量的高指令计数块(例如,用于科学和类似的应用),则分段可以是被具体调整大小用于这种较大的指令块。因此,指令窗口段调整大小可以根据特定大小分布来调整,或者在分布改变的某些情况下可以被动态地调整。在框1525中,如上所述,指令块可以受指令块头部中指定的限制。
处理器指令窗口中当前基于年龄的管理指令块的各种示例性实施例现在通过说明的方式呈现,而不是作为所有实施例的详尽列表。一个示例包括一种用于管理在处理器核中设置的指令窗口中的指令块的方法,包括:显式地跟踪当前在指令窗口中被映射的指令块的年龄;将新的指令块映射到指令窗口中的可用槽中;执行新的指令块以原子地提交指令块中的指令;以及按照它们的显式跟踪的年龄的顺序执行当前被映射的指令块以原子地提交它们相应的指令。在另一示例中,该方法还包括针对每一个指令块执行批量分配,每一个指令块被从指令高速缓存取回以获得与该块中的指令中的每一个指令相关联的资源。在另一示例中,该方法还包括通过维持所取回的指令块的年龄排序列表来执行显式跟踪,其中年龄排序列表包括每个指令块对指令窗口的指针。在另一示例中,该方法还包括维持指令窗口中可用槽的列表和可用槽的地址。在另一示例中,该方法还包括标识用于提交的指令块并在年龄排序列表中搜索匹配。在另一示例中,该方法还包括当匹配被找到时刷新指令块而不重新取回指令块。
另一示例包括基于指令块的微架构,包括:控制单元;一个或多个操作数缓冲区,在控制单元的控制下;以及指令窗口,所述指令窗口被配置为在控制单元的控制下存储所解码的指令块,所述控制包括以下操作:将指令块缓冲在所述指令窗口中,使得新的指令块替换所述提交的指令块,其中缓冲是用连续的指令块替换或非连续的指令块替换执行的,当利用连续替换进行缓冲时,将指令窗口作为循环缓冲区进行操作,并基于它们在指令窗口中的顺序来替换指令块,当利用非连续替换进行缓冲时,在指令窗口中无序地替换指令块。在另一示例中,基于指令块的微架构还包括用于针对指令块中的所有指令执行资源的批量分配的配置,所述资源包括在操作数缓冲区中被缓冲的控制位或操作数中的一个。在另一示例中,基于指令块的微架构还包括用于跟踪每个指令块的年龄的配置。在另一示例中,基于指令块的微架构还包括用于使用年龄向量来跟踪每个指令块的年龄的配置。在另一示例中,基于指令块的微架构还包括基于其跟踪的年龄来提交指令块的配置。在另一示例中,基于指令块的微架构还包括用于跟踪指令块的优先级并且基于其跟踪的优先级提交指令块的配置。在另一示例中,基于指令块的微架构还包括用于基于其跟踪的优先级来刷新指令块的配置。在另一示例中,刷新包括:重新使用指令块,而不从指令高速缓存中重新取回指令块。
另一示例包括在处理器核中设置的控制单元,该处理器核被布置为执行用于指令块管理的方法,包括:跟踪在指令窗口中缓冲的指令块的状态,在该指令窗口中状态包括年龄或优先级;基于跟踪的状态来维持指令块的列表;标识用于映射到指令窗口的指令块;针对与所标识的指令块的匹配检查指令块列表;以及刷新列表中的匹配指令块。在另一示例中,控制单元还包括从指令高速缓存中取回指令块,并且当匹配未被找到时将取回的指令块映射到指令窗口。在另一示例中,控制单元还包括使用向量来跟踪年龄。在另一示例中,控制单元还包括基于由编译器生成的优先级标识符来维持优先级。在另一示例中,控制单元还包括维持逻辑指令窗口,该逻辑指令窗口涵盖多个处理器核,以及跟踪在逻辑指令窗口中缓存的指令块的状态。在另一示例中,控制单元还包括促进多个处理器核之间的通信的芯片上网络。
上述主题仅作为说明提供,不应被解释为限制。在不遵循所图示的和描述的示例实施例和应用的情况下,并且在不脱离在以下权利要求中阐述的本公开的真实精神和范围的情况下,可以对本文描述的主题进行各种修改和改变。
Claims (21)
1.一种用于管理在处理器核中设置的指令窗口中的指令块的方法,包括:
显式地跟踪当前在所述指令窗口中被映射的指令块的年龄,在所述指令窗口中显式跟踪独立于所述指令窗口中的指令块顺序而被执行;
将新的指令块映射到所述指令窗口中的可用槽中;
原子地提交所述新的指令块中的指令;以及
按照它们的显式跟踪的年龄的顺序来执行当前被映射的所述指令块以原子地提交它们相应的指令。
2.根据权利要求1所述的方法,还包括:针对每一个指令块执行批量分配,所述每一个指令块被从指令高速缓存取回,以获得与所述块中的所述指令中的每一个指令相关联的资源。
3.根据权利要求1所述的方法,还包括:通过维持取回的指令块的年龄排序列表来执行所述显式跟踪,其中所述年龄排序列表包括每个指令块到所述指令窗口的指针。
4.根据权利要求3所述的方法,还包括:维持所述指令窗口中的可用槽的列表和所述可用槽的地址。
5.根据权利要求3所述的方法,还包括:标识用于提交的指令块并且在所述年龄排序列表中搜索匹配。
6.根据权利要求5所述的方法,还包括:当匹配被找到时,刷新指令块,并且不重新取回所述指令块。
7.根据权利要求1所述的方法,其中指令块大小使用到大小表的指针在头部中被指示,所述大小表使用逻辑、寄存器、存储器或代码流中一项来表示。
8.一种基于指令块的处理器,包括:
控制单元;
一个或多个操作数缓冲区,在所述控制单元的控制下;以及
指令窗口,被配置为在所述控制单元的控制下存储解码指令块,在所述控制单元中,所述控制包括以下操作:
将指令块缓冲在所述指令窗口中,使得新的指令块替换提交的指令块,其中所述缓冲是用连续的指令块替换或非连续的指令块替换来执行的,
当利用连续的替换进行缓冲时,将所述指令窗口作为循环缓冲区进行操作,并基于它们在所述指令窗口中的顺序来替换指令块,
当利用非连续的替换进行缓冲时,在所述指令窗口中无序地替换指令块,在所述指令窗口中块基于指令块的显式地跟踪的年龄而被替换,显式跟踪独立于所述指令窗口中的指令块顺序而被执行。
9.根据权利要求8所述的基于指令块的处理器,还包括:用于针对指令块中的所有指令执行资源的批量分配的配置,所述资源包括在所述操作数缓冲区中被缓冲的控制位或操作数中的一项。
10.根据权利要求8所述的基于指令块的处理器,还包括:用于跟踪每个指令块的年龄的配置。
11.根据权利要求10所述的基于指令块的处理器,还包括:用于使用年龄向量来跟踪每个指令块的所述年龄的配置。
12.根据权利要求10所述的基于指令块的处理器,还包括:用于基于其跟踪的年龄来提交指令块的配置。
13.根据权利要求8所述的基于指令块的处理器,还包括:用于跟踪指令块的优先级并且基于其跟踪的优先级来提交指令块的配置。
14.根据权利要求13所述的基于指令块的处理器,还包括:用于基于其跟踪的优先级来刷新指令块的配置。
15.根据权利要求14所述的基于指令块的处理器,其中所述刷新包括:重新使用所述指令块,而不从所述指令高速缓存中重新取回所述指令块。
16.一种被设置在处理器核中的控制单元,该控制单元被布置为执行用于指令块管理的方法,包括:
显式地跟踪在指令窗口中被缓冲的指令块的状态,在该指令窗口中所述状态包括年龄或优先级,在所述指令窗口中显式跟踪独立于所述指令窗口中的指令块顺序而被执行;
基于经跟踪的所述状态来维持指令块的列表;
标识用于映射到所述指令窗口的指令块;
针对与经标识的所述指令块的匹配检查所述指令块的列表;以及
刷新所述列表中的匹配指令块。
17.根据权利要求16所述的控制单元,还包括从指令高速缓存中取回指令块,并且当匹配未被找到时将所取回的所述指令块映射到指令窗口。
18.根据权利要求16所述的控制单元,还包括使用向量来跟踪所述年龄。
19.根据权利要求16所述的控制单元,还包括基于由编译器生成的优先级标识符来维持所述优先级。
20.根据权利要求16所述的控制单元,还包括维持逻辑指令窗口,所述逻辑指令窗口涵盖多个处理器核,以及跟踪在所述逻辑指令窗口中缓冲的指令块的状态。
21.根据权利要求20所述的控制单元,还包括促进所述多个处理器核之间的通信的芯片上网络。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/752,747 | 2015-06-26 | ||
US14/752,747 US9946548B2 (en) | 2015-06-26 | 2015-06-26 | Age-based management of instruction blocks in a processor instruction window |
PCT/US2016/038852 WO2016210029A1 (en) | 2015-06-26 | 2016-06-23 | Age-based management of instruction blocks in a processor instruction window |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107810481A CN107810481A (zh) | 2018-03-16 |
CN107810481B true CN107810481B (zh) | 2021-06-18 |
Family
ID=56404307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680036621.2A Active CN107810481B (zh) | 2015-06-26 | 2016-06-23 | 处理器指令窗口中的指令块的基于年龄的管理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9946548B2 (zh) |
EP (1) | EP3314402B1 (zh) |
CN (1) | CN107810481B (zh) |
WO (1) | WO2016210029A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9952867B2 (en) * | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US9720693B2 (en) * | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10095637B2 (en) * | 2016-09-15 | 2018-10-09 | Advanced Micro Devices, Inc. | Speculative retirement of post-lock instructions |
US11934945B2 (en) | 2017-02-23 | 2024-03-19 | Cerebras Systems Inc. | Accelerated deep learning |
US11488004B2 (en) | 2017-04-17 | 2022-11-01 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
WO2018193352A1 (en) * | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Dataflow triggered tasks for accelerated deep learning |
US11232347B2 (en) | 2017-04-17 | 2022-01-25 | Cerebras Systems Inc. | Fabric vectors for deep learning acceleration |
US10776155B2 (en) * | 2018-03-15 | 2020-09-15 | International Business Machines Corporation | Aggregating, disaggregating and converting electronic transaction request messages |
WO2020044152A1 (en) | 2018-08-28 | 2020-03-05 | Cerebras Systems Inc. | Scaled compute fabric for accelerated deep learning |
WO2020044208A1 (en) | 2018-08-29 | 2020-03-05 | Cerebras Systems Inc. | Isa enhancements for accelerated deep learning |
WO2020044238A1 (en) | 2018-08-29 | 2020-03-05 | Cerebras Systems Inc. | Processor element redundancy for accelerated deep learning |
US11182167B2 (en) | 2019-03-15 | 2021-11-23 | International Business Machines Corporation | Method to determine the oldest instruction in an instruction queue of a processor with multiple instruction threads |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI226016B (en) * | 2003-01-06 | 2005-01-01 | Taifatech Inc | Linear access window |
CN102395949A (zh) * | 2009-05-05 | 2012-03-28 | 飞思卡尔半导体公司 | 用于调试的地址转换跟踪消息生成 |
US8290994B2 (en) * | 2010-05-05 | 2012-10-16 | International Business Machines Corporation | Obtaining file system view in block-level data storage systems |
US8380964B2 (en) * | 2009-04-03 | 2013-02-19 | International Business Machines Corporation | Processor including age tracking of issue queue instructions |
CN104583936A (zh) * | 2012-06-15 | 2015-04-29 | 索夫特机械公司 | 具有组成按序从存储器进行读取的加载的存储器一致性模型中的乱序加载的信号量方法和系统 |
Family Cites Families (226)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142631A (en) | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register |
EP0450658B1 (en) | 1990-04-06 | 2001-08-01 | Nec Corporation | Parallel pipelined instruction processing system for very long instruction word |
US5446904A (en) | 1991-05-17 | 1995-08-29 | Zenith Data Systems Corporation | Suspend/resume capability for a protected mode microprocessor |
US5363495A (en) | 1991-08-26 | 1994-11-08 | International Business Machines Corporation | Data processing system with multiple execution units capable of executing instructions out of sequence |
US5333283A (en) | 1991-10-29 | 1994-07-26 | International Business Machines Corporation | Case block table for predicting the outcome of blocks of conditional branches having a common operand |
JP3730252B2 (ja) | 1992-03-31 | 2005-12-21 | トランスメタ コーポレイション | レジスタ名称変更方法及び名称変更システム |
ES2143490T3 (es) | 1992-08-12 | 2000-05-16 | Advanced Micro Devices Inc | Decodificador de instrucciones. |
US6735685B1 (en) | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US5628021A (en) | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
US5999737A (en) | 1994-03-01 | 1999-12-07 | Digital Equipment Corporation | Link time optimization via dead code elimination, code motion, code partitioning, code grouping, loop analysis with code motion, loop invariant analysis and active variable to register analysis |
WO1996007139A1 (en) | 1994-09-01 | 1996-03-07 | Mcalpine Gary L | A multi-port memory system including read and write buffer interfaces |
US5666506A (en) | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5933642A (en) | 1995-04-17 | 1999-08-03 | Ricoh Corporation | Compiling system and method for reconfigurable computing |
US6112019A (en) | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
US5790822A (en) | 1996-03-21 | 1998-08-04 | Intel Corporation | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor |
US5920724A (en) | 1996-03-28 | 1999-07-06 | Intel Corporation | Software pipelining a hyperblock loop |
US5799167A (en) | 1996-05-15 | 1998-08-25 | Hewlett-Packard Company | Instruction nullification system and method for a processor that executes instructions out of order |
US5796997A (en) | 1996-05-15 | 1998-08-18 | Hewlett-Packard Company | Fast nullify system and method for transforming a nullify function into a select function |
US5903750A (en) | 1996-11-20 | 1999-05-11 | Institute For The Development Of Emerging Architectures, L.L.P. | Dynamic branch prediction for branch instructions with multiple targets |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US6286135B1 (en) | 1997-03-26 | 2001-09-04 | Hewlett-Packard Company | Cost-sensitive SSA-based strength reduction algorithm for a machine with predication support and segmented addresses |
US5983337A (en) | 1997-06-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction |
US5845103A (en) | 1997-06-13 | 1998-12-01 | Wisconsin Alumni Research Foundation | Computer with dynamic instruction reuse |
US6044222A (en) | 1997-06-23 | 2000-03-28 | International Business Machines Corporation | System, method, and program product for loop instruction scheduling hardware lookahead |
US5943501A (en) | 1997-06-27 | 1999-08-24 | Wisconsin Alumni Research Foundation | Multiple processor, distributed memory computer with out-of-order processing |
US5930158A (en) | 1997-07-02 | 1999-07-27 | Creative Technology, Ltd | Processor with instruction set for audio effects |
US7272703B2 (en) | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
US6185675B1 (en) | 1997-10-24 | 2001-02-06 | Advanced Micro Devices, Inc. | Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks |
US6182210B1 (en) | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6058438A (en) | 1998-02-06 | 2000-05-02 | Hewlett-Packard Company | Method and apparatus for performing high speed data transfers between a host memory and a geometry accelerator of a graphics machine |
US6164841A (en) | 1998-05-04 | 2000-12-26 | Hewlett-Packard Company | Method, apparatus, and product for dynamic software code translation system |
US6988183B1 (en) | 1998-06-26 | 2006-01-17 | Derek Chi-Lan Wong | Methods for increasing instruction-level parallelism in microprocessors and digital system |
US6212622B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation |
EP0992894A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Apparatus and method for loop execution |
US6275919B1 (en) | 1998-10-15 | 2001-08-14 | Creative Technology Ltd. | Memory storage and retrieval with multiple hashing functions |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
JP3565314B2 (ja) | 1998-12-17 | 2004-09-15 | 富士通株式会社 | 分岐命令実行制御装置 |
US6477683B1 (en) | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
GB2348305A (en) | 1999-03-24 | 2000-09-27 | Int Computers Ltd | Instruction execution mechanism |
US6453344B1 (en) | 1999-03-31 | 2002-09-17 | Amdahl Corporation | Multiprocessor servers with controlled numbered of CPUs |
US6438671B1 (en) | 1999-07-01 | 2002-08-20 | International Business Machines Corporation | Generating partition corresponding real address in partitioned mode supporting system |
US6523110B1 (en) | 1999-07-23 | 2003-02-18 | International Business Machines Corporation | Decoupled fetch-execute engine with static branch prediction support |
US6513109B1 (en) | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
JP2001092662A (ja) | 1999-09-22 | 2001-04-06 | Toshiba Corp | プロセッサコア及びこれを用いたプロセッサ |
US6986137B1 (en) | 1999-09-28 | 2006-01-10 | International Business Machines Corporation | Method, system and program products for managing logical processors of a computing environment |
US7051188B1 (en) | 1999-09-28 | 2006-05-23 | International Business Machines Corporation | Dynamically redistributing shareable resources of a computing environment to manage the workload of that environment |
US6651125B2 (en) | 1999-09-28 | 2003-11-18 | International Business Machines Corporation | Processing channel subsystem pending I/O work queues based on priorities |
WO2001025903A1 (en) | 1999-10-01 | 2001-04-12 | Sun Microsystems, Inc. | A method for precise trap handling in case of speculative and out-of-order loads |
EP1102163A3 (en) | 1999-11-15 | 2005-06-29 | Texas Instruments Incorporated | Microprocessor with improved instruction set architecture |
US6779100B1 (en) | 1999-12-17 | 2004-08-17 | Hewlett-Packard Development Company, L.P. | Method and device for address translation for compressed instructions |
US6732203B2 (en) | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
US6918032B1 (en) | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
US6934254B2 (en) | 2001-01-18 | 2005-08-23 | Motorola, Inc. | Method and apparatus for dynamically allocating resources in a communication system |
US7032217B2 (en) | 2001-03-26 | 2006-04-18 | Intel Corporation | Method and system for collaborative profiling for continuous detection of profile phase transitions |
US6957435B2 (en) | 2001-04-19 | 2005-10-18 | International Business Machines Corporation | Method and apparatus for allocating processor resources in a logically partitioned computer system |
US7453899B1 (en) | 2001-05-08 | 2008-11-18 | Lsi Corporation | Field programmable network application specific integrated circuit and a method of operation thereof |
US6965982B2 (en) | 2001-06-29 | 2005-11-15 | International Business Machines Corporation | Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread |
US7002956B2 (en) | 2001-07-05 | 2006-02-21 | International Business Machines Corporation | Network addressing method and system for localizing access to network resources in a computer network |
US7353287B2 (en) | 2001-09-26 | 2008-04-01 | Adobe Systems Incorporated | Marked foreign data blocks |
AU2002363142A1 (en) | 2001-10-31 | 2003-05-12 | Doug Burger | A scalable processing architecture |
EP1313012A1 (en) | 2001-11-15 | 2003-05-21 | Texas Instruments France | Java DSP acceleration by byte-code optimization |
US7228402B2 (en) | 2002-01-02 | 2007-06-05 | Intel Corporation | Predicate register file write by an instruction with a pending instruction having data dependency |
US7055021B2 (en) | 2002-02-05 | 2006-05-30 | Sun Microsystems, Inc. | Out-of-order processor that reduces mis-speculation using a replay scoreboard |
US6877059B2 (en) | 2002-03-29 | 2005-04-05 | Emc Corporation | Communications architecture for a high throughput storage processor |
JP2005522773A (ja) | 2002-04-08 | 2005-07-28 | ユニバーシティー・オブ・テキサス・システム | 非均等型キャッシュ装置、システム及び方法 |
WO2004001584A2 (en) | 2002-06-24 | 2003-12-31 | Ante Vista Gmbh | A method for executing structured symbolic machine code on a microprocessor |
JP3804941B2 (ja) | 2002-06-28 | 2006-08-02 | 富士通株式会社 | 命令フェッチ制御装置 |
US6934828B2 (en) | 2002-09-17 | 2005-08-23 | Intel Corporation | Decoupling floating point linear address |
US7299458B2 (en) | 2002-10-31 | 2007-11-20 | Src Computers, Inc. | System and method for converting control flow graph representations to control-dataflow graph representations |
US20040123078A1 (en) | 2002-12-24 | 2004-06-24 | Hum Herbert H | Method and apparatus for processing a load-lock instruction using a scoreboard mechanism |
US20040139299A1 (en) | 2003-01-14 | 2004-07-15 | International Business Machines Corporation | Operand forwarding in a superscalar processor |
US7210127B1 (en) | 2003-04-03 | 2007-04-24 | Sun Microsystems | Methods and apparatus for executing instructions in parallel |
US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US6996698B2 (en) | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
US7207038B2 (en) | 2003-08-29 | 2007-04-17 | Nokia Corporation | Constructing control flows graphs of binary executable programs at post-link time |
US7310722B2 (en) | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
WO2005093562A1 (ja) | 2004-03-29 | 2005-10-06 | Kyoto University | データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体 |
US7392524B2 (en) | 2004-04-06 | 2008-06-24 | International Business Machines Corporation | Method, system, and storage medium for managing computer processing functions |
US7334143B2 (en) | 2004-04-19 | 2008-02-19 | Hewlett-Packard Development Company, L.P. | Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value |
US7873776B2 (en) | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
US7685354B1 (en) | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
US7571284B1 (en) | 2004-06-30 | 2009-08-04 | Sun Microsystems, Inc. | Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor |
US8230252B2 (en) | 2004-07-20 | 2012-07-24 | Hewlett-Packard Development Company, L.P. | Time of day response |
US8166282B2 (en) | 2004-07-21 | 2012-04-24 | Intel Corporation | Multi-version register file for multithreading processors with live-in precomputation |
US7606995B2 (en) | 2004-07-23 | 2009-10-20 | Hewlett-Packard Development Company, L.P. | Allocating resources to partitions in a partitionable computer |
US7747992B2 (en) | 2004-08-23 | 2010-06-29 | Intel Corporation | Methods and apparatus for creating software basic block layouts |
JP4982971B2 (ja) | 2004-09-29 | 2012-07-25 | ソニー株式会社 | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
JP4345630B2 (ja) | 2004-09-29 | 2009-10-14 | ソニー株式会社 | 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム |
US7552318B2 (en) | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
US8756605B2 (en) | 2004-12-17 | 2014-06-17 | Oracle America, Inc. | Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline |
US8151092B2 (en) | 2005-01-12 | 2012-04-03 | International Business Machines Corporation | Control signal memoization in a multiple instruction issue microprocessor |
US7853777B2 (en) | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7380038B2 (en) | 2005-02-04 | 2008-05-27 | Microsoft Corporation | Priority registers for biasing access to shared resources |
US7805574B2 (en) | 2005-02-09 | 2010-09-28 | International Business Machines Corporation | Method and cache system with soft I-MRU member protection scheme during make MRU allocation |
US7152155B2 (en) | 2005-02-18 | 2006-12-19 | Qualcomm Incorporated | System and method of correcting a branch misprediction |
US7526633B2 (en) | 2005-03-23 | 2009-04-28 | Qualcomm Incorporated | Method and system for encoding variable length packets with variable instruction sizes |
US7581082B2 (en) | 2005-05-13 | 2009-08-25 | Texas Instruments Incorporated | Software source transfer selects instruction word sizes |
US7673119B2 (en) | 2005-05-13 | 2010-03-02 | Texas Instruments Incorporated | VLIW optional fetch packet header extends instruction set space |
JP4322232B2 (ja) | 2005-06-14 | 2009-08-26 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
US7779213B2 (en) | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US7437518B2 (en) | 2005-09-07 | 2008-10-14 | Intel Corporation | Hiding conflict, coherence completion and transaction ID elements of a coherence protocol |
US7412353B2 (en) | 2005-09-28 | 2008-08-12 | Intel Corporation | Reliable computing with a many-core processor |
US7490224B2 (en) | 2005-10-07 | 2009-02-10 | International Business Machines Corporation | Time-of-life counter design for handling instruction flushes from a queue |
JP4720436B2 (ja) | 2005-11-01 | 2011-07-13 | 株式会社日立製作所 | リコンフィギュラブルプロセッサまたは装置 |
US7716577B2 (en) | 2005-11-14 | 2010-05-11 | Oracle America, Inc. | Method and apparatus for hardware XML acceleration |
KR100806274B1 (ko) | 2005-12-06 | 2008-02-22 | 한국전자통신연구원 | 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법 |
US7475225B2 (en) | 2005-12-30 | 2009-01-06 | Intel Corporation | Method and apparatus for microarchitecture partitioning of execution clusters |
US7565654B2 (en) | 2006-01-10 | 2009-07-21 | National Instruments Corporation | Programmatic control of tasks in a programmable logic controller |
JP4923240B2 (ja) | 2006-01-17 | 2012-04-25 | 国立大学法人東京工業大学 | プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム |
US8510596B1 (en) | 2006-02-09 | 2013-08-13 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
US7350027B2 (en) | 2006-02-10 | 2008-03-25 | International Business Machines Corporation | Architectural support for thread level speculative execution |
US8266413B2 (en) | 2006-03-14 | 2012-09-11 | The Board Of Trustees Of The University Of Illinois | Processor architecture for multipass processing of instructions downstream of a stalled instruction |
US7802073B1 (en) | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US20070239965A1 (en) | 2006-03-31 | 2007-10-11 | Saul Lewites | Inter-partition communication |
US8010953B2 (en) | 2006-04-04 | 2011-08-30 | International Business Machines Corporation | Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
JP4849606B2 (ja) | 2006-04-28 | 2012-01-11 | 株式会社日立製作所 | 制御フロー誤り検出方法、データ処理装置、及びコンパイラ |
US7958396B2 (en) | 2006-05-19 | 2011-06-07 | Microsoft Corporation | Watchdog processors in multicore systems |
US8473724B1 (en) | 2006-07-09 | 2013-06-25 | Oracle America, Inc. | Controlling operation of a processor according to execution mode of an instruction sequence |
US7461241B2 (en) | 2006-07-31 | 2008-12-02 | International Business Machines Corporation | Concurrent physical processor reassignment method |
US8032734B2 (en) | 2006-09-06 | 2011-10-04 | Mips Technologies, Inc. | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor |
EP2122461A4 (en) | 2006-11-14 | 2010-03-24 | Soft Machines Inc | DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES |
US8028131B2 (en) | 2006-11-29 | 2011-09-27 | Intel Corporation | System and method for aggregating core-cache clusters in order to produce multi-core processors |
US7624254B2 (en) | 2007-01-24 | 2009-11-24 | Qualcomm Incorporated | Segmented pipeline flushing for mispredicted branches |
JP4957729B2 (ja) | 2007-01-25 | 2012-06-20 | 日本電気株式会社 | プログラム並列化方法、プログラム並列化装置及びプログラム |
US8250556B1 (en) | 2007-02-07 | 2012-08-21 | Tilera Corporation | Distributing parallelism for parallel processing architectures |
US7719532B2 (en) | 2007-02-09 | 2010-05-18 | International Business Machines Corporation | Efficient and flexible data organization for acceleration data structure nodes |
JP4339371B2 (ja) | 2007-03-22 | 2009-10-07 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
US20080235493A1 (en) | 2007-03-23 | 2008-09-25 | Qualcomm Incorporated | Instruction communication techniques for multi-processor system |
US20080250227A1 (en) | 2007-04-04 | 2008-10-09 | Linderman Michael D | General Purpose Multiprocessor Programming Apparatus And Method |
US7853950B2 (en) | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
US8161476B2 (en) | 2007-07-04 | 2012-04-17 | International Business Machines Corporation | Processor exclusivity in a partitioned system |
US8180997B2 (en) | 2007-07-05 | 2012-05-15 | Board Of Regents, University Of Texas System | Dynamically composing processor cores to form logical processors |
US8447911B2 (en) | 2007-07-05 | 2013-05-21 | Board Of Regents, University Of Texas System | Unordered load/store queue |
CN101344843B (zh) | 2007-07-10 | 2012-11-21 | 北京简约纳电子有限公司 | 一种指令级并行处理方法 |
JP2009026106A (ja) | 2007-07-20 | 2009-02-05 | Oki Electric Ind Co Ltd | 命令コード圧縮方法と命令フェッチ回路 |
US8225315B1 (en) | 2007-07-23 | 2012-07-17 | Oracle America, Inc. | Virtual core management |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8006070B2 (en) | 2007-12-05 | 2011-08-23 | International Business Machines Corporation | Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system |
US9529592B2 (en) | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US8146094B2 (en) * | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Guaranteeing delivery of multi-packet GSM messages |
US7877586B2 (en) | 2008-02-01 | 2011-01-25 | International Business Machines Corporation | Branch target address cache selectively applying a delayed hit |
US7885967B2 (en) | 2008-05-30 | 2011-02-08 | Red Hat, Inc. | Management of large dynamic tables |
US8321850B2 (en) | 2008-06-06 | 2012-11-27 | Vmware, Inc. | Sharing and persisting code caches |
EP2335149A1 (en) | 2008-09-08 | 2011-06-22 | Bridgeco, Inc. | Very long instruction word processor with multiple data queues |
US9152427B2 (en) | 2008-10-15 | 2015-10-06 | Hyperion Core, Inc. | Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file |
US8612698B2 (en) | 2008-10-31 | 2013-12-17 | Intel Corporation | Replacement policy for hot code detection |
US8127119B2 (en) | 2008-12-05 | 2012-02-28 | The Board Of Regents Of The University Of Texas System | Control-flow prediction using multiple independent predictors |
US20100146209A1 (en) | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
US9489207B2 (en) | 2009-04-14 | 2016-11-08 | International Business Machines Corporation | Processor and method for partially flushing a dispatched instruction group including a mispredicted branch |
US8214831B2 (en) | 2009-05-05 | 2012-07-03 | International Business Machines Corporation | Runtime dependence-aware scheduling using assist thread |
US20100325395A1 (en) | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
US8533436B2 (en) | 2009-06-26 | 2013-09-10 | Intel Corporation | Adaptively handling remote atomic execution based upon contention prediction |
US8433885B2 (en) | 2009-09-09 | 2013-04-30 | Board Of Regents Of The University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US20110078424A1 (en) | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Optimizing program code using branch elimination |
US8464002B2 (en) | 2009-10-14 | 2013-06-11 | Board Of Regents Of The University Of Texas System | Burst-based cache dead block prediction |
JP5057256B2 (ja) | 2009-12-02 | 2012-10-24 | 株式会社Mush−A | データ処理装置、データ処理システムおよびデータ処理方法 |
WO2011067896A1 (en) | 2009-12-02 | 2011-06-09 | Mush-A Co., Ltd. | Data processing apparatus, data processing system, packet, recording medium, storage device, and data processing method |
CN102096579B (zh) | 2009-12-11 | 2013-10-16 | 陈罡 | 一种嵌入式自适应模糊微处理器的组成与结构 |
US9043769B2 (en) | 2009-12-28 | 2015-05-26 | Hyperion Core Inc. | Optimization of loops and data flow sections in multi-core processor environment |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
US8434074B2 (en) | 2010-02-24 | 2013-04-30 | Intel Corporation | Register allocation with SIMD architecture using write masks |
US8667260B2 (en) | 2010-03-05 | 2014-03-04 | International Business Machines Corporation | Building approximate data dependences with a moving window |
JP2011209904A (ja) | 2010-03-29 | 2011-10-20 | Sony Corp | 命令フェッチ装置、および、プロセッサ |
KR101664108B1 (ko) | 2010-04-13 | 2016-10-11 | 삼성전자주식회사 | 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법 |
US8201024B2 (en) | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
US8555038B2 (en) | 2010-05-28 | 2013-10-08 | Oracle International Corporation | Processor and method providing instruction support for instructions that utilize multiple register windows |
WO2011159309A1 (en) | 2010-06-18 | 2011-12-22 | The Board Of Regents Of The University Of Texas System | Combined branch target and predicate prediction |
US20120030451A1 (en) | 2010-07-28 | 2012-02-02 | Broadcom Corporation | Parallel and long adaptive instruction set architecture |
US8904115B2 (en) | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US9836304B2 (en) | 2010-11-15 | 2017-12-05 | Advanced Micro Devices, Inc. | Cumulative confidence fetch throttling |
US8589892B2 (en) | 2010-11-21 | 2013-11-19 | International Business Machines Corporation | Verification of speculative execution |
US8612726B2 (en) | 2010-12-07 | 2013-12-17 | King Fahd University Of Petroleum And Minerals | Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type |
US9274793B2 (en) | 2011-03-25 | 2016-03-01 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
WO2012135041A2 (en) | 2011-03-25 | 2012-10-04 | Soft Machines, Inc. | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US8909941B1 (en) | 2011-03-31 | 2014-12-09 | Xilinx, Inc. | Programmable integrated circuit and a method of enabling the detection of tampering with data provided to a programmable integrated circuit |
WO2012136766A1 (en) | 2011-04-06 | 2012-10-11 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-core processors |
US20130024676A1 (en) | 2011-07-19 | 2013-01-24 | Glew Andrew F | Control flow integrity |
CN102306094B (zh) | 2011-08-16 | 2014-03-26 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
CN104011705A (zh) | 2011-12-01 | 2014-08-27 | 新加坡国立大学 | 多形异构性多核架构 |
WO2013095635A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for merging mask patterns |
US9304776B2 (en) | 2012-01-31 | 2016-04-05 | Oracle International Corporation | System and method for mitigating the impact of branch misprediction when exiting spin loops |
US9513922B2 (en) | 2012-04-20 | 2016-12-06 | Freescale Semiconductor, Inc. | Computer system and a method for generating an optimized program code |
US8930678B2 (en) | 2012-04-26 | 2015-01-06 | Intel Corporation | Instruction and logic to length decode X86 instructions |
US8880638B2 (en) | 2012-06-18 | 2014-11-04 | International Business Machines Corporation | Distributed image cache for servicing virtual resource requests in the cloud |
KR101964927B1 (ko) | 2012-07-17 | 2019-04-03 | 삼성전자 주식회사 | 캐싱 프록시 방법 및 장치 |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9400650B2 (en) | 2012-09-28 | 2016-07-26 | Intel Corporation | Read and write masks update instruction for vectorization of recursive computations over interdependent data |
US9710276B2 (en) | 2012-11-09 | 2017-07-18 | Advanced Micro Devices, Inc. | Execution of instruction loops using an instruction buffer |
US8930760B2 (en) | 2012-12-17 | 2015-01-06 | International Business Machines Corporation | Validating cache coherency protocol within a processor |
US9619229B2 (en) | 2012-12-27 | 2017-04-11 | Intel Corporation | Collapsing of multiple nested loops, methods and instructions |
US9361111B2 (en) | 2013-01-09 | 2016-06-07 | Arm Limited | Tracking speculative execution of instructions for a register renaming data store |
US10223124B2 (en) | 2013-01-11 | 2019-03-05 | Advanced Micro Devices, Inc. | Thread selection at a processor based on branch prediction confidence |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
WO2014143053A1 (en) | 2013-03-15 | 2014-09-18 | Intel Corporation | Dead block predictors for cooperative execution in the last level cache |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
US20140281622A1 (en) | 2013-03-15 | 2014-09-18 | Mahesh Wagh | Method, apparatus, and system for improving resume times for root ports and root port integrated endpoints |
WO2014143042A1 (en) | 2013-03-15 | 2014-09-18 | Intel Corporation | Path profiling using hardware and software combination |
US9471318B2 (en) | 2013-03-15 | 2016-10-18 | International Business Machines Corporation | System management and instruction counting |
US9886277B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
US9880842B2 (en) | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
JP6086230B2 (ja) | 2013-04-01 | 2017-03-01 | 日本電気株式会社 | 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法 |
US10114643B2 (en) | 2013-05-23 | 2018-10-30 | Intel Corporation | Techniques for detecting return-oriented programming |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
GB2515076B (en) | 2013-06-13 | 2020-07-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling retrieval of instructions from an instruction cache |
US10372527B2 (en) | 2013-07-15 | 2019-08-06 | Intel Corporation | Method of encoding data |
US10198269B2 (en) | 2013-08-28 | 2019-02-05 | Via Technologies, Inc. | Dynamic reconfiguration of multi-core processor |
US20150074355A1 (en) | 2013-09-12 | 2015-03-12 | Lsi Corporation | Efficient caching of file system journals |
US9547496B2 (en) | 2013-11-07 | 2017-01-17 | Microsoft Technology Licensing, Llc | Energy efficient multi-modal instruction issue |
US9448936B2 (en) | 2014-01-13 | 2016-09-20 | Apple Inc. | Concurrent store and load operations |
CN104310225A (zh) | 2014-08-19 | 2015-01-28 | 中国十七冶集团有限公司 | 建筑起重机械安全控制装置 |
US20160055004A1 (en) | 2014-08-21 | 2016-02-25 | Edward T. Grochowski | Method and apparatus for non-speculative fetch and execution of control-dependent blocks |
US9569613B2 (en) | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
US20160328237A1 (en) | 2015-05-07 | 2016-11-10 | Via Alliance Semiconductor Co., Ltd. | System and method to reduce load-store collision penalty in speculative out of order engine |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US20160378491A1 (en) | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Determination of target location for transfer of processor control |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US20160378488A1 (en) | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Access to target address |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US20170083343A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Out of order commit |
-
2015
- 2015-06-26 US US14/752,747 patent/US9946548B2/en active Active
-
2016
- 2016-06-23 WO PCT/US2016/038852 patent/WO2016210029A1/en active Application Filing
- 2016-06-23 CN CN201680036621.2A patent/CN107810481B/zh active Active
- 2016-06-23 EP EP16736968.5A patent/EP3314402B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI226016B (en) * | 2003-01-06 | 2005-01-01 | Taifatech Inc | Linear access window |
US8380964B2 (en) * | 2009-04-03 | 2013-02-19 | International Business Machines Corporation | Processor including age tracking of issue queue instructions |
US8489863B2 (en) * | 2009-04-03 | 2013-07-16 | International Business Machines Corporation | Processor including age tracking of issue queue instructions |
CN102395949A (zh) * | 2009-05-05 | 2012-03-28 | 飞思卡尔半导体公司 | 用于调试的地址转换跟踪消息生成 |
US8290994B2 (en) * | 2010-05-05 | 2012-10-16 | International Business Machines Corporation | Obtaining file system view in block-level data storage systems |
CN104583936A (zh) * | 2012-06-15 | 2015-04-29 | 索夫特机械公司 | 具有组成按序从存储器进行读取的加载的存储器一致性模型中的乱序加载的信号量方法和系统 |
Non-Patent Citations (3)
Title |
---|
Exploiting ILP, TLP, and DLP with the polymorphous TRIPS architecture;Karthikeyan Sankaralingam等;《ISCA "03: Proceedings of the 30th annual international symposium on Computer architecture》;ACM;20030531;全文 * |
TRIPS: A polymorphous architecture for exploiting ILP, TLP, and DLP;Karthikeyan Sankaralingam等;《ACM Transactions on Architecture and Code Optimization》;ACM;20040331;第1卷(第1期);全文 * |
高效处理器容错技术研究与实现;刘光辉;《中国博士学位论文全文数据库》;中国学术期刊(光盘版)电子杂志社;20150115(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20160378502A1 (en) | 2016-12-29 |
CN107810481A (zh) | 2018-03-16 |
US9946548B2 (en) | 2018-04-17 |
EP3314402B1 (en) | 2020-12-02 |
EP3314402A1 (en) | 2018-05-02 |
WO2016210029A1 (en) | 2016-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107810481B (zh) | 处理器指令窗口中的指令块的基于年龄的管理 | |
US11048517B2 (en) | Decoupled processor instruction window and operand buffer | |
CN107771318B (zh) | 基于块大小将指令块映射到指令窗口 | |
CN107810482B (zh) | 指令块到处理器指令窗口的批量分配 | |
EP3289444A1 (en) | Explicit instruction scheduler state information for a processor | |
CN107810486B (zh) | 锁定用于原子地执行的指令组的操作数的值 | |
US10409599B2 (en) | Decoding information about a group of instructions including a size of the group of instructions | |
CN114174985A (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 |