CN107810476A - 解耦合的处理器指令窗口和操作数缓冲区 - Google Patents
解耦合的处理器指令窗口和操作数缓冲区 Download PDFInfo
- Publication number
- CN107810476A CN107810476A CN201680037470.2A CN201680037470A CN107810476A CN 107810476 A CN107810476 A CN 107810476A CN 201680037470 A CN201680037470 A CN 201680037470A CN 107810476 A CN107810476 A CN 107810476A
- Authority
- CN
- China
- Prior art keywords
- instruction
- block
- instruction block
- window
- operand
- 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
- 239000000872 buffer Substances 0.000 title claims abstract description 31
- 238000000034 method Methods 0.000 claims description 46
- 230000003139 buffering effect Effects 0.000 claims description 16
- 230000004083 survival effect Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 230000015654 memory Effects 0.000 description 10
- 230000011218 segmentation Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 4
- 125000004122 cyclic group Chemical group 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 235000019580 granularity Nutrition 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 210000003484 anatomy Anatomy 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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, 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, 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
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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/30047—Prefetch instructions; cache control instructions
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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, 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, 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, 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
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一种基于指令块的微架构中的处理器内核被配置为使得指令窗口和操作数缓冲区被解耦合以进行独立地操作,其中块中的指令不与资源(诸如被维持在操作数缓冲区中的控制位和操作数)严格地绑定。相反,在块和资源中的指令之间建立指针,使得可以通过跟随这些指针来为经刷新的指令块(即,被重新使用而不从指令高速缓存重新提取的指令块)建立控制状态。指令窗口与操作数空间的这种解耦合可以提供更高的处理器效率,特别是在利用刷新的多核心阵列中(例如,当执行使用紧密的循环的程序代码时),因为操作数和控制位被预验证。
Description
背景技术
指令集架构(ISA)和处理器的设计者对功耗和性能进行权衡。例如,如果设计者选择具有递送更高性能的指令的ISA,则处理器的功耗可能也会更高。或者,如果设计者选择具有功耗较低的指令的ISA,则性能可能更低。功耗可以与在执行期间由指令所使用的处理器的硬件资源(诸如算术逻辑单元(ALU)、高速缓存线或寄存器)的数量相关。使用大量这样的硬件资源可以以较高的功耗为代价递送较高的性能。或者,使用少量这样的硬件资源可以以较低的性能为代价产生较低的功耗。编译器可以用于将高级代码编译成与ISA和处理器架构兼容的指令。
发明内容
一种基于指令块的微架构中的处理器内核被配置为使得指令窗口和操作数缓冲区被解耦合以进行独立地操作,其中块中的指令不与资源(诸如被维持在操作数缓冲区中的控制位和操作数)严格地绑定。相反,在块和资源中的指令之间建立指针,使得可以通过跟随这些指针来为经刷新的指令块(即,被重新使用而不从指令高速缓存重新提取的指令块)建立控制状态。指令窗口与操作数空间的这种解耦合可以提供更高的处理器效率,特别是在利用刷新的多核心阵列中(例如,当执行使用紧密的循环的程序代码时),因为操作数和控制位被预验证。
提供本“发明内容”以便以简化的形式介绍将在以下“具体实施方式”中进一步描述的一些概念。本“发明内容”不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于帮助确定所要求保护的主题的范围。此外,所要求保护的主题不限于解决本公开的任何部分中提到的任何或全部缺点的实现。
附图说明
图1示出了说明性计算环境,其中编译器提供在包括多个处理器内核的架构上所运行的编码指令;
图2是用于示例性处理器内核的说明性微架构的框图;
图3示出了块标头(block header)的说明性布置;以及
图4-15是说明性方法的流程图。
相似的附图标记表示附图中的相似的元素。除非另有说明,否则元素不是按比例绘制的。
具体实施方式
图1示出了可以与其一起利用指令块的当前基于年龄的管理的说明性计算环境100。该环境包括编译器105,其可以用于从程序115生成编码的机器可执行指令110指令110可以由处理器架构120处理,处理器架构120被配置为处理具有可变尺寸内容(例如,在4到128个指令之间)的指令块。
处理器架构120通常包括平铺配置的多个处理器内核(由附图标记125代表性地指示),这些处理器内核由片上网络(未示出)互连,并且还与一个或多个2级(L2)高速缓存(由附图标记130代表性地指示)交互操作。尽管内核和高速缓存的数目和配置可以根据实施方式而变化,但是应当注意,物理内核可以在程序115的运行时期间在被称为“合成”的过程中被一起合并到一个或多个更大的逻辑处理器中,更大的逻辑处理器可以使得更多的处理能力致力于程序执行。或者,当程序执行支持合适的线程级并行性时,内核125可以在被称为“分解”的过程中被拆分以独立地工作,并且执行来自独立线程的指令。
图2是说明性处理器内核125的一部分的简化框图。如图所示,处理器内核125可以包括前端控制单元202、指令高速缓存204、分支预测器206、指令解码器208、指令窗口210、左操作数缓冲区212、右操作数缓冲区214、算术逻辑单元(ALU)216、另一ALU 218、寄存器220以及加载/存储队列222。在一些情况下,总线(由箭头指示)可以携带数据和指令,而在其他情况下,总线可以携带数据(例如,操作数)或控制信号。例如,前端控制单元202可以经由仅携带控制信号的总线来与其他控制网络通信。尽管图2示出了以特定安排来被布置的用于处理器内核125的一定数目的说明性部件,但是取决于特定实施方式的需要,可以具有不同布置的更多或更少的部件。
前端控制单元202可以包括被配置为控制通过处理器内核的信息流的电路以及用于协调其内的活动的电路。前端控制单元202还可以包括用于实施有限状态机(FSM)的电路,在FSM中状态列举了处理器内核可以采用的每个操作配置。通过使用操作码(如下所述)和/或其他输入(例如,硬件级信号),前端控制单元202中的FSM电路可以确定下一状态并且控制输出。
因此,前端控制单元202可以从指令高速缓存204提取指令,以用于由指令解码器208进行处理。前端控制单元202可以通过控制网络或总线来与处理器内核125的其他部分交换控制信息。例如,前端控制单元可以与后端控制单元224交换控制信息。在一些实施方式中,前端控制单元和后端控制单元可以被集成到单个控制单元中。
前端控制单元202还可以协调和管理对处理器架构120(图1)的各个内核和其他部分的控制。因此,例如,指令块可以同时在多个内核上执行,并且前端控制单元202可以经由控制网络来与其他内核交换控制信息,以根据需要确保各种指令块执行的同步。
前端控制单元202可以进一步处理关于以原子态执行的指令块的控制信息和元信息。例如,前端控制单元202可以处理与指令块相关联的块标头。如下面更详细地讨论的,块标头可以包括关于指令块的控制信息和/或元信息。相应地,前端控制单元202可以包括组合逻辑、状态机和暂态存储单元(诸如触发器),以处理块标头中的各个字段。
前端控制单元202可以在每个时钟周期提取并解码单个指令或多个指令。已解码指令可以存储在指令窗口210中,指令窗口210在处理器内核硬件中被实施作为缓冲区。指令窗口210可以支持指令调度器230,在一些实施方式中,指令调度器230可以保持每个已解码指令的输入(诸如断言和操作数)的就绪状态。例如,当其所有输入(如果有的话)就绪时,给定的指令可以由指令调度器230唤醒并且准备好被发出。
在发出指令之前,根据需要,指令所需要的任何操作数可以被存储在左操作数缓冲区212和/或右操作数缓冲区214中。取决于指令的操作码,可以使用ALU 216和/或ALU218或其他功能单元来对操作数执行操作。ALU的输出可以存储在操作数缓冲区中,或者存储在一个或多个寄存器220中。以数据流顺序发出的存储操作可以在加载/存储队列222中排队,直到指令块提交。当指令块提交时,加载/存储队列222可以将所提交的块存储写入存储器。分支预测器206可以处理与分支出口类型相关的块标头信息,并且在进行分支预测时将该信息作为因素。
如上所述,处理器架构120通常利用在以原子态提取、执行和提交的块中所组织的指令。因此,处理器内核可以集中地提取属于单个块的指令,将它们映射到处理器内核内的执行资源,执行指令,并且以原子态提交它们的结果。处理器可以提交所有指令的结果,或者可以取消整个块的执行。块内的指令可以按照数据流顺序执行。另外,处理器可以允许块内的指令使用消息或其他合适形式的通信来彼此直接通信。因此,产生结果的指令可以将该结果传送给块中利用该结果的另一指令,而非将结果写入寄存器文件。作为示例,对存储在寄存器R1和R2中的值进行累加的指令可以被表示为如下面的表1所示:
表1
以这种方式,源操作数不是用指令指定的,而是由以ADD指令为目标的指令来指定的。编译器105(图1)可以在指令110的编译期间显式地对控制和数据依赖关系进行编码,从而使得处理器内核无需在运行时重新发现这些依赖关系。这可以有利地使得在这些指令的执行期间处理器负载减少并且节能。作为示例,编译器可以使用断言来将所有的控制依赖关系转换成数据流指令。通过使用这些技术,可以减少对耗电的寄存器文件的访问次数。下面的表2显示了这样的指令的通用指令格式的示例:
表2
OPCODE | PR | BID | XOP | TARGET1 | TARGET2 |
每个指令可以具有合适的尺寸,诸如32位、64位或另一尺寸。在表2所示的示例中,每个指令可以包括OPCODE字段、PR(断言)字段、BID(广播ID)字段、XOP(扩展的OPCODE)字段、TARGET1字段和TARGET2字段。OPCODE字段可以为指令或指令块指定唯一的操作码,诸如加法、读取、写入或乘法。PR(预测)字段可以指定与指令相关联的任何断言。例如,可以使用2位的PR字段,如下:00-未被断言,01-保留,10-是虚假断言,11-真实断言。因此,例如,如果只有在比较结果为真的情况下才执行指令,则可以根据执行比较的另一指令的结果来对该指令进行断言。BID(广播ID)字段可以支持将操作数发送到块中的任何数目的消费者指令。2位的BID字段可以用来对指令在其上接收其操作数中的一项的广播信道进行编码。XOP(扩展的OPCODE)字段可以支持对操作码的类型进行扩展。TARGET1和TARGET2字段最多可以允许待编码两个目标指令。目标字段可以指定生产者指令的结果的消费者指令,从而允许指令之间的直接通信。
每个指令块可以具有与该指令块相关联的特定信息,诸如与该块相关的控制信息和/或元信息。这个信息可以在将程序编译成指令110的过程中由编译器105生成,以用于在处理器架构120上执行。这些信息中的一些可以在指令块的编译过程中被编译器提取,并且然后检查运行时期间的指令性质。
另外,与指令块相关联的信息可以是元信息。作为示例,这样的信息可以使用专用指令或者提供与寄存器或其他存储器相关的目标编码的指令被提供给处理器内核,其中寄存器或其他存储器可以具有与指令块相关联的相关信息。在专用指令的情况下,这样的指令的操作码字段可以用于传送与指令块相关的信息。在另一示例中,这样的信息可以被维持作为处理器状态字(PSW)的一部分。例如,该信息可以有利地帮助处理器更有效地执行指令块。
各种类型的信息可以使用块标头、专用指令、存储器引用的位置、处理器状态字(PSW)或其各种组合来被提供给处理器内核。说明性指令块标头300在图3中示出。在该说明性示例中,块标头300是128位,并且开始于距块的程序计数器的偏移量0处。还示出了每个字段的相应的开始和结束。这些字段在下面的表3中描述:
表3
尽管在图3中示出和表3中描述的块标头包括多个字段,但是其旨在是说明性的,并且其他字段布置可以用于特定实施方式。
在说明性示例中,编译器105(图1)可以选择用于包括在块标头中的信息,或者用于专用指令的信息,专用指令可以基于指令的性质和/或基于处理要求的性质(诸如高性能或低功耗)向处理器内核提供这样的信息。这可以有利地允许在性能和功耗之间的权衡的更好平衡。对于某些类型的处理应用(诸如大量内核的高性能计算),大量信息可能是理想的选择。或者,对于诸如在物联网中使用的嵌入式处理器、移动设备、可穿戴设备、头戴式显示器(HMD)设备或其他嵌入式计算类型的应用等其他类型的处理应用,较少信息可能是理想的选择。
使用块标头或专用指令传送的信息的范围可以根据块中指令的性质来裁剪。例如,如果指令块包括以循环方式执行的循环,则可能需要更广泛的信息来封装与该块相关联的控制信息。附加控制信息可以允许处理器内核更有效地执行循环,从而提高性能。
或者,如果存在将被很少执行的指令块,则相对较少的信息就足够了。例如,如果指令块包括若干预测的控制回路,则可能需要更多的信息。类似地,如果指令块具有大量的指令级并行性,则可能需要更多信息作为块标头或专用指令的部分。
块标头中的附加控制信息或专用指令例如可以用于有效地利用指令块中的指令级并行性。如果指令块包括若干分支预测,则可能需要更多的信息。有关分支预测的附加控制信息通常将使代码执行更为高效,因为这可能导致更少的管线刷新。
注意,与块标头中的字段相对应的功能可以被组合或者被进一步分离。类似地,专用指令可以提供与图3和表3中所示的任何一个字段相关的信息,或者可以对来自这些字段的信息进行组合。例如,尽管图3和表3的说明性块标头包括单独的ID字段和SIZE字段,但是这两个字段可以组合成单个字段。
同样,当被解码时,单个专用指令可以提供关于指令块的尺寸的信息和ID字段中的信息。除非另有说明,否则专用指令可以被包括在指令块中的任何地方。例如,BLOCK_SIZE#size(尺寸)指令可以包含包括指令块的尺寸的值的直接(immediate)字段。直接字段可以包含提供尺寸信息的整数值。或者,直接字段可以包括与尺寸信息相关的编码值,使得尺寸信息可以通过对编码值进行解码来获得,例如,通过在可以使用逻辑、寄存器、存储器或代码流中的一项来表示的尺寸表中查找该值。在另一示例中,BLOCK_ID#id专用指令可以传送块ID号码。
单独的数学函数或基于存储器的表可以将块ID映射到块标头的存储器地址。作为这样的指令的部分被传送的块ID对于每个指令块可以是唯一的。在另一示例中,BLOCK_HDR_ID#id指令可以传送块标头ID号。单独的数学函数或基于存储器的表可以将块ID映射到块标头的存储器地址。作为这样的指令的部分被传送的块ID可以由具有相同标头结构或字段的若干指令块所共享。
在另一示例中,BLOCK_INFO#size(尺寸)、#exit types(出口类型)、#store mask(存储掩码)、#write mask(写入掩码)指令可以提供关于指令的枚举字段的信息。这些字段可以对应于上面关于表3所讨论的任何一个字段。根据给定实施方式的要求,可以对块标头结构和格式以及专用指令进行其他改变。例如,可以提供包括与指令块的特性相关的信息的附加字段。基于指令块执行的频率,可以包括特定字段。
被包括在块标头结构中的字段、或者经由先前讨论的专用指令或其他机制所提供的信息可以是特定处理器或处理器系列的公共可用标准指令集架构(ISA)的一部分。这些字段的子集可以是ISA的专属扩展。该字段中的某些位值可能是处理器的标准ISA的一部分,但是该字段中的某些其他位值可以提供专属功能。该示例性字段可以允许ISA设计者向ISA添加专属扩展,而不完全公开与专属扩展相关联的性质和功能。因此,在这种情况下,由ISA设计人员分发的编译器工具将支持该字段中的专属位值、完全独立的专属字段、或专用指令。这样的字段的使用可以与某些处理器设计专有的硬件加速器特别相关。因此,程序可以包括块标头字段或不可识别的专用指令;但是程序还可以包括用于解密字段或解码指令的办法(recipe)。
编译器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中示出的SIZE字段来硬编码指令块尺寸,而是可以使用该字段来编码或存储到尺寸表的索引。也就是说,索引可以用作指向尺寸窗口中条目的指针,以使得特定尺寸能够与指令块相关联。
尺寸表中所包括的尺寸条目的数目可以根据实施方式而变化。可以使用更多数目的尺寸条目来实现更大的粒度,这在与给定的程序相关联的指令块尺寸的分布相对较宽的情况下可能是有益的,但是在典型的实施方式中以开销增加为代价。在一些情况下,可以由编译器选择被包括在表中的尺寸的数目,以便以能够优化整个指令封装密度的方式来覆盖指令块尺寸的特定分布,并且使无操作(no op)最少化。例如,可以选择被包括在尺寸表中的尺寸以匹配程序中常用的块指令尺寸。在步骤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,可以应用包括使用循环缓冲区来将指令块映射到指令窗口中的策略。
在一些实施方式中,可以利用策略的各种组合来进一步增强处理器内核效率。例如,控制单元可以在策略之间动态地切换,以应用为给定指令块或指令块组提供更优化的操作的策略。例如,在一些情况下,使用循环缓冲技术可能更高效,其中指令块以连续的方式按顺序被处理。在其他情况下,无序和基于存活期的处理可以提供更优化的操作。
图15是可以由布置在处理器内核中的控制单元执行的说明性方法1500的流程图。在步骤1505中,以与上述类似的方式将指令窗口配置为具有多个分段,该多个分段具有两个或更多个不同尺寸。在步骤1510中,提取指令块,并且在步骤1515中,提取其所有相关联的资源。
在步骤1520中,将指令块放置在使得窗口中的指令密度最大化的窗口的合适的分段中。例如,如果编译器产生包括具有较低指令计数的相对大量的块的块尺寸分布(例如,以实施程序分支等),则指令窗口可以具有针对小指令块而被特别地确定尺寸的分段。类似地,如果存在相对大量的高指令计数块(例如,用于科学和类似的应用),则可以针对这样的较大指令块对分段特别地确定尺寸。因此,指令窗口分段定尺寸可以根据特定尺寸分布来被调节,或者在一些情况下当分布变化时被动态地调节。在框1525中,如上所述,指令块可以受到指令块标头中所指定的限制。
现在通过说明而不是所有实施例的详尽列表的方式来呈现当前解耦的处理器指令窗口和操作数缓冲区的各种示例性实施例。一个示例包括一种用于管理布置在处理器中的指令窗口中的指令块的方法,包括:将包括包括一个或多个解码指令的指令块映射从指令高速缓存到指令窗口中;为指令块分配资源,其中资源包括与指令块中的一个或多个解码指令中的每一个解码指令相关联的控制位和操作数;维持资源和块中的一个或多个解码指令之间的一个或多个指针;刷新指令块,而不从指令高速缓存重新提取指令块;以及通过跟随一个或多个指针来重新使用资源。在另一示例中,该方法还包括为从指令高速缓存提取的每个指令块执行批量分配以获取与指令块中的一个或多个指令中的每一个指令相关联的资源。在另一示例中,该方法还包括在于指令窗口解耦合的操作数缓冲区中维持操作数和控制位,以使得在资源在指令块被刷新时被预验证。在另一示例中,控制位包括操作数就绪状态。在另一示例中,资源包括操作码。在另一示例中,该方法还包括基于程序来利用指令块,以及在使用编程循环来实现程序的执行时刷新指令块。
另一示例包括一种基于指令块的微架构,包括:控制单元;一个或多个操作数缓冲区;以及被配置为存储要在所述控制单元的控制之下的解码指令块的指令窗口,其中控制包括用于进行以下的操作:将指令块映射到指令窗口中,以使得新的指令块替换提交的指令块,为新的指令块分配资源,其中资源包括控制位或操作数,并且将指令窗口从一个或多个操作数缓冲区解耦合,其中指令块和操作数块被独立地管理,以使得资源在指令块被刷新时被预验证。在另一示例中,基于指令块的微架构还包括用于基于在指令块的标头中所指定的限制来映射指令块的配置。在另一示例中,如权利要求8所述的基于指令块的微架构,其中所指定的限制包括以下一项:对准限制或指令窗口的指令块容量限制。在另一示例中,基于指令块的微架构还包括用以跟踪指令窗口中的指令块的顺序并且无序地提交指令块的配置。在另一示例中,基于指令块的微架构还包括片上网络,该片上网络使得多个处理器内核能够被组合或分解。在另一示例中,基于指令块的微架构还包括用以在多个处理器内核被组合时维持逻辑指令窗口与一个或多个逻辑操作数缓冲区之间的解耦合的配置。在另一示例中,基于指令块的微架构还包括用以在多个处理器内核被分解时维持逻辑指令窗口与一个或多个逻辑操作数缓冲区之间的解耦合的配置。在另一示例中,基于指令块的微架构还包括用于刷新所述指令块而不从指令高速缓存重新提取所述指令块的配置。
另一示例包括一种布置在处理器中的控制单元,该处理器被布置为执行用于指令块管理的方法,该方法包括:维持用于缓冲一个或多个指令块的指令窗口;维持用于为一个或多个指令块缓冲资源的一个或多个操作数缓冲区;使用指令块与缓冲资源之间的指针来跟踪状态;在刷新指令块时,跟随指针以重新使用跟踪状态。在另一示例中,控制单元还包括:在提交指令块时清除控制位并且设置新的指针。在另一示例中,控制单元还包括将指令窗口与一个或多个操作数缓冲区解耦合,以使得在非对应的基础上维持指令块和操作数块。在另一示例中,控制单元还包括批量分配缓冲的资源,以使得为指令块中的所有指令获得资源。在另一示例中,控制单元还包括维持包括多个处理器内核的逻辑指令窗口。在另一示例中,控制单元还包括维持包括多个处理器内核的逻辑操作数缓冲区,并且进一步将逻辑操作数缓冲区与逻辑指令窗口解耦合,使得能够在刷新指令块时预验证状态而不重新提取。
上述主题被提供仅作为说明,而不应当被解释为限制。可以对本文中描述的主题进行各种修改和改变,而不遵循示出和描述的示例实施例和应用,并且不偏离在以下权利要求中阐述的本公开的真实精神和范围。
Claims (14)
1.一种用于管理指令窗口中的指令块的方法,所述指令窗口在布置处理器中,所述方法包括:
将指令块从指令高速缓存映射到所述指令窗口中,所述指令块包括一个或多个解码指令;
为所述指令块分配资源,其中所述资源包括与所述指令块中的所述一个或多个解码指令中的每一个解码指令相关联的控制位和操作数;
维持所述资源和所述块中的所述一个或多个解码指令之间的一个或多个指针;
刷新所述指令块,而不从所述指令高速缓存重新提取所述指令块;以及
通过跟随所述一个或多个指针来重新使用所述资源。
2.根据权利要求1所述的方法,还包括:为从所述指令高速缓存提取的每个指令块执行批量分配,以获取与所述指令块中的所述一个或多个指令中的每一个指令相关联的资源。
3.根据权利要求1所述的方法,还包括在与所述指令窗口解耦合的操作数缓冲区中维持操作数和控制位,以使得资源在指令块被刷新时被预验证。
4.根据权利要求3所述的方法,其中所述控制位包括操作数就绪状态。
5.根据权利要求1所述的方法,其中所述资源包括操作码。
6.根据权利要求5所述的方法,还包括:基于程序来利用指令块,以及在使用编程循环来实现所述程序的执行时刷新所述指令块。
7.一种基于指令块的微架构,包括:
控制单元;
一个或多个操作数缓冲区;以及
指令窗口,所述指令窗口被配置为存储要在所述控制单元的控制之下的解码指令块,其中所述控制包括用于进行以下的操作:
将指令块映射到所述指令窗口中,以使得新的指令块替换已提交的指令块,
为所述新的指令块分配资源,其中所述资源包括控制位或操作数,以及
将所述指令窗口从所述一个或多个操作数缓冲区解耦合,其中指令块和操作数块被独立地管理,以使得资源在指令块被刷新时被预验证。
8.根据权利要求7所述的基于指令块的微架构,还包括用以基于在所述指令块的标头中所指定的限制来映射所述指令块的配置。
9.根据权利要求8所述的基于指令块的微架构,其中指定的所述限制包括以下一项:对准限制或所述指令窗口的指令块容量限制。
10.根据权利要求7所述的基于指令块的微架构,还包括用以跟踪所述指令窗口中的所述指令块的顺序并且无序地提交指令块的配置。
11.根据权利要求7所述的基于指令块的微架构,还包括片上网络,所述片上网络支持多个处理器内核被组合或分解。
12.根据权利要求11所述的基于指令块的微架构,还包括用以在所述多个处理器内核被组合时维持逻辑指令窗口与一个或多个逻辑操作数缓冲区之间的解耦合的配置。
13.根据权利要求11所述的基于指令块的微架构,还包括用以在所述多个处理器内核被分解时维持逻辑指令窗口与一个或多个逻辑操作数缓冲区之间的解耦合的配置。
14.根据权利要求7所述的基于指令块的微架构,还包括用以刷新所述指令块而不从指令高速缓存重新提取所述指令块的配置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/752,724 US10346168B2 (en) | 2015-06-26 | 2015-06-26 | Decoupled processor instruction window and operand buffer |
US14/752,724 | 2015-06-26 | ||
PCT/US2016/038850 WO2016210027A1 (en) | 2015-06-26 | 2016-06-23 | Decoupled processor instruction window and operand buffer |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107810476A true CN107810476A (zh) | 2018-03-16 |
CN107810476B CN107810476B (zh) | 2021-02-23 |
Family
ID=56369215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680037470.2A Active CN107810476B (zh) | 2015-06-26 | 2016-06-23 | 解耦合的处理器指令窗口和操作数缓冲区 |
Country Status (16)
Country | Link |
---|---|
US (2) | US10346168B2 (zh) |
EP (1) | EP3314399B1 (zh) |
JP (1) | JP2018518775A (zh) |
KR (1) | KR102502780B1 (zh) |
CN (1) | CN107810476B (zh) |
AU (1) | AU2016281599A1 (zh) |
BR (1) | BR112017024301A2 (zh) |
CA (1) | CA2986266A1 (zh) |
CL (1) | CL2017003310A1 (zh) |
CO (1) | CO2017013252A2 (zh) |
HK (1) | HK1246443A1 (zh) |
IL (1) | IL256168A (zh) |
MX (1) | MX2017016197A (zh) |
PH (1) | PH12017550124A1 (zh) |
TW (1) | TW201712533A (zh) |
WO (1) | WO2016210027A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000420A (zh) * | 2020-11-02 | 2020-11-27 | 武汉中科通达高新技术股份有限公司 | 一种数据处理方法和装置 |
CN115617402A (zh) * | 2022-11-18 | 2023-01-17 | 北京数渡信息科技有限公司 | 一种适用于通用处理器的解耦合分支预测方法及装置 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10346168B2 (en) * | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
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 |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9720693B2 (en) * | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
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 |
US9940136B2 (en) * | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US9952867B2 (en) * | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US11531552B2 (en) * | 2017-02-06 | 2022-12-20 | Microsoft Technology Licensing, Llc | Executing multiple programs simultaneously on a processor core |
US10824429B2 (en) * | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
US11630668B1 (en) * | 2021-11-18 | 2023-04-18 | Nxp B.V. | Processor with smart cache in place of register file for providing operands |
US20240111654A1 (en) * | 2022-09-29 | 2024-04-04 | Intel Corporation | Hybrid performance monitoring unit (pmu) enumeration |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0992894A1 (en) * | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Apparatus and method for loop execution |
US7207038B2 (en) * | 2003-08-29 | 2007-04-17 | Nokia Corporation | Constructing control flows graphs of binary executable programs at post-link time |
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
US7260694B2 (en) * | 2003-04-10 | 2007-08-21 | Arm Limited | Data processor memory circuit |
JP2008299790A (ja) * | 2007-06-04 | 2008-12-11 | Digital Electronics Corp | マイクロプロセッサ |
US7779213B2 (en) * | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
CN102364431A (zh) * | 2011-10-20 | 2012-02-29 | 北京北大众志微系统科技有限责任公司 | 一种实现读指令执行的方法及装置 |
US20150127928A1 (en) * | 2013-11-07 | 2015-05-07 | Microsoft Corporation | Energy Efficient Multi-Modal Instruction Issue |
CN104731718A (zh) * | 2013-12-24 | 2015-06-24 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
Family Cites Families (298)
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 |
US5333280A (en) | 1990-04-06 | 1994-07-26 | Nec Corporation | Parallel pipelined instruction processing system for very long instruction word |
US5551033A (en) | 1991-05-17 | 1996-08-27 | Zenith Data Systems Corporation | Apparatus for maintaining one interrupt mask register in conformity with another in a manner invisible to an executing program |
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 |
TW226016B (zh) | 1991-12-30 | 1994-07-01 | Sterling Winthrop Inc | |
WO1993020505A2 (en) | 1992-03-31 | 1993-10-14 | Seiko Epson Corporation | Superscalar risc instruction scheduling |
US5346345A (en) * | 1992-07-31 | 1994-09-13 | Ford Motor Company | High-force linear motor assembly using tandem axes |
EP0583089B1 (en) | 1992-08-12 | 2000-01-26 | Advanced Micro Devices, Inc. | Instruction decoder |
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 |
US5832297A (en) | 1995-04-12 | 1998-11-03 | Advanced Micro Devices, Inc. | Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations |
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 |
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 |
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 |
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 |
US6055623A (en) | 1998-04-07 | 2000-04-25 | International Business Machine Corporation | Specialized millicode instruction for editing functions |
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 |
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 |
JP2003511754A (ja) | 1999-10-01 | 2003-03-25 | サン・マイクロシステムズ・インコーポレイテッド | 投機的なかつ順不同(out−of−order)のロードの場合に正確なトラップ処理をするための方法 |
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 |
US6725335B2 (en) | 2000-02-09 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method and system for fast unlinking of a linked branch in a caching dynamic translator |
US6732260B1 (en) | 2000-03-06 | 2004-05-04 | Intel Corporation | Presbyopic branch target prefetch method and apparatus |
US6615340B1 (en) | 2000-03-22 | 2003-09-02 | Wilmot, Ii Richard Byron | Extended operand management indicator structure and method |
US6918032B1 (en) | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
US6654860B1 (en) | 2000-07-27 | 2003-11-25 | Advanced Micro Devices, Inc. | Method and apparatus for removing speculative memory accesses from a memory access queue for issuance to memory or discarding |
US7069555B1 (en) | 2000-09-29 | 2006-06-27 | Microsoft Corporation | Super-region instruction scheduling and code generation for merging identical instruction into the ready-to-schedule instruction |
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 |
WO2003038645A2 (en) | 2001-10-31 | 2003-05-08 | University Of Texas | A scalable processing architecture |
EP1313012A1 (en) | 2001-11-15 | 2003-05-21 | Texas Instruments France | Java DSP acceleration by byte-code optimization |
JP2003162411A (ja) | 2001-11-28 | 2003-06-06 | Hitachi Ltd | データプロセッサ |
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 |
US7032101B2 (en) | 2002-02-26 | 2006-04-18 | International Business Machines Corporation | Method and apparatus for prioritized instruction issue queue in a processor |
US6877059B2 (en) | 2002-03-29 | 2005-04-05 | Emc Corporation | Communications architecture for a high throughput storage processor |
WO2003088048A1 (en) | 2002-04-08 | 2003-10-23 | University Of Texas System | Non-uniform cache apparatus, systems, and methods |
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 | 富士通株式会社 | 命令フェッチ制御装置 |
JP4243463B2 (ja) | 2002-08-19 | 2009-03-25 | 株式会社半導体理工学研究センター | 命令スケジューリングのシミュレーション方法とシミュレーションシステム |
US7296259B2 (en) | 2002-09-11 | 2007-11-13 | Agere Systems Inc. | Processor system with cache-based software breakpoints |
US6934828B2 (en) | 2002-09-17 | 2005-08-23 | Intel Corporation | Decoupling floating point linear address |
GB2393274B (en) | 2002-09-20 | 2006-03-15 | Advanced Risc Mach Ltd | Data processing system having an external instruction set and an internal instruction set |
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 |
US6996698B2 (en) | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US7349968B2 (en) | 2003-07-31 | 2008-03-25 | International Business Machines Corporation | Method, system and program product for asynchronously processing requests |
CN1842770A (zh) | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | 一种在处理器中挂起和释放执行过程中计算线程的整体机制 |
US7539974B2 (en) | 2003-10-24 | 2009-05-26 | Microsoft Corporation | Scalable synchronous and asynchronous processing of monitoring rules |
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 |
US7500087B2 (en) | 2004-03-09 | 2009-03-03 | Intel Corporation | Synchronization of parallel processes using speculative execution of synchronization instructions |
EP1731998A1 (en) | 2004-03-29 | 2006-12-13 | Kyoto University | Data processing device, data processing program, and recording medium containing the data processing program |
US7392524B2 (en) | 2004-04-06 | 2008-06-24 | International Business Machines Corporation | Method, system, and storage medium for managing computer processing functions |
EP1870814B1 (en) | 2006-06-19 | 2014-08-13 | Texas Instruments France | Method and apparatus for secure demand paging for processor devices |
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 |
US7571284B1 (en) | 2004-06-30 | 2009-08-04 | Sun Microsystems, Inc. | Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor |
US7685354B1 (en) | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
US8607241B2 (en) | 2004-06-30 | 2013-12-10 | Intel Corporation | Compare and exchange operation using sleep-wakeup mechanism |
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 |
US7748001B2 (en) | 2004-09-23 | 2010-06-29 | Intel Corporation | Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time |
JP4345630B2 (ja) | 2004-09-29 | 2009-10-14 | ソニー株式会社 | 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム |
US8015392B2 (en) | 2004-09-29 | 2011-09-06 | Intel Corporation | Updating instructions to free core in multi-core processor with core sequence table indicating linking of thread sequences for processing queued packets |
JP4982971B2 (ja) | 2004-09-29 | 2012-07-25 | ソニー株式会社 | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
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 |
US7447882B2 (en) | 2005-04-20 | 2008-11-04 | Arm Limited | Context switching within a data processing system having a branch prediction mechanism |
US7673119B2 (en) | 2005-05-13 | 2010-03-02 | Texas Instruments Incorporated | VLIW optional fetch packet header extends instruction set space |
US7581082B2 (en) | 2005-05-13 | 2009-08-25 | Texas Instruments Incorporated | Software source transfer selects instruction word sizes |
JP4322232B2 (ja) | 2005-06-14 | 2009-08-26 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
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 |
EP2477109B1 (en) | 2006-04-12 | 2016-07-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 |
EP2523101B1 (en) | 2006-11-14 | 2014-06-04 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
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 |
US20080148020A1 (en) | 2006-12-13 | 2008-06-19 | Luick David A | Low Cost Persistent Instruction Predecoded Issue and Dispatcher |
US7624254B2 (en) | 2007-01-24 | 2009-11-24 | Qualcomm Incorporated | Segmented pipeline flushing for mispredicted branches |
JP4957729B2 (ja) | 2007-01-25 | 2012-06-20 | 日本電気株式会社 | プログラム並列化方法、プログラム並列化装置及びプログラム |
US8181168B1 (en) | 2007-02-07 | 2012-05-15 | Tilera Corporation | Memory access assignment 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 |
JP4987555B2 (ja) | 2007-04-27 | 2012-07-25 | 株式会社東芝 | 情報処理装置、および情報処理システム |
JP5084355B2 (ja) | 2007-06-07 | 2012-11-28 | キヤノン株式会社 | フロー処理実行装置、フロー処理実行方法及びプログラム |
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 | 命令コード圧縮方法と命令フェッチ回路 |
US8281308B1 (en) | 2007-07-23 | 2012-10-02 | Oracle America, Inc. | Virtual core remapping based on temperature |
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 |
US7877586B2 (en) | 2008-02-01 | 2011-01-25 | International Business Machines Corporation | Branch target address cache selectively applying a delayed hit |
US8146094B2 (en) | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Guaranteeing delivery of multi-packet GSM messages |
US7921278B2 (en) | 2008-03-10 | 2011-04-05 | International Business Machines Corporation | Early exit processing of iterative refinement algorithm using register dependency disable |
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 |
US8565065B2 (en) | 2008-06-23 | 2013-10-22 | Qualcomm Incorporated | Methods and systems for utilizing a multicast/broadcast CID scheduling MAC management message |
WO2010026485A1 (en) | 2008-09-08 | 2010-03-11 | Bridgeco Ag | Very long instruction word architecture with multiple data queues |
WO2010043401A2 (en) | 2008-10-15 | 2010-04-22 | Martin Vorbach | Data processing device |
US8612698B2 (en) | 2008-10-31 | 2013-12-17 | Intel Corporation | Replacement policy for hot code detection |
US20100146209A1 (en) | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
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 |
JP2010198131A (ja) | 2009-02-23 | 2010-09-09 | Renesas Electronics Corp | プロセッサシステム、及びプロセッサシステムの動作モード切り替え方法 |
US8380964B2 (en) | 2009-04-03 | 2013-02-19 | International Business Machines Corporation | Processor including age tracking of issue queue instructions |
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 |
US8438547B2 (en) | 2009-05-05 | 2013-05-07 | Freescale Semiconductor, Inc. | Address translation trace message generation for debug |
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 |
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 |
JP5057256B2 (ja) | 2009-12-02 | 2012-10-24 | 株式会社Mush−A | データ処理装置、データ処理システムおよびデータ処理方法 |
CN102096579B (zh) | 2009-12-11 | 2013-10-16 | 陈罡 | 一种嵌入式自适应模糊微处理器的组成与结构 |
CN102117198B (zh) | 2009-12-31 | 2015-07-15 | 上海芯豪微电子有限公司 | 一种分支处理方法 |
EP2519876A1 (en) | 2009-12-28 | 2012-11-07 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
US8850166B2 (en) | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
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 | 삼성전자주식회사 | 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법 |
US8290994B2 (en) | 2010-05-05 | 2012-10-16 | International Business Machines Corporation | Obtaining file system view in block-level data storage systems |
US8201024B2 (en) | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
US8645714B2 (en) | 2010-05-25 | 2014-02-04 | Via Technologies, Inc. | Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions |
US8555038B2 (en) | 2010-05-28 | 2013-10-08 | Oracle International Corporation | Processor and method providing instruction support for instructions that utilize multiple register windows |
KR101731742B1 (ko) | 2010-06-18 | 2017-04-28 | 보드 오브 리전츠 더 유니버시티 오브 텍사스 시스템 | 결합된 분기 타깃 및 프레디킷 예측 |
US10241799B2 (en) | 2010-07-16 | 2019-03-26 | Qualcomm Incorporated | Out-of-order command execution with sliding windows to maintain completion statuses |
US20120030451A1 (en) | 2010-07-28 | 2012-02-02 | Broadcom Corporation | Parallel and long adaptive instruction set architecture |
US9052890B2 (en) | 2010-09-25 | 2015-06-09 | Intel Corporation | Execute at commit state update instructions, apparatus, methods, and systems |
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 |
US9552206B2 (en) | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
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 |
US9164772B2 (en) | 2011-02-04 | 2015-10-20 | Qualcomm Incorporated | Hybrid queue for storing instructions from fetch queue directly in out-of-order queue or temporarily in in-order queue until space is available |
US9176737B2 (en) | 2011-02-07 | 2015-11-03 | Arm Limited | Controlling the execution of adjacent instructions that are dependent upon a same data condition |
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 |
KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
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 |
CN102221987B (zh) | 2011-05-11 | 2014-10-01 | 西安电子科技大学 | 基于嵌入式专用指令集处理器的指令集编码方法 |
US9652243B2 (en) | 2011-06-29 | 2017-05-16 | International Business Machines Corporation | Predicting out-of-order instruction level parallelism of threads in a multi-threaded processor |
US20130024676A1 (en) | 2011-07-19 | 2013-01-24 | Glew Andrew F | Control flow integrity |
CN102306094B (zh) | 2011-08-16 | 2014-03-26 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
US9697002B2 (en) | 2011-10-03 | 2017-07-04 | International Business Machines Corporation | Computer instructions for activating and deactivating operands |
SG11201402727WA (en) | 2011-12-01 | 2014-06-27 | Univ Singapore | Polymorphic heterogeneous multi-core architecture |
US8639882B2 (en) | 2011-12-14 | 2014-01-28 | Nvidia Corporation | Methods and apparatus for source operand collector caching |
US9442861B2 (en) | 2011-12-20 | 2016-09-13 | Intel Corporation | System and method for out-of-order prefetch instructions in an in-order pipeline |
WO2013095635A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for merging mask patterns |
WO2013096894A1 (en) | 2011-12-23 | 2013-06-27 | The Arizona Board Of Regents On Behalf Of The University Of Arizona | Methods of micro-specialization in database management systems |
CN102566974B (zh) | 2012-01-14 | 2014-03-26 | 哈尔滨工程大学 | 基于同时多线程的取指控制方法 |
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 |
US9348775B2 (en) | 2012-03-16 | 2016-05-24 | Analog Devices, Inc. | Out-of-order execution of bus transactions |
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 |
EP2862058B1 (en) | 2012-06-15 | 2021-05-19 | Intel Corporation | A semaphore method and system with out of order loads in a memory consistency model that constitutes loads reading from memory in order |
US8880638B2 (en) | 2012-06-18 | 2014-11-04 | International Business Machines Corporation | Distributed image cache for servicing virtual resource requests in the cloud |
US9160815B2 (en) | 2012-06-28 | 2015-10-13 | Intel Corporation | Method and apparatus for virtual machine interoperability |
CN105760138B (zh) | 2012-06-29 | 2018-12-11 | 英特尔公司 | 用于测试事务性执行状态的系统 |
KR101964927B1 (ko) | 2012-07-17 | 2019-04-03 | 삼성전자 주식회사 | 캐싱 프록시 방법 및 장치 |
GB2505884B (en) | 2012-09-12 | 2015-06-03 | Imagination Tech Ltd | Dynamically resizable circular buffers |
US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US20140095847A1 (en) | 2012-09-28 | 2014-04-03 | Doron Orenstein | Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading |
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 |
US9182986B2 (en) | 2012-12-29 | 2015-11-10 | Intel Corporation | Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region |
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 |
GB2514956B (en) | 2013-01-21 | 2015-04-01 | Imagination Tech Ltd | Allocating resources to threads based on speculation metric |
US9354884B2 (en) | 2013-03-13 | 2016-05-31 | International Business Machines Corporation | Processor with hybrid pipeline capable of operating in out-of-order and in-order modes |
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 |
US10241793B2 (en) | 2013-03-15 | 2019-03-26 | Analog Devices Global | Paralleizing loops in the presence of possible memory aliases |
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 |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9880842B2 (en) | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
US9471318B2 (en) | 2013-03-15 | 2016-10-18 | International Business Machines Corporation | System management and instruction counting |
WO2014143053A1 (en) | 2013-03-15 | 2014-09-18 | Intel Corporation | Dead block predictors for cooperative execution in the last level cache |
US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
US20140281434A1 (en) | 2013-03-15 | 2014-09-18 | Carlos Madriles | Path profiling using hardware and software combination |
JP6086230B2 (ja) | 2013-04-01 | 2017-03-01 | 日本電気株式会社 | 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法 |
US9594700B2 (en) | 2013-04-17 | 2017-03-14 | Nvidia Corporation | Speculative memory controller |
WO2014189510A1 (en) | 2013-05-23 | 2014-11-27 | 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 |
GB2510655B (en) | 2013-07-31 | 2015-02-25 | Imagination Tech Ltd | Prioritizing instructions based on type |
US9535488B2 (en) | 2013-08-28 | 2017-01-03 | Via Technologies, Inc. | Multi-core microprocessor that dynamically designates one of its processing cores as the bootstrap processor |
US20150074355A1 (en) | 2013-09-12 | 2015-03-12 | Lsi Corporation | Efficient caching of file system journals |
CN103473508B (zh) | 2013-09-17 | 2016-07-27 | 肖楠 | 操作系统内核运行时安全验证方法 |
US9448936B2 (en) | 2014-01-13 | 2016-09-20 | Apple Inc. | Concurrent store and load operations |
CN103744644B (zh) | 2014-01-13 | 2017-03-01 | 上海交通大学 | 采用四核结构搭建的四核处理器系统及数据交换方法 |
US9785441B2 (en) | 2014-05-29 | 2017-10-10 | Mill Computing, Inc. | Computer processor employing instructions with elided nop operations |
US9830159B2 (en) | 2014-06-02 | 2017-11-28 | International Business Machines Corporation | Suspending branch prediction upon entering transactional execution mode |
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 |
CN104239047B (zh) | 2014-10-13 | 2017-10-24 | 深圳市神州海纳科技有限公司 | 一种信息采集的方法及其装置 |
US9875106B2 (en) | 2014-11-12 | 2018-01-23 | Mill Computing, Inc. | Computer processor employing instruction block exit prediction |
US9569613B2 (en) | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
CN104637288B (zh) | 2014-12-31 | 2019-03-08 | 小米科技有限责任公司 | 指令组确定方法和装置 |
US20160274915A1 (en) | 2015-03-20 | 2016-09-22 | Qualcomm Incorporated | PROVIDING LOWER-OVERHEAD MANAGEMENT OF DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA |
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 |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
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 |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
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 |
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 |
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 |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US20160378488A1 (en) | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Access to target address |
US20170083343A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Out of order commit |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US9830152B2 (en) | 2015-12-22 | 2017-11-28 | Qualcomm Incorporated | Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor |
US10223118B2 (en) | 2016-03-24 | 2019-03-05 | Qualcomm Incorporated | Providing references to previously decoded instructions of recently-provided instructions to be executed by a processor |
-
2015
- 2015-06-26 US US14/752,724 patent/US10346168B2/en active Active
-
2016
- 2016-06-04 TW TW105117721A patent/TW201712533A/zh unknown
- 2016-06-23 EP EP16736331.6A patent/EP3314399B1/en active Active
- 2016-06-23 KR KR1020177036876A patent/KR102502780B1/ko active IP Right Grant
- 2016-06-23 CN CN201680037470.2A patent/CN107810476B/zh active Active
- 2016-06-23 CA CA2986266A patent/CA2986266A1/en not_active Abandoned
- 2016-06-23 JP JP2017565975A patent/JP2018518775A/ja active Pending
- 2016-06-23 BR BR112017024301A patent/BR112017024301A2/pt not_active Application Discontinuation
- 2016-06-23 WO PCT/US2016/038850 patent/WO2016210027A1/en active Application Filing
- 2016-06-23 MX MX2017016197A patent/MX2017016197A/es unknown
- 2016-06-23 AU AU2016281599A patent/AU2016281599A1/en not_active Abandoned
-
2017
- 2017-11-08 PH PH12017550124A patent/PH12017550124A1/en unknown
- 2017-12-07 IL IL256168A patent/IL256168A/en unknown
- 2017-12-21 CL CL2017003310A patent/CL2017003310A1/es unknown
- 2017-12-21 CO CONC2017/0013252A patent/CO2017013252A2/es unknown
-
2018
- 2018-05-07 HK HK18105889.3A patent/HK1246443A1/zh unknown
-
2019
- 2019-06-24 US US16/450,172 patent/US11048517B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0992894A1 (en) * | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Apparatus and method for loop execution |
US7260694B2 (en) * | 2003-04-10 | 2007-08-21 | Arm Limited | Data processor memory circuit |
US7207038B2 (en) * | 2003-08-29 | 2007-04-17 | Nokia Corporation | Constructing control flows graphs of binary executable programs at post-link time |
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
US7779213B2 (en) * | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
JP2008299790A (ja) * | 2007-06-04 | 2008-12-11 | Digital Electronics Corp | マイクロプロセッサ |
CN102364431A (zh) * | 2011-10-20 | 2012-02-29 | 北京北大众志微系统科技有限责任公司 | 一种实现读指令执行的方法及装置 |
US20150127928A1 (en) * | 2013-11-07 | 2015-05-07 | Microsoft Corporation | Energy Efficient Multi-Modal Instruction Issue |
CN104731718A (zh) * | 2013-12-24 | 2015-06-24 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
Non-Patent Citations (2)
Title |
---|
HONGLIANG GAO 等: "Address-branch correlation: A novel locality for long-latency hard-to-predict branches", 《2008 IEEE 14TH INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE》 * |
孙庆: "高性能DSP指令控制部件优化设计研究", 《中国优秀硕士学位论文全文数据库(电子期刊)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000420A (zh) * | 2020-11-02 | 2020-11-27 | 武汉中科通达高新技术股份有限公司 | 一种数据处理方法和装置 |
CN115617402A (zh) * | 2022-11-18 | 2023-01-17 | 北京数渡信息科技有限公司 | 一种适用于通用处理器的解耦合分支预测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
BR112017024301A2 (pt) | 2018-07-24 |
PH12017550124A1 (en) | 2018-02-26 |
TW201712533A (zh) | 2017-04-01 |
IL256168A (en) | 2018-02-28 |
CN107810476B (zh) | 2021-02-23 |
US10346168B2 (en) | 2019-07-09 |
US11048517B2 (en) | 2021-06-29 |
HK1246443A1 (zh) | 2018-09-07 |
KR20180020985A (ko) | 2018-02-28 |
US20160378479A1 (en) | 2016-12-29 |
KR102502780B1 (ko) | 2023-02-22 |
MX2017016197A (es) | 2018-03-01 |
EP3314399B1 (en) | 2022-04-20 |
WO2016210027A1 (en) | 2016-12-29 |
EP3314399A1 (en) | 2018-05-02 |
CA2986266A1 (en) | 2016-12-29 |
CL2017003310A1 (es) | 2018-06-22 |
AU2016281599A1 (en) | 2017-11-30 |
CO2017013252A2 (es) | 2018-01-16 |
JP2018518775A (ja) | 2018-07-12 |
US20190310852A1 (en) | 2019-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107810476A (zh) | 解耦合的处理器指令窗口和操作数缓冲区 | |
CN107810482A (zh) | 指令块到处理器指令窗口的批量分配 | |
EP3314402B1 (en) | Age-based management of instruction blocks in a processor instruction window | |
CN104951281B (zh) | 用于实现动态无序处理器流水线的方法和装置 | |
CN107771318B (zh) | 基于块大小将指令块映射到指令窗口 | |
CN102782672B (zh) | 用于高效嵌入式同类多核平台的基于瓦片的处理器架构模型 | |
Singh et al. | MorphoSys: case study of a reconfigurable computing system targeting multimedia applications | |
Jeon et al. | Hi-End: Hierarchical, endurance-aware STT-MRAM-based register file for energy-efficient GPUs | |
CN108228241A (zh) | 用于在处理器中进行动态概况分析的系统、装置和方法 | |
Tseng | Braids: out-of-order performance with almost in-order complexity | |
Suleman | An asymmetric multi-core architecture for efficiently accelerating critical paths in multithreaded programs |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1246443 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |