CN108351863B - 用于可编程结构层级结构和高速缓存的指令和逻辑 - Google Patents

用于可编程结构层级结构和高速缓存的指令和逻辑 Download PDF

Info

Publication number
CN108351863B
CN108351863B CN201680064141.7A CN201680064141A CN108351863B CN 108351863 B CN108351863 B CN 108351863B CN 201680064141 A CN201680064141 A CN 201680064141A CN 108351863 B CN108351863 B CN 108351863B
Authority
CN
China
Prior art keywords
fabric
instruction
programmable
unit
programmable fabric
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
Application number
CN201680064141.7A
Other languages
English (en)
Other versions
CN108351863A (zh
Inventor
L·A·林斯基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN108351863A publication Critical patent/CN108351863A/zh
Application granted granted Critical
Publication of CN108351863B publication Critical patent/CN108351863B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

在一个实施例中,一种处理器包括:第一核,用于执行指令;以及可编程结构,具有包括第一可编程结构层和第二可编程结构层的层级结构布置。所述可编程结构可以包括用于以下操作的结构接口控制器:从所述第一核接收第一可编程结构控制指令;并且响应于所述第一可编程结构控制指令而使所述第一可编程结构层的第一可编程结构单元对第一输入数据执行操作。描述并要求保护了其他实施例。

Description

用于可编程结构层级结构和高速缓存的指令和逻辑
技术领域
本公开涉及处理逻辑、微处理器以及相关联的指令集架构领域,当由处理器或其他处理逻辑执行该指令集架构时,该指令集架构执行逻辑、数学或其他功能性操作。
背景技术
多处理器系统正变得越来越普遍。多处理器系统的应用包括动态域分区一直延续到桌面计算。为了利用多处理器系统,可以将有待执行的代码分成多个线程以供由各种处理实体执行。可以彼此并行地执行每个线程。此外,为了增大处理实体的实用性,可以采用乱序执行。乱序执行可以在到指令的输入变得可用时执行这种指令。因此,可以在较早出现于代码序列中的指令之前执行稍后出现于代码序列中的指令。处理器系统可以与外部协处理器、数字信号处理器、和诸如图形处理单元等专用处理单元以及现场可编程序门阵列进行通信。处理器系统可以通过外部总线与这些元件通信。
附图简述
图1A是根据本公开的实施例的示例性计算机系统的框图,该计算机系统被形成为具有可以包括用于执行指令的执行单元的处理器;
图1B示出了根据本公开的实施例的数据处理系统;
图1C示出了用于执行文本串比较操作的数据处理系统的其他实施例;
图2是根据本公开的实施例的处理器的微架构的框图,处理器可以包括用于执行指令的逻辑电路;
图3A示出了根据本公开的实施例的多媒体寄存器中的各种紧缩数据类型表示;
图3B示出了根据本公开的实施例的可能的寄存器内数据存储格式;
图3C示出了根据本公开的实施例的多媒体寄存器中的各种有符号和无符号紧缩数据类型表示;
图3D示出了操作编码格式的实施例;
图3E示出了根据本公开的实施例的具有四十位或更多位的另一可能的操作编码格式;
图3F示出了根据本公开的实施例的又一可能的操作编码格式;
图4A是示出根据本公开的实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图;
图4B是示出根据本公开的实施例的、要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑的框图;
图5A是根据本公开的实施例的处理器的框图;
图5B是根据本公开的实施例的核的示例实现的框图;
图6是根据本公开的实施例的系统的框图;
图7是根据本公开的实施例的第二系统的框图;
图8是根据本公开的实施例的第三系统的框图;
图9是根据本公开的实施例的芯片上系统的框图;
图10示出了根据本公开的实施例的处理器,包括中央处理单元和图形处理单元,该处理器可执行至少一条指令;
图11是示出根据本公开的实施例的IP核开发的框图;
图12示出了根据本公开的实施例的不同类型的处理器可以如何仿真第一类型的指令;
图13示出了根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图;
图14是根据本公开的实施例的处理器的指令集架构的框图;
图15是根据本公开的实施例的处理器的指令集架构的更具体的框图;
图16是根据本公开的实施例的用于处理器的指令集架构的执行流水线的框图;
图17是根据本公开的实施例的用于利用处理器的电子设备的框图;
图18是根据本公开的实施例的一种用于实施用于可编程结构的逻辑和指令的系统的框图;
图19是根据本公开的实施例的一种用于实施用于可编程结构的逻辑和指令的系统的元件的更详细的示意图;
图20是根据本公开的实施例的配置高速缓存层级结构的框图;
图21是根据本公开的实施例的配置高速缓存及其操作的框图和示意图;
图22是根据本公开的实施例的结构接口控制器可以如何与可编程结构交互的框图;
图23是根据本公开的实施例的示例结构接口控制器和示例配置存储器控制器的框图;并且
图24是根据本公开的实施例的用于管理可编程结构和高速缓存的方法的流程图。
图25是根据本发明的一个实施例的指令处理方法的流程图。
图26是根据本发明的另一实施例的指令处理方法的流程图。
具体实施方式
以下说明描述了用于处理器、虚拟处理器、封装体、计算机系统或其他处理设备内或与其相关联的可编程结构的指令和处理逻辑、层级结构、以及高速缓存。在一个实施例中,这种设备可以包括乱序处理器。在另一实施例中,这种设备可以包括芯片上系统。
在以下描述中,陈述了诸如处理逻辑、处理器类型、微架构状况、事件、启用机制等众多特定细节,以提供对本公开的实施例的更透彻理解。然而,本领域技术人员将领会,没有这些具体细节也可实施实施例。此外,没有详细示出一些公知的结构、电路等,以避免不必要地使本公开的多个实施例模糊。
虽然参照处理器来描述下列各实施例,但是,其他实施例也适用于其他类型的集成电路和逻辑器件。本公开的实施例的类似技术和教导可应用于可受益于更高的流水线吞吐量和改善的性能的其他类型的电路或半导体器件。本公开的诸个实施例的教导适用于执行数据操纵的任何处理器或机器。然而,实施例不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并可以应用于其中可以执行对数据的操纵或管理的任何处理器和机器。另外,下列描述提供了示例,并且为了进行说明,所附附图示出各种示例。然而,这些示例不应当以限制性意义来解释,因为它们仅仅旨在提供本公开的诸个实施例的示例,而并非对本公开的实施例的所有可能实现方式进行穷举。
虽然下述的示例是在执行单元和逻辑电路情境下描述指令处理和分配,但本公开的其他实施例也可通过存储在机器可读有形介质上的数据和/或指令来完成,这些数据和/或指令在被机器执行时使得机器执行与本公开至少一个实施例相一致的功能。在一个实施例中,与本公开的实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使可以通过这些指令而被编程的通用处理器或专用处理器执行本公开的步骤。本公开的诸个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程来执行根据本公开的实施例的一个或多个操作。此外,本公开的多个实施例的多个步骤可由包含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
被用于对逻辑进行编程以执行本公开的诸个实施例的指令可被存储在系统的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)中。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质可以包括适用于以机器(例如,计算机)可读形式存储或发送电子指令或信息的任何类型的有形的机器可读介质。
设计会经历多个阶段,从创造到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,像仿真中可以有用的那样,可以使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门电路的电路级模型。此外,设计在某个阶段可以达到表示硬件模型中各种设备的物理布置的数据的层级。在使用一些半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可以被存储在任何形式的机器可读介质中。存储器或者磁或光存储设备(诸如,盘)可以是存储经由光或电波发送的信息的机器可读介质,调制或以其他方式生成这些光或电波以发送这些信息。当发送指示或承载代码或设计的电载波达到实现该电信号的复制、缓冲或重新发送的程度时,可以产生新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实施例的技术的物品(诸如,编码在载波中的信息)。
在现代处理器中,可以将多个不同的执行单元用于处理和执行各种代码和指令。一些指令可以更快地完成,而其他指令可能需要多个时钟周期来完成。指令的吞吐量越快,则处理器的总体性能越好。因此,使尽可能多的指令尽可能快地执行将会是有利的。然而,可能存在具有较大的复杂度并且在执行时间和处理器资源方面要求更多的某些指令,诸如浮点指令、加载/存储操作、数据移动等等。
因为更多的计算机系统被用于互联网、文本以及多媒体应用,所以已逐渐地引进了附加的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一个或多个计算机架构包括:数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可由一个或多个微架构来实现,微架构可包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的多个处理器可共享公共指令集的至少一部分。例如,
Figure BDA0001648115280000062
奔腾四(Pentium 4)处理器、
Figure BDA0001648115280000061
酷睿(CoreTM)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices,Inc.)的多个处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸如,ARM控股有限公司、MIPS或它们的授权方或兼容方)设计的多个处理器可共享至少一部分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器架构在不同的微架构中可使用新的或公知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)以及引退寄存器堆)的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址或不可由软件编程者寻址的一个或多个寄存器、寄存器架构、寄存器堆、或其他寄存器集合。
指令可以包括一个或多个指令格式。在一个实施例中,指令格式可指示多个字段(位的数量、位的位置等)以指定将要被执行的操作以及将要对其执行操作的操作数等。在进一步的实施例中,一些指令格式可由指令模板(或子格式)进一步定义。例如,给定指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有以不同方式进行解释的给定字段。在一个实施例中,可以使用指令格式(并且,如果定义过,则以该指令格式的指令模板中的给定的一个)来表示指令,并且该指令指定或指示操作以及该操作将操作的操作数。
科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(SIMD)指的是使得处理器对多个数据元素执行一个操作的指令类型。可将SIMD技术用于可将寄存器中的多个位逻辑地划分为多个固定尺寸或可变尺寸的数据元素(每个数据元素表示单独的值)的处理器中。例如,在一个实施例中,可将64位寄存器中的多个位组织为包含四个单独的16位数据元素的源操作数,每个数据元素表示单独的16位的值。该数据类型可被称为‘紧缩’数据类型或‘向量’数据类型,并且该数据类型的操作数可被称为紧缩数据操作数或向量操作数。在一个实施例中,紧缩数据项或向量可以是存储在单个寄存器中的紧缩数据元素的序列,并且紧缩数据操作数或向量操作数可以是SIMD指令(或“紧缩数据指令”或“向量指令”)的源操作数或目的地操作数。在一个实施例中,SIMD指令指定了将要对两个源向量操作数执行以生成具有相同或不同尺寸的、具有相同或不同数量的数据元素的、具有相同或不同数据元素顺序的目的地向量操作数(也被称为结果向量操作数)的单个向量操作。
诸如由
Figure BDA0001648115280000071
酷睿(CoreTM)处理器(具有包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)、ARM处理器(诸如,ARM
Figure BDA0001648115280000072
处理器族,具有包括向量浮点(VFP)和/或NEON指令的指令集)和MIPS处理器(诸如,中国科学院计算机技术研究所(ICT)开发的龙芯处理器族)所采用的SIMD技术之类的SIMD技术在应用性能上带来了极大的提高(CoreTM和MMXTM是加利福尼亚州圣克拉拉市的英特尔公司的注册商标或商标)。
在一个实施例中,目的地寄存器/数据和源寄存器/数据可以是表示对应数据或操作的源和目的地的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所描绘的那些名称或功能不同的名称或功能的其他存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其他存储区域,等等。在其他实施例中,SRC和DEST存储区域中的两个或更多可对应于相同存储区域中的不同数据存储元素(例如,SIMD寄存器)。在一个实施例中,通过例如将对第一和第二源数据执行的操作的结果写回至两个源寄存器中作为目的地寄存器的那个寄存器,源寄存器中的一个也可以作为目的地寄存器。
图1A是根据本公开的实施例的示例性计算机系统的框图,该计算机系统被形成为可以包括用于执行指令的执行单元的处理器。根据本公开,诸如在本文中所描述的实施例中,系统100可以包括诸如处理器102之类的组件,该处理器102用于使用包括逻辑的执行单元以执行算法来处理数据。系统100可以代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的
Figure BDA0001648115280000081
III、
Figure BDA0001648115280000082
4、Xeontm
Figure BDA0001648115280000083
XScaletm和/或StrongARMtm微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本公开的各实施例不限于硬件电路和软件的任何特定组合。
诸实施例不限于计算机系统。本公开的实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的某些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可执行根据至少一个实施例的一条或多条指令的任何其他系统。
计算机系统100可包括处理器102,处理器102可包括一个或多个执行单元108,用于执行算法以执行根据本公开的一个实施例的至少一个指令。可在单处理器桌面或服务器系统的情境中描述一个实施例,但是可将其他实施例包括在多处理器系统中。系统100可以是“中枢”系统架构的示例。系统100可以包括处理器102以用于处理数据信号。处理器102可以包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现多个指令集组合的处理器或任意其他处理器设备(例如,数字信号处理器)。在一个实施例中,处理器102可以耦合至处理器总线110,处理器总线110可以在处理器102与系统100中的其他组件之间传输数据信号。系统100的多个要素可以执行为熟悉本领域的人员所公知的它们的常规功能。
在一个实施例中,处理器102可以包括第一级(L1)内部高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。在另一个实施例中,高速缓存存储器可驻留在处理器102的外部。其他实施例也可包括内部高速缓存和外部高速缓存的组合,这取决于特定实现和需求。寄存器堆106可将不同类型的数据存储在各种寄存器(包括整数寄存器、浮点寄存器、状态寄存器、指令指针寄存器)中。
执行单元108(包括用于执行整数和浮点操作的逻辑)也驻留在处理器102中。处理器102还可包括存储用于某些宏指令的微代码的微代码(ucode)ROM。在一个实施例中,执行单元108可以包括用于处置紧缩指令集109的逻辑。通过将紧缩指令集109包括在通用处理器102以及用于执行指令的相关联的电路的指令集中,可以使用通用处理器102中的紧缩数据来执行由许多多媒体应用使用的操作。因此,通过将处理器数据总线的完整宽度用于对紧缩数据执行操作,可加速并更高效地执行许多多媒体应用。这可减少在处理器数据总线上传输更小数据单元以在一个时间对一个数据元素执行一个或多个操作的需要。
执行单元108的实施例也可以用于微控制器、嵌入式处理器、图形设备、DSP及其他类型的逻辑电路。系统100可以包括存储器120。存储器120可以实现为动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120可存储由可由处理器102执行的数据信号来表示的指令和/或数据。
系统逻辑芯片116可以耦合至处理器总线110和存储器120。系统逻辑芯片116可以包括存储器控制器中枢(MCH)。处理器102可以经由处理器总线110与MCH 116通信。MCH 116可以提供至存储器120的高带宽存储器路径118,用于指令和数据存储,并且用于图形命令、数据和纹理的存储。MCH 116可以引导处理器102、存储器120以及系统100内的其他组件之间的数据信号,并用于在处理器总线110、存储器120和系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供用于耦合至图形控制器112的图形端口。MCH 116可通过存储器接口118耦合至存储器120。图形卡112可通过加速图形端口(AGP)互连114耦合至MCH 116。
系统100可使用专有中枢接口总线122以将MCH 116耦合至I/O控制器中枢(ICH)130。在一个实施例中,ICH 130可经由本地I/O总线来提供到某些I/O设备的直接连接。本地I/O总线可包括用于将外围设备连接到存储器120、芯片组以及处理器102的高速I/O总线。示例可包括音频控制器、固件中枢(闪存BIOS)128、无线收发机126、数据存储设备124、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如,通用串行总线(USB))以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
对于系统的另一个实施例,根据一个实施例的指令可以与芯片上系统一起使用。芯片上系统的一个实施例包括处理器和存储器。用于一个这样的系统的存储器可以包括闪存。闪存可位于与处理器和其他系统组件相同的管芯上。此外,诸如存储器控制器或图形控制器之类的其他逻辑块也可位于芯片上系统上。
图1B示出数据处理系统140,该数据处理系统140实现本公开的实施例的原理。本领域的技术人员将容易理解,本文描述的多个实施例可利用替代的处理系统来操作,而不背离本公开的多个实施例的范围。
计算机系统140包括用于执行根据一个实施例的至少一条指令的处理核159。在一个实施例中,处理核159表示任何类型的架构(包括但不限于,CISC、RISC或VLIW类型架构)的处理单元。处理核159也可适于以一种或多种处理技术来制造,并且通过足够详细地表示在机器可读介质上可适用于促进所述制造。
处理核159包括执行单元142、一组寄存器堆145以及解码器144。处理核159也可以包括对于理解本公开的实施例不是必需的附加电路(未示出)。执行单元142可以执行处理核159接收到的指令。除了执行典型的处理器指令外,执行单元142也可执行紧缩指令集143中的指令,以便对紧缩数据格式执行操作。紧缩指令集143可包括用于执行本公开的多个实施例的指令以及其他紧缩指令。执行单元142可通过内部总线耦合至寄存器堆145。寄存器堆145可表示处理核159上用于存储包括数据的信息的存储区域。如前文所述,可以理解,该存储区域可以存储紧缩数据并不是关键的。执行单元142可以耦合至解码器144。解码器144可以将处理核159接收到的指令解码为控制信号和/或微代码进入点。响应于这些控制信号和/或微代码进入点,执行单元142执行合适的操作。在一个实施例中,解码器可以解释指令的操作码,该操作码将指示应当对该指令内所指示的对应数据执行什么操作。
处理核159可以与总线141耦合,用于与各种其他系统设备进行通信,其他系统设备可包括但不限于:例如,同步动态随机存取存储器(SDRAM)控制器146、静态随机存取存储器(SRAM)控制器147、猝发闪存接口148、个人计算机存储卡国际协会(PCMCIA)/紧致闪存(CF)卡控制器149、液晶显示器(LCD)控制器150、直接存储器存取(DMA)控制器151、以及替代的总线主接口152。在一个实施例中,数据处理系统140也可包括I/O桥154,用于经由I/O总线153与各种I/O设备进行通信。此类I/O设备可包括但不限于:例如,通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART 157、以及I/O扩展接口158。
数据处理系统140的一个实施例提供了移动通信、网络通信和/或无线通信,并提供了可执行包括文本串比较操作的SIMD操作的处理核159。可利用各种音频、视频、成像和通信算法对处理核159进行编程,这些算法包括:离散变换(诸如Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)以及它们相应的逆变换);压缩/解压缩技术(例如,色彩空间变换、视频编码运动估计或视频解码运动补偿);以及调制/解调(MODEM)功能(例如,脉冲编码调制(PCM))。
图1C示出了执行SIMD文本串比较操作的数据处理系统的其他实施例。在一个实施例中,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存存储器167以及输入/输出系统168。输入/输出系统168可以可选地耦合至无线接口169。SIMD协处理器161可以执行包括根据一个实施例的指令的操作。在一个实施例中,处理核170可适用于以一种或多种处理技术来制造,并且通过足够详细地表示在机器可读介质上,可适用于促进包括处理核170的数据处理系统160的全部或部分的制造。
在一个实施例中,SIMD协处理器161包括执行单元162以及一组寄存器堆164。主处理器165的一个实施例包括解码器165,该解码器165用于识别包括根据一个实施例的、用于由执行单元162执行的指令的指令集163中的多条指令。在其他实施例中,SIMD协处理器161也包括用于对指令集163中的多条指令进行解码的解码器165的至少部分。处理核170也可以包括对于理解本公开的实施例不是必需的附加电路(未示出)。
在操作中,主处理器166执行控制通用类型的数据处理操作(包括与高速缓存存储器167和输入/输出系统168之间的交互)的数据处理指令流。SIMD协处理器指令可以被嵌入到该数据处理指令流中。主处理器166的解码器165将这些SIMD协处理器指令识别为应当由附连的SIMD协处理器161来执行的类型。因此,主处理器166在协处理器总线166上发布这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号)。可以由任何附连的SIMD协处理器从协处理器总线166接收这些指令。在这种情况下,SIMD协处理器161可以接受并执行任何接收到的针对该SIMD协处理器的SIMD协处理器指令。
可经由无线接口169接收数据以通过SIMD协处理器指令进行处理。对于一个示例,能以数字信号的形式接收到语音通信,可由SIMD协处理器指令处理该数字信号以便重新生成表示该语音通信的数字音频样本。对于另一个示例,能以数字位流的形式接收到被压缩的音频和/或视频,可由SIMD协处理器指令处理该数字位流以便重新生成数字音频样本和/或运动视频帧。在处理核170的一个实施例中,主处理器166和SIMD协处理器161可被集成在单个处理核170中,该单个处理核170包括执行单元162、一组寄存器堆164以及用于识别包括根据一个实施例的多条指令的指令集163中的多条指令的解码器165。
图2是根据本公开的实施例的处理器200的微架构的框图,处理器200可以包括用于执行指令的逻辑电路。在一些实施例中,可将根据一个实施例的指令实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(例如,单精度和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端201可以实现处理器200的部分,该部分可以取出要被执行的指令,并准备这些指令以便稍后在处理器流水线中使用。前端201可以包括若干单元。在一个实施例中,指令预取器226从存储器中取出指令,并将这些指令馈送至指令解码器228,指令解码器228进而解码或解释这些指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,该解码器将指令解析为可由微架构用于执行根据一个实施例的多个操作的操作码以及对应的数据和控制字段。在一个实施例中,追踪高速缓存230可以在uop队列234中将经解码的uop组合为程序排序的序列或踪迹,以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的uop。
一些指令可以被转换为单个微op,而其他指令需要若干个微op以完成完整的操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器228可以访问微代码ROM232以执行该指令。在一个实施例中,可将指令解码为少量的微op,以便在指令解码器228处进行处理。在另一实施例中,如果需要许多微op来完成操作,则可将指令存储在微代码ROM232中。追踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 232中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码ROM232完成对指令的微op进行的序列化操作之后,该机器的前端201可以恢复从追踪高速缓存230中取出微op。
乱序执行引擎203可以准备指令以供执行。乱序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204、简单浮点调度器206)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。uop调度器202、204、206基于它们的从属输入寄存器操作数源的准备就绪以及uop完成它们的操作所需的执行资源的可用性来确定uop何时准备好用于执行。一个实施例的快速调度器202可以在主时钟周期的每半个时钟周期上进行调度,而其他调度器在每个主处理器时钟周期上仅可调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。
寄存器堆208、210可以设置在调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。寄存器堆208、210中的每一个分别执行整数和浮点操作。每个寄存器堆208、210可以包括旁路网络,该旁路网络可以绕开还未被写入到寄存器堆中的、刚完成的结果或者将这些结果转发到新的从属uop中。整数寄存器堆208和浮点寄存器堆210可以彼此传递数据。在一个实施例中,可以将整数寄存器堆208划分为两个单独的寄存器堆,一个寄存器堆用于数据的低阶32位,第二个寄存器堆用于数据的高阶32位。浮点寄存器堆210可以包括128位宽的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块211可以包括执行单元212、214、216、218、220、222和224。执行单元212、214、216、218、220、222和224可以执行指令。执行块211可以包括存储微指令执行所需的整数和浮点数据操作数值的寄存器堆208和210。在一个实施例中,处理器200可以包括许多执行单元:地址生成单元(AGU)212、AGU 214、快速算术逻辑单元(ALU)216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。在另一个实施例中,浮点执行块222和224可以执行浮点、MMX、SIMD、SSE以及其他操作。在又一个实施例中,浮点ALU 222可以包括用于执行除法、平方根和余数微op的64位除64位的浮点除法器。在各实施例中,可利用浮点硬件来处置涉及浮点值的指令。在一个实施例中,可以将ALU操作传递到高速ALU执行单元216和218。高速ALU 216和218可以执行有效等待时间为半个时钟周期的快速操作。在一个实施例中,大多数复杂的整数操作去往慢速ALU 220,因为慢速ALU 220可以包括用于长等待时间类型操作的整数执行硬件,例如,乘法器、移位器、标志逻辑和分支处理设备。存储器加载/存储操作可以由AGU 212和214来执行。在一个实施例中,整数ALU 216、218和220可以对64位数据操作数执行整数操作。在其他实施例中,ALU 216、218和220可实现为支持包括16、32、128以及256等的各种数据位尺寸。类似地,浮点单元222和224可实现为支持具有各种宽度的位的一系列操作数。在一个实施例中,浮点单元222和224可结合SIMD和多媒体指令来对128位宽的紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,uop调度器202、204和206就分派从属操作。由于可以在处理器200中推测性地调度并执行uop,因此处理器200也可以包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖性操作可能需要被重放,而可以允许独立操作完成。也可将处理器的一个实施例的调度器和重放机制设计成用于捕捉指令序列,以用于文本串比较操作。
术语“寄存器”可以是指可以被用作标识操作数的指令的部分的板上处理器存储器位置。换句话说,寄存器可以是从处理器外部(从编程者的角度来看)可用的那些处理器存储位置。然而,在一些实施例中,寄存器可能不限于特定类型的电路。相反,寄存器可以存储数据、提供数据以及执行本文中所描述的功能。本文所描述的寄存器可利用任何数量的不同技术,由处理器中的电路来实现,这些不同技术诸如,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含八个多媒体SIMD寄存器,用于紧缩数据。对于以下讨论,寄存器可以被理解为设计成保存紧缩数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器的64位宽MMXTM寄存器(在一些实例中也称为“mm”寄存器)。这些MMX寄存器(在整数和浮点形式两者中是可用的)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或以外的(统称为“SSEx”)技术的128位宽的XMM寄存器可以保存这样的紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点可被包括在相同的寄存器堆中,或被包括在不同的寄存器堆中。进一步地,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
在下述附图的示例中,可以描述多个数据操作数。图3A示出了根据本公开的实施例的多媒体寄存器中的各种紧缩数据类型表示。图3A示出用于128位宽操作数的紧缩字节310、紧缩字320以及紧缩双字(dword)330的数据类型。本示例的紧缩字节格式310可以是128位长,并且包含十六个紧缩字节数据元素。字节可以被定义为,例如,数据的八位。每一个字节数据元素的信息可以被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,可以在该寄存器中使用所有可用的位。该存储配置提高了处理器的存储效率。同样,因为访问了十六个数据元素,所以现在可并行地对十六个数据元素执行一个操作。
通常,数据元素可以包括与具有相同长度的其他数据元素一起被存储在单个寄存器或存储器位置中的单独的数据片。在涉及SSEx技术的紧缩数据序列中,存储在XMM寄存器中的数据元素的数目可以是128位除以单独的数据元素的位长。类似地,在涉及MMX和SSE技术的紧缩数据序列中,存储在MMX寄存器中的数据元素的数目可以是64位除以单独的数据元素的位长。虽然图3A中示出的数据类型可以是128位长,但是本公开的实施例还可以利用64位宽或其他尺寸的操作数来操作。本示例中的紧缩字格式320可以是128位长,并且包含八个紧缩字数据元素。每个紧缩字包含十六位的信息。图3A的紧缩双字格式330可以是128位长,并且包含四个紧缩双字数据元素。每个紧缩双字数据元素包含三十二位的信息。紧缩四字可以是128位长,并包含两个紧缩四字数据元素。
图3B示出了根据本公开的实施例的可能的寄存器内数据存储格式。每个紧缩数据可包括多于一个的独立数据元素。示出了三种紧缩数据格式:紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343。紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343的一个实施例包含固定点数据元素。对于另一个实施例,紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343中的一个或多个可包含浮点数据元素。紧缩半数据元素341的一个实施例可以是128位长,包含八个16位数据元素。紧缩单数据元素342的一个实施例可以是128位长,并且包含四个32位数据元素。紧缩双数据元素343的一个实施例可以是128位长,并且包含两个64位数据元素。将会理解,可进一步将此类紧缩数据格式扩展至其他寄存器长度,例如,96位、160位、192位、224位、256位或更长。
图3C示出了根据本公开的实施例的多媒体寄存器中的各种有符号和无符号紧缩数据类型表示。无符号紧缩字节表示344示出将无符号紧缩字节存储在SIMD寄存器中。每一个字节数据元素的信息可以被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,可以在该寄存器中使用所有可用的位。该存储配置可提高处理器的存储效率。同样,因为访问了十六个数据元素,所以现在可以并行方式对十六个数据元素执行一个操作。有符号紧缩字节表示345示出了有符号紧缩字节的存储。注意,每个字节数据元素的第八位可以是符号指示符。无符号紧缩字表示346示出了如何可以将字7到字0存储在SIMD寄存器中。有符号紧缩字表示347可以类似于无符号紧缩字寄存器内表示346。注意,每个字数据元素的第十六位可以是符号指示符。无符号紧缩双字表示348示出了如何存储双字数据元素。有符号紧缩双字表示349可以类似于无符号紧缩双字寄存器内表示348。注意,必要的符号位可以是每个双字数据元素的第三十二位。
图3D示出了操作编码(操作码)的实施例。此外,格式360可以包括与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网(www)intel.com/design/litcentr上获得的“IA-32英特尔架构软件开发者手册卷2:指令集参考(IA-32Intel Architecture SoftwareDeveloper's Manual Volume 2:Instruction Set Reference)”中描述的操作码格式类型相对应的寄存器/存储器操作数寻址模式。在一个实施例中,可通过字段361和362中的一个或多个对指令进行编码。可以对于每条指令标识多至两个操作数位置,包括多至两个源操作数标识符364和365。在一个实施例中,目的地操作数标识符366可以与源操作数标识符364相同,而在其他实施例中它们可以不相同。在另一个实施例中,目的地操作数标识符366可以与源操作数标识符365相同,而在其他实施例中它们可以不相同。在一个实施例中,由源操作数标识符364和365标识的源操作数中的一个可以被文本串比较操作的结果覆写,而在其他实施例中,标识符364对应于源寄存器元件,而标识符365对应于目的地寄存器元件。在一个实施例中,操作数标识符364和365可以标识32位或64位的源和目的地操作数。
图3E示出了根据本公开的实施例的具有四十位或更多位的另一可能的操作编码(操作码)格式370。操作码格式370对应于操作码格式360,并包括可选的前缀字节378。根据一个实施例的指令可通过字段378、371和372中的一个或多个来编码。通过源操作数标识符374和375以及通过前缀字节378,可对每条指令标识多至两个操作数位置。在一个实施例中,前缀字节378可被用于标识32位或64位的源和目的地操作数。在一个实施例中,目的地操作数标识符376可以与源操作数标识符374相同,而在其他实施例中它们可以不相同。对于另一个实施例,目的地操作数标识符376可以与源操作数标识符375相同,而在其他实施例中它们可以不相同。在一个实施例中,指令对由操作数标识符374和375所标识的操作数中的一个或多个进行操作,并且可以通过该指令的结果覆写由操作数标识符374和375所标识的一个或多个操作数,而在其他实施例中,可以将由标识符374和375标识的操作数写入另一寄存器中的另一数据元素中。操作码格式360和370允许由MOD字段363和373以及由可选的比例-索引-基址(scale-index-base)和位移(displacement)字节部分地指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、由立即数对寄存器寻址、寄存器到存储器寻址。
图3F示出了根据本公开的实施例的又一可能的操作编码(操作码)格式。可以通过协处理器数据处理(CDP)指令来执行64位单指令多数据(SIMD)算术操作。操作编码(操作码)格式380描绘了具有CDP操作码字段382和389的一条此类CDP指令。对于另一实施例,可由字段383、384、387和388中的一个或多个对CDP指令操作的这种类型进行编码。可以对每个指令标识多至三个操作数位置,包括多至两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可对8位、16位、32位和64位的值进行操作。在一个实施例中,可以对整数数据元素执行指令。在一些实施例中,可使用条件字段381,有条件地执行指令。对于一些实施例,可通过字段383来对源数据尺寸进行编码。在一些实施例中,可对SIMD字段执行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,可通过字段384对饱和类型进行编码。
图4A是示出根据本公开的实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图4B是示出根据本公开的实施例的、要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑的框图。图4A中的实线框示出了有序流水线,而虚线框示出了寄存器重命名的、乱序发布/执行流水线。类似地,图4B中的实线框示出了有序架构逻辑,而虚线框示出了寄存器重命名逻辑以及乱序发布/执行逻辑。
在图4A中,处理器流水线400可以包括取出级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也被称为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、写回/存储器写入级418、异常处理级422和提交级424。
在图4B中,箭头指示两个或更多个单元之间的耦合,且箭头的方向指示那些单元之间的数据流的方向。图4B示出了包括耦合到执行引擎单元450的前端单元430的处理器核490,且执行引擎单元和前端单元两者都可以耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或其他核类型。在一个实施例中,核490可以是专用核,诸如例如,网络或通信核、压缩引擎、图形核等。
前端单元430可以包括耦合至指令高速缓存单元434的分支预测单元432。指令高速缓存单元434可以耦合至指令转换后备缓冲器(TLB)436。TLB 436可以耦合至指令取出单元438,指令取出单元耦合至解码单元440。解码单元440可解码指令,并生成可从原始指令中解码出的、或以其他方式反映原始指令的、或可从原始指令中导出的一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号作为输出。可使用各种不同的机制来实现解码器。合适的机制的示例包括但不仅限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。在一个实施例中,指令高速缓存单元434可以进一步耦合到存储器单元470中的第2级(L2)高速缓存单元476。解码单元440可以耦合至执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450可以包括耦合至引退单元454的重命名/分配器单元452以及一组一个或多个调度器单元456。调度器单元456表示任意数量的不同调度器,包括预留站、中央指令窗等。调度器单元456可以耦合到物理寄存器堆单元458。每个物理寄存器堆单元458表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,等等)、状态(诸如,作为要被执行的下一条指令的地址的指令指针)等等。物理寄存器堆单元458可以被引退单元154所覆盖,以示出可实现寄存器重命名和乱序执行的多种方式(诸如,使用一个或多个重排序缓冲器和一个或多个引退寄存器堆、使用一个或多个未来文件(future file)、一个或多个历史缓冲器以及一个或多个引退寄存器堆;使用寄存器映射和寄存器池等等)。通常,架构寄存器从处理器外部或从编程者的视角来看可以是可见的。寄存器可能不限于任何已知特定类型的电路。各种不同类型的寄存器可适用,只要它们存储并提供本文中所述的数据。合适寄存器的示例包括但可能不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及专用物理寄存器和动态分配的物理寄存器的组合,等等。引退单元454和物理寄存器堆单元458可以耦合至执行群集460。执行群集460可以包括一组一个或多个执行单元162和一组一个或多个存储器访问单元464。执行单元462可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元456、物理寄存器堆单元458和执行群集460被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了多个单独流水线(例如,均具有各自调度器单元、物理寄存器堆单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线;以及在单独的存储器访问流水线的情况下,某些实施例可以被实现为仅仅该流水线的执行群集具有存储器访问单元464)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为乱序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元464的集合可以耦合到存储器单元470,该存储器单元可以包括耦合到数据高速缓存单元474的数据TLB单元472,其中数据高速缓存单元耦合到第2级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均可以耦合至存储器单元470中的数据TLB单元472。L2高速缓存单元476可以耦合至一个或多个其他等级的高速缓存,并最终耦合至主存储器。
作为示例,示例性寄存器重命名的、乱序发布/执行核架构可以如下实现流水线400:1)指令取出438可以执行取出和长度解码级402和404;2)解码单元440可以执行解码级406;3)重命名/分配器单元452可以执行分配级408和重命名级410;4)调度器单元456可以执行调度级412;5)物理寄存器堆单元458和存储器单元470可以执行寄存器读取/存储器读取级414;执行群集460可以执行执行级416;6)存储器单元470和物理寄存器堆单元458可以执行写回/存储器写入级418;7)各单元可牵涉到异常处理级422的性能;以及8)引退单元454和物理寄存器堆单元458可以执行提交级424。
核490可支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可以按各种方式来支持多线程操作(执行两个或更多个并行的操作或线程的集合)。可以由例如包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合来执行多线程操作支持。此类组合可以包括,例如,时分取出和解码以及此后诸如利用
Figure BDA0001648115280000211
超线程技术的同步多线程操作。
尽管可以在乱序执行的上下文中描述寄存器重命名,但是,应当理解,寄存器重命名可以用于有序架构中。虽然处理器的所示出的实施例也可以包括单独的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但其他实施例可具有用于指令和数据两者的单个的内部高速缓存,诸如例如,第1级(L1)内部高速缓存或多个层级的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存以及可以在核和/或处理器外部的外部高速缓存的组合。在其他实施例中,全部高速缓存都可以在核和/或处理器的外部。
图5A是根据本公开的实施例的处理器500的框图。在一个实施例中,处理器500可以包括多核处理器。处理器500可以包括通信地耦合至一个或多个核502的系统代理510。此外,核502和系统代理510可以通信地耦合至一个或多个高速缓存506。核502、系统代理510和高速缓存506可以经由一个或多个存储器控制单元552通信地耦合。此外,核502、系统代理510和高速缓存506可以经由存储器控制单元552通信地耦合至图形模块560。
处理器500可以包括用于将核502、系统代理510、以及高速缓存506、以及图形模块560互连的任何合适的机制。在一个实施例中,处理器500可以包括基于环的互连单元508以用于将核502、系统代理510、以及高速缓存506、以及图形模块560互连。在其他实施例中,处理器500可以包括任何数量的公知技术来将这些单元互连。基于环的互连单元508可以利用存储器控制单元552来促进互连。
处理器500可以包括存储器层级结构,该存储器层级结构包括核内的一个或多个层级的高速缓存、一个或多个共享高速缓存单元(例如高速缓存506)、或耦合到集成存储器控制器单元552的集合的外部存储器(未示出)。高速缓存506可以包括任何合适的高速缓存。在一个实施例中,高速缓存506可以包括一个或多个中级高速缓存,诸如,第2级(L2)、第3级(L3)、第4级(L4),或其他层级的高速缓存,末级高速缓存(LLC),和/或上述各项的组合。
在各实施例中,核502中的一个或多个可以执行多线程操作。系统代理510可以包括用于协调和操作核502的组件。系统代理单元510可以包括例如功率控制单元(PCU)。PCU可以是或可以包括用于调节核502的功率状态所需的逻辑和组件。系统代理510可以包括显示引擎512,用于驱动一个或多个外部连接的显示器或图形模块560。系统代理510可以包括用于通信总线的接口1214以用于图形。在一个实施例中,接口1214可以由PCI快速(PCIe)实现。在进一步的实施例中,接口1214可以由PCI快速图形(PEG)实现。系统代理510可以包括直接媒体接口(DMI)516。DMI 516可以提供母板上的或计算机系统的其他部分上的不同桥之间的链路。系统代理510可以包括PCIe桥1218以用于将PCIe链路提供到计算系统的其他元件。可以使用存储器控制器1220和一致性逻辑1222来实现PCIe桥1218。
核502可以以任何合适的方式来实现。核502可以是在架构和/或指令集上同构的或异构的。在一个实施例中,核502中的一些可以是有序的,而另一些可以是乱序的。在另一实施例中,核502中的两个或更多可以执行相同的指令集,而其他核仅可执行该指令集的子集或不同的指令集。
处理器500可以包括通用处理器,诸如酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔公司获得。处理器500可以提供自另一个公司,诸如,来自ARM控股公司、MIPS等。处理器500可以是专用处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器、等等。处理器500可以被实现在一个或多个芯片上。处理器500可以是一个或多个衬底的一部分,和/或可以使用多种处理技术中的任何一种(诸如,例如,BiCMOS、CMOS或NMOS)实现在一个或多个衬底上。
在一个实施例中,高速缓存506中的给定的一个可以被核502中的多个核共享。在另一实施例中,高速缓存506中的给定的一个可以专用于核502中的一个核。将高速缓存506分配到核502可以由高速缓存控制器或其他合适的机制处置。高速缓存506中的给定的一个可以通过实现给定高速缓存506的时分而被两个或更多核502共享。
图形模块560可以实现集成图形处理子系统。在一个实施例中,图形模块560可以包括图形处理器。此外,图形模块560可以包括媒体引擎565。媒体引擎565可以提供媒体编码和视频解码。
图5B是根据本公开的实施例的核502的示例实现的框图。核502可以包括通信地耦合至乱序引擎580的前端570。核502可以通过高速缓存层级结构503通信地耦合至处理器500的其他部分。
前端570可以以任何合适的方式实现,例如全部或部分地由如上所述的前端201。在一个实施例中,前端570可以通过高速缓存层级结构503与处理器500的其他部分通信。在进一步的实施例中,前端570可以从处理器500的部分取出指令并将这些指令准备好以供稍后当这些指令被传递到乱序执行引擎580时在处理器流水线中使用。
乱序执行引擎580可以以任何合适的方式实现,例如全部或部分地由如上所述的乱序执行引擎203。乱序执行引擎580可以将接收自前端570的指令准备好以供执行。乱序执行引擎580可以包括分配模块1282。在一个实施例中,分配模块1282可以分配处理器500的资源或其他资源(诸如寄存器或缓冲器)以执行给定的指令。分配模块1282可以在调度器(诸如存储器调度器、快速调度器或浮点调度器)中进行分配。此类调度器在图5B中可以由资源调度器584表示。分配模块1282可以全部或部分地由结合图2所描述的分配逻辑实现。资源调度器584可以基于给定资源的源的准备就绪以及执行指令所需的执行资源的可用性来确定指令何时准备好用于执行。资源调度器584可以由例如上文所讨论的调度器202、204和206实现。资源调度器584可以将指令的执行调度到一个或多个资源上。在一个实施例中,此类资源可以在核502的内部,并且可以示出为例如资源586。在另一实施例中,此类资源可以在核502的外部,并且可由例如高速缓存层级结构503访问。资源可以包括,例如,存储器、高速缓存、寄存器堆或寄存器。核502内部的资源可以表示为图5B中的资源586。如果需要,被写入资源586或从资源586读出的值可以通过例如高速缓存层级结构503与处理器500的其他部分协调。当指令被分配有资源时,它们可以被放置在重排序缓冲器588中。当指令被执行时,重排序缓冲器588可以跟踪指令,并且可以选择性地基于处理器500的任何合适的标准将指令的执行重排序。在一个实施例中,重排序缓冲器588可以标识可以被独立地执行的指令或一系列指令。可以与其他此类指令并行地执行此类指令或一系列指令。核502中的并行执行可以由任何合适数量的单独的执行块或虚拟处理器执行。在一个实施例中,共享资源(诸如存储器、寄存器和高速缓存)可以被给定核502内的多个虚拟处理器访问。在其他实施例中,共享资源可以被处理器500内的多个处理实体访问。
高速缓存层级结构503可以以任何合适的方式来实现。例如,高速缓存层级结构503可以包括一个或多个较低级或中级高速缓存,诸如高速缓存572和574。在一个实施例中,高速缓存层级结构503可以包括通信地耦合至高速缓存572和574的LLC 595。在另一实施例中,LLC 595可以实现在可被处理器500的所有处理实体访问的模块590中。在进一步的实施例中,模块590可以实现在来自英特尔公司的处理器的非核模块中。模块590可以包括对于核502的执行有必要的处理器500的部分或子系统中,但是可能不实现在核502内。除了LLC 595之外,模块590可以包括,例如,硬件接口、存储器一致性协调器、处理器间互连、指令流水线或存储器控制器。可以通过模块590并且更具体地LLC 595使处理器500可访问RAM599。此外,核502的其他实例可以类似地访问模块590。可以通过模块590部分地促进核502的实例的协调。
图6-8可以示出适于包括处理器500的示例性系统,而图9可以示出可包括核502中的一个或多个的示例性芯片上系统(SoC)。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、DSP、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和实现也可以是合适的。一般地,包含本文中所公开的处理器和/或其它执行逻辑的多个系统或电子设备一般可以是合适的。
图6示出了根据本公开的实施例的系统600的框图。系统600可以包括可以耦合至图形存储器控制器中枢(GMCH)620的一个或多个处理器610、615。附加的处理器615的可选性质在图6中通过虚线来表示。
每个处理器610、615可以是处理器500的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制单元可能不会出现在处理器610和615中。图6示出了GMCH 620可以耦合至存储器640,该存储器640可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 620可以是芯片组或芯片组的部分。GMCH 620可以与处理器610、615进行通信,并控制处理器610、615与存储器640之间的交互。GMCH 620还可充当处理器610、615和系统600的其他元件之间的加速总线接口。在一个实施例中,GMCH 620经由诸如前端总线(FSB)695之类的多点总线与处理器610、615进行通信。
此外,GMCH 620可以耦合至显示器645(诸如平板显示器)。在一个实施例中,GMCH620可以包括集成图形加速器。GMCH 620可以进一步耦合至输入/输出(I/O)控制器中枢(ICH)650,该输入/输出(I/O)控制器中枢(ICH)650可用于将各种外围设备耦合至系统600。外部图形设备660可以包括与另一外围设备670一起耦合至ICH 650的分立图形设备。
在其他实施例中,附加的或不同的处理器也可存在于系统600中。例如,附加的处理器610、615可以包括可以与处理器610相同的附加的处理器、可以与处理器610异构的或不对称的附加的处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在物理资源610和615之间可以存在包括架构、微架构、热和功耗特征等的一系列品质度量方面的各种差异。这些差异可以有效显示为处理器610和615之间的不对称性和异构性。对于至少一个实施例,各种处理器610和615可驻留在同一管芯封装中。
图7示出了根据本公开的实施例的第二系统700的框图。如图7所示,多处理器系统700可以包括点对点互连系统,并且可以包括经由点对点互连750而被耦合的第一处理器770和第二处理器780。处理器770和780中的每一个可以是处理器500的某个版本(如处理器610、615中的一个或多个)。
虽然图7可以示出两个处理器770、780,但是应当理解本公开的范围不限于此。在其他实施例中,在给定处理器中可存在一个或多个附加处理器。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还可以包括点对点(P-P)接口776和778作为其总线控制器单元的部分;类似地,第二处理器780可以包括P-P接口786和788。处理器770、780可以经由使用点对点(P-P)接口电路778、788的P-P接口750来交换信息。如图7所示,IMC 772和782可以将处理器耦合至相应的存储器,即,存储器732和存储器734,它们在一个实施例中可以是本地连接到相应的处理器的主存储器的部分。
处理器770、780可各自经由使用点对点接口电路776、794、786、798的各个P-P接口752、754与芯片组790交换信息。在一个实施例中,芯片组790还可以经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组790可以经由接口796耦合至第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图7所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线720,包括例如,键盘和/或鼠标722、通信设备727以及可包括指令/代码和数据730的存储单元728(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 724可以被耦合到第二总线720。注意,其他架构是可能的。例如,代替图7的点对点架构,系统可以实现多分支总线或其他此类架构。
图8示出了根据本公开的实施例的第三系统800的框图。图7和8中的类似元件使用类似附图标记,且在图8中省略了图7的某些方面以避免使图8的其他方面模糊。
图8示出处理器870、880可分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872和882可包括诸如以上结合图5和7所描述的集成存储器控制器单元。此外,CL 872、882还可包括I/O控制逻辑。图8示出了不仅存储器832、834可以被耦合到CL 872、882,而且I/O设备814也可以被耦合到控制逻辑872、882。传统I/O设备815可以被耦合至芯片组890。
图9示出了根据本公开的实施例的SoC 900的框图。在图5中,相似的部件具有同样的附图标记。另外,虚线框可以表示更先进的SoC的可选特征。互连单元902可耦合至:应用处理器910,其可包括一个或多个核的集合902A-N和共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一个或多个媒体处理器的集合920,其可包括集成图形逻辑908、用于提供静止和/或视频相机功能的图像处理器924、用于提供硬件音频加速的音频处理器926、以及用于提供视频编码/解码加速的视频处理器928;SRAM单元930;DMA单元932;以及显示单元940,其用于耦合至一个或多个外部显示器。
图10示出了根据本公开的实施例的处理器,包括中央处理单元(CPU)和图形处理单元(GPU),该处理器可执行至少一条指令。在一个实施例中,执行根据至少一个实施例的操作的指令可由CPU来执行。在另一实施例中,指令可以由GPU来执行。在又一实施例中,指令可以由GPU和CPU所执行的操作的组合来执行。例如,在一个实施例中,根据一个实施例的指令可被接收,并被解码,以便在GPU上执行。然而,经解码的指令中的一个或多个操作可由CPU来执行,并且结果被返回到GPU,以便进行指令的最终引退。相反,在一些实施例中,CPU可作为主处理器,而GPU作为协处理器。
在一些实施例中,受益于高度并行化的吞吐量处理器的指令可由GPU来执行,而受益于处理器(这些处理器受益于深度流水线架构)性能的指令可由CPU来执行。例如,图形、科学应用、金融应用以及其他并行工作负荷可受益于GPU的性能并相应地被执行,而更多的序列化应用(例如,操作系统内核或应用代码)可更适于CPU。
在图10中,处理器1000包括,CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、存储器接口控制器1045、MIPI控制器1050、闪存控制器1055、双数据率(DDR)控制器1060、安全引擎1065、I2S/I2C控制器1070。其他逻辑和电路(包括更多的CPU或GPU以及其他外围设备接口控制器)可被包括在图10的处理器中。
至少一个实施例的一个或多个方面可由存储在表示处理器内的各种逻辑的机器可读介质上的表示性数据来实现,当机器读取该表示性数据时,该表示性数据使得该机器用于制造执行本文所述的技术的逻辑。可将此类表示(称为“IP核”)存储在有形的机器可读介质(“磁带”)上,并将其提供给各种顾客或生产设施,以便加载到实际制作该逻辑或处理器的制造机器中。例如,IP核(诸如由ARM控股公司所开发的CortexTM处理器族以及由中国科学院计算机技术研究所(ICT)所开发的龙芯IP核)可被授权或销售给各种客户或受许可方,诸如德州仪器、高通、苹果、或三星,并被实现在由这些客户或受许可方生产的处理器中。
图11示出根据本公开的实施例的示出IP核开发的框图。存储设备1130可以包括仿真软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(例如,硬盘)、有线连接(例如,互联网)1150或无线连接1160而被提供给存储设备1130。由仿真工具和模型所生成的IP核信息可随后被发送到生产设施,可由第三方在该生产设施中制造该IP核以执行根据至少一个实施例的至少一条指令。
在一些实施例中,一条或多条指令可以对应于第一类型或架构(例如,x86),并且可在不同类型或架构(例如,ARM)的处理器上被转换或仿真。根据一个实施例,因此可在任何处理器或处理器类型(包括ARM、x86、MIPS、GPU或其他处理器类型或架构)上执行指令。
图12示出了根据本公开的实施例的不同类型的处理器可以如何仿真第一类型的指令。在图12中,程序1205包含可执行与根据一个实施例的指令相同或基本相同的功能的一些指令。然而,程序1205的指令可以是与处理器1215不同或不兼容的类型和/或格式,这意味着不能够由处理器1215原生地执行程序1205中的类型的指令。然而,借助于仿真逻辑1210,可以将程序1205的指令转换成可以由处理器1215原生执行的指令。在一个实施例中,仿真逻辑可以被具体化在硬件中。在另一实施例中,可以将仿真逻辑具体化在有形的机器可读介质中,该机器可读介质包含用于将程序1205中的该类指令转换为可由处理器1215原生地执行的类型的软件。在其他实施例中,仿真逻辑可以是固定功能或可编程硬件和存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其他实施例中,仿真逻辑在处理器之外,并且可以由第三方提供。在一个实施例中,通过执行被包括在处理器中或者与该处理器相关联的微代码或固件,处理器可以加载被具体化在包含软件的有形的机器可读介质中的仿真逻辑。
图13展示了对照根据本公开的实施例的用于将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用的框图。在所展示的实施例中,指令转换器可以是软件指令转换器,然而可以在软件、固件、硬件或其各种组合中实施指令转换器。图13示出了可以使用x86编译器1304来编译高级语言1302的程序以生成x86二进制代码1306,所述二进制代码可以由具有至少一个x86指令集核1316的处理器本机执行。具有至少一个x86指令集核1316的处理器表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同功能的任何处理器:(1)英特尔x86指令集核的指令集的实质部分,或(2)应用的目标代码版本或目标是在具有至少一个x86指令集核的英特尔处理器上运行的其他软件,以便实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1304表示可以可操作以生成x86二进制代码1306(例如,目标代码)的编译器,所述二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核1316的处理器上执行。类似地,图13示出了可以使用替代性指令集编译器1308来编译高级语言1302的程序以生成替代性指令集二进制代码1310,可以由不具有至少一个x86指令集核的处理器1314(例如,具有执行加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集的多个核的处理器)本机执行所述替代性指令集二进制代码。指令转换器1312可以用于将x86二进制代码1306转换为可由不具有x86指令集核1314的处理器本机执行的代码。这种经转换的代码可能与替代性指令集二进制代码1310不同;然而,经转换的代码将完成一般操作,并且由来自替代性指令集的指令构成。因此,指令转换器1312表示通过仿真、模拟或任何其他进程允许不具有x86指令集处理器或核的处理器或其他电子装置执行x86二进制代码1306的软件、固件、硬件或其组合。
图14是根据本公开的实施例的处理器的指令集架构1400的框图。指令集架构1400可以包括任何合适数量或种类的组件。
例如,指令集架构1400可以包括处理实体,诸如一个或多个核1406、1407以及图形处理单元1415。核1406、1407可以通过任何合适的机制(诸如通过总线或高速缓存)通信地耦合至指令集架构1400的剩余部分。在一个实施例中,核1406、1407可以通过L2高速缓存控制1408通信地耦合,L2高速缓存控制1408可以包括总线接口单元1409和L2高速缓存1410。核1406、1407和图形处理单元1415可以通过互连1410彼此通信地耦合并且耦合至指令集架构1400的剩余部分。在一个实施例中,图形处理单元1415可以使用视频编解码器1420,视频编解码器定义其中特定视频信号将被编码和解码以作为输出的方式。
指令集架构1400还可以包括任何数量或种类的接口、控制器或用于与电子设备或系统的其他部分相接或通信的其他机制。此类机制可以促进与例如外围设备、通信设备、其他处理器或存储器的交互。在图14的示例中,指令集架构1400可以包括LCD视频接口1425、用户接口模块(SIM)接口1430、引导ROM接口1435、SDRAM控制器1440、闪存控制器1445、以及串行外围接口(SPI)主单元1450。LCD视频接口1425可以提供将视频信号从例如GPU 1415并且通过例如移动产业处理器接口(MIPI)1490或高清晰度多媒体接口(HDMI)1495输出到显示器。此类显示器可以包括例如LCD。SIM接口1430可以提供到SIM卡或设备的访问或来自SIM卡或设备的访问。SDRAM控制器1440可以提供到存储器的访问或来自存储器的访问,存储器诸如SDRAM芯片或模块。闪存控制器1445可以提供到存储器的访问或来自存储器的访问,存储器诸如闪存或RAM的其他实例。SPI主单元1450可以提供到通信模块的访问或来自通信模块的访问,通信模块诸如蓝牙模块1470、高速3G调制解调器1475、全球定位系统模块1480或实现诸如802.11的通信标准的无线模块1485。
图15是根据本公开的实施例的处理器的指令集架构1500的更具体的框图。指令架构1500可以实现指令集架构1400的一个或多个方面。此外,指令集架构1500可以示出用于在处理器内的指令的执行的模块和机制。
指令架构1500可以包括通信地耦合至一个或多个执行实体1565的存储器系统1540。此外,指令架构1500可以包括高速缓存和总线接口单元,诸如通信地耦合至执行实体1565和存储器系统1540的单元1510。在一个实施例中,可以由一级或多级执行来执行将指令加载到执行实体1564中。此类级可以包括,例如,指令预取级1530、双指令解码级1550、寄存器重命名级155、发布级1560、以及写回级1570。
在一个实施例中,存储器系统1540可以包括被执行的指令指针1580。被执行的指令指针1580可以存储标识一批指令中的最早的、未被分派的指令的值。最早指令可以与最低程序顺序(PO)值相对应。PO可以包括指令的唯一编号。这种指令可以是在由多个缕程(strand)表示的线程内的单条指令。PO可以用于在排序指令时确保正确执行代码的语义。PO可以通过诸如对在指令中编码的PO的增量而非绝对值进行评估的机制来重建。这种重建的PO可以被称为“RPO”。尽管本文可以引用PO,但是这种PO可以与RPO互换地使用。缕程可以包括指令序列,这些指令为取决于彼此的数据。所述缕程可以在编译时由二进制转换器来安排。执行缕程的硬件可以根据各种指令的PO有序地执行给定缕程的指令。线程可以包括多个缕程,使得不同缕程的指令可以彼此依赖。给定缕程的PO可以是所述缕程中尚未分派以从发布阶段开始执行的最早指令的PO。因此,给定多个缕程的线程,每个缕程包括由PO排序的指令,被执行的指令指针1580可以将最早的——由最低编号所展示的——PO存储在线程中。
在另一实施例中,存储器系统1540可以包括引退指针1582。引退指针1582可以存储标识上一引退的指令的PO的值。引退指针1582可以由例如引退单元454设置。如果还未引退指令,则引退指针1582可以包括空值。
执行实体1565可以包括任何合适数量和种类的机制,处理器可以通过该机制执行指令。在图15的示例中,执行实体1565可以包括ALU/乘法单元(MUL)1566、ALU 1567和浮点单元(FPU)1568。在一个实施例中,此类实体可以利用包含在给定地址1569内的信息。执行实体1565与级1530、1550、1555、1560和1570相结合可以共同地形成执行单元。
单元1510可以以任何合适的方式来实现。在一个实施例中,单元1510可以执行高速缓存控制。在此类实施例中,单元1510可以因此包括高速缓存1525。在进一步的实施例中,高速缓存1525可以实现为具有任何合适尺寸的L2统一高速缓存,诸如存储器的零、128k、256k、512k、1M或2M字节。在另一进一步的实施例中,高速缓存1525可以实现在纠错码存储器中。在另一实施例中,单元1510可以执行总线与处理器或电子设备的其他部分相接。在此类实施例中,单元1510可以因此包括总线接口单元1520以用于通过互连、处理器内总线、处理器间总线或其他通信总线、端口或线通信。总线接口单元1520可以提供相接以执行例如生成存储器和输入/输出地址以用于在执行实体1565与在指令架构1500外部的系统的部分之间的数据传输。
为了进一步促进其功能,总线接口单元1520可以包括中断控制和分配单元1511以用于生成中断和其他通信到处理器或电子设备的其他部分。在一个实施例中,总线接口单元1520可以包括监听控制单元1512,其为多个处理核处置高速缓存访问和一致性。在进一步的实施例中,为了提供此类功能,监听控制单元1512可以包括高速缓存到高速缓存传输单元,其处置不同高速缓存之间的信息交换。在另一进一步的实施例中,监听控制单元1512可以包括一个或多个监听过滤器1514,其监视其他高速缓存(未示出)的一致性,使得高速缓存控制器(诸如单元1510)不必直接执行此类监视。单元1510可以包括任何合适数量的计时器1515以用于使指令架构1500的动作同步。此外,单元1510可以包括AC端口1516。
存储器系统1540可以包括任何合适数量和种类的机制以用于为指令架构1500的处理需要存储信息。在一个实施例中,存储器系统1504可以包括加载存储单元1530以用于存储信息,诸如写入存储器或寄存器或从存储器或寄存器读回的缓冲器。在另一实施例中,存储器系统1504可以包括转换后备缓冲器(TLB)1545,其提供在物理地址与虚拟地址之间查找地址值。在又一实施例中,总线接口单元1520可以包括存储器管理单元(MMU)1544以用于促进对虚拟存储器的访问。在再一实施例中,存储器系统1504可以包括预取器1543以用于在实际需要执行指令之前从存储器请求这些指令以减少等待时间。
指令架构1500执行指令的操作可以通过不同级来实现。例如,通过使用单元1510,指令预取级1530可以通过预取器1543访问指令。可以将被检索的指令存储在指令高速缓存1532中。预取级1530可以为快速循环模式实现选项1531,其中执行形成足够小以装入给定高速缓存的循环的一系列指令。在一个实施例中,可以实现此类执行而无需访问来自例如指令高速缓存1532的附加指令。对预取哪些指令的确定可以由例如分支预测单元1535作出,其可以访问全局历史1536中对执行的指示、对目标地址1537的指示、或返回栈1538的内容以确定接下来将执行代码的分支1557中的哪些指令。可能预取此类分支作为结果。分支1557可以通过如下所述的其他级的操作而产生。指令预取级1530可以将指令以及关于未来指令的任何预测提供到双指令解码级。
双指令解码级1550可以将所接收的指令转换成可以被执行的基于微代码的指令。双指令解码级1550可以在每个时钟周期同时解码两个指令。此外,双指令解码级1550可以将其结果传递到寄存器重命名级1555。此外,双指令解码级1550可以从其对微代码的解码和最终执行确定任何所得的分支。可以将此类结果输入到分支1557中。
寄存器重命名级1555可以将对虚拟寄存器或其他资源的引用转换成对物理寄存器或资源的引用。寄存器重命名级1555可以包括对寄存器池1556中的此类映射的指示。寄存器重命名级1555可以改变所接收的指令并且将结果发送到发布级1560。
发布级1560可以将命令发布或分派到执行实体1565。可以以乱序方式执行此类发布。在一个实施例中,可以在多个指令被执行之前在发布级1560处保存该多个指令。发布级1560可以包括指令队列1561以用于保存此类多个命令。可以由发布级1560基于任何可接受的标准(诸如资源对于给定指令的执行的可用性或合适性)将指令发布到特定处理实体1565。在一个实施例中,发布级1560可以将指令队列1561内的指令重排序,从而第一接收的指令可能不是第一执行的指令。基于指令队列1561的排序,可以将附加分支信息提供到分支1557。发布级1560可以将指令传递到执行实体1565以供执行。
一旦执行,写回级1570可以将数据写入寄存器、队列、或指令集架构1500的其他结构以传递给定命令的完成。取决于布置在发布级1560中的指令的顺序,写回级1570的操作可以使得附加指令能被执行。可以由跟踪单元1575监视或调试指令集架构1500的性能。
图16是根据本公开的实施例的用于处理器的指令集架构的执行流水线1600的框图。执行流水线1600可以示出例如图15的指令架构1500的操作。
执行流水线1600可以包括步骤或操作的任何合适组合。在1605中,可以作出对接下来会执行的分支的预测。在一个实施例中,此类预测可以基于指令的先前执行及其结果。在1610中,可以将对应于执行所预测的分支的指令加载到指令高速缓存中。在1615中,可以取出指令高速缓存中的一个或多个此类指令以供执行。在1620中,可以将已经被取出的指令解码为微代码或更具体的机器语言。在一个实施例中,可以同时解码多个指令。在1625中,可以重新分配对经解码的指令内的寄存器或其他资源的引用。例如,可以将对虚拟寄存器的引用替换为对相应的物理寄存器的引用。在1630中,可以将指令分派到队列以供执行。在1640中,可以执行指令。此类执行可以以任何合适的方式来实现。在1650中,可以将指令发布到合适的执行实体。执行指令的方式可以取决于执行指令的特定实体。例如,在1655处,ALU可以执行算术功能。ALU可以利用单个时钟周期以及两个移位器以用于其操作。在一个实施例中,可以采用两个ALU,并且因此在1655处可以执行两个指令。在1660处,可以作出对所得分支的确定。程序计数器可以用于指示将作出分支的目的地。可以在单个时钟周期内执行1660。在1665处,可以由一个或多个FPU执行浮点算术。浮点操作可以要求多个时钟周期(诸如两个到十个周期)来执行。在1670处,可以执行乘法和除法操作。可以在四个时钟周期中执行此类操作。在1675处,可以执行将操作加载和存储到寄存器或流水线1600的其他部分。操作可以包括加载和存储地址。可以在四个时钟周期中执行此类操作。在1680处,可以根据1655-1675的所得操作的需要执行写回操作。
图17是根据本公开的实施例的用于利用处理器1710的电子设备1700的框图。电子设备1700可以包括例如笔记本、超级本、计算机、塔服务器、机架服务器、刀片服务器、膝上型计算机、台式机、平板、移动设备、电话、嵌入式计算机、或任何其他合适的电子设备。
电子设备1700可以包括通信地耦合至任何合适数量或种类的组件、外围设备、模块或设备的处理器1710。此类耦合可以通过任何合适种类的总线或接口完成,例如I2C总线、系统管理总线(SMBus)、低引脚数(LPC)总线、SPI、高清晰度音频(HDA)总线、串行先进技术附接(SATA)总线、USB总线(版本1、2、3)或通用异步接收机/发射机(UART)总线。
此类组件可以包括,例如,显示器1724、触摸屏1725、触板1730、近场通信(NFC)单元1745、传感器中枢1740、热传感器1746、快速芯片组(EC)1735、受信任平台模块(TPM)1738、BIOS/固件/闪存1722、DSP1760、诸如固态硬盘(SSD)或硬盘驱动器(HDD)的驱动器1720、无线局域网(WLAN)单元1750、蓝牙单元1752、无线广域网(WWAN)单元1756、全球定位系统(GPS)、诸如USB 3.0相机的相机1754、或以例如LPDDR3标准实现的低功率双数据率(LPDDR)存储器单元1715。这些组件可以各自以任何合适的方式来实现。
此外,在各实施例中,其他组件可以通过上文讨论的组件通信地耦合至处理器1710。例如,加速度计1741、环境光传感器(ALS)1742、罗盘1743以及陀螺仪1744可以通信地耦合至传感器中枢1740。热传感器1739、风扇1737、键盘1746以及触板1730可以通信地耦合至EC 1735。扬声器1763、头戴式耳机1764以及话筒1765可以通信地耦合至音频单元1764,音频单元可以进而通信地耦合至DSP 1760。音频单元1764可以包括,例如,音频编解码器和D类放大器。SIM卡1757可以通信地耦合至WWAN单元1756。诸如WLAN单元1750、蓝牙单元1752以及WWAN单元1756的组件可以以下一代形状因数(NGFF)实现。
图18是根据本公开的实施例的用于实施用于可编程结构的逻辑和指令的系统1800的框图。系统1800可以包括用于可编程结构的层级结构和高速缓存。
系统1800中的可编程结构可以用于动态地实施专用计算结构。系统1800可以包括由如现场可编程门阵列(FPGA)、现场可编程神经阵列(FPNA)或现场可编程模拟阵列(FPAA)等可编程结构创建的计算结构。可编程结构的操作可以由另一处理器、核或CPU来控制。
在一个实施例中,本公开的可编程结构可以位于同一芯片、管芯上,或者位于与管理所述可编程结构的处理器、核或CPU相同的封装体内。例如,系统1800可以包括L1可编程结构1816和L2可编程结构1818,但是根据本公开的教导可以使用任何适当数量和种类的结构。这些结构位于与诸如用于管理所述结构的使用的CPU 1804等处理器相同的SoC 1802上。尽管CPU 1804被描述为处理器,但是其可以利用在处理器级以下的诸如处理器核、流水线、或其他执行实体等组件来实施。
在另一实施例中,系统1800可以包括用于可编程结构的高速缓存,所述可编程结构位于同一芯片、管芯上或者位于与管理所述可编程结构的处理器、核或CPU相同的封装体内。例如,系统1800可以包括L1结构高速缓存1820、L2结构高速缓存1822、以及未在图18中示出但在下文进一步详细讨论的其他高速缓存。
在又另一实施例中,系统1800可以包括可编程结构的层级结构,所述可编程结构位于同一芯片、管芯上或者位于与管理所述可编程结构的处理器、核或CPU相同的封装体内。所述层级结构还可以包括相关联的高速缓存,其中一些未在图18中示出但将在下文进一步详细讨论。例如,L1可编程结构1816和L2可编程结构1818可以被安排成使得L1可编程结构1816被定位成比L2可编程结构1818更靠近CPU 1804。系统1800可以包括用于可编程结构的层级结构、用于可编程结构的配置的高速缓存、以及用于指令和数据的存储器高速缓存。
CPU 1804可以通过例如有序处理器流水线和乱序处理器流水线、处理器核、或其他适当机制来实施。可以包括其他元件以支持CPU 1804和SoC 1802的执行,图18中未示出。CPU 1804和SoC 1812可以采用任何适当的方式来实施,包括部分地由如结合图1至图17所描述的元件。可以在结合图1至图17所描述的元件以及组成CPU 1804或SoC 1802的组件内实施SoC 1802的其他部分,诸如可编程结构或结构高速缓存。CPU 1804可以使用处理器流水线的实施例来执行指令。CPU 1804可以包括多个核、引擎和乱序处理。CPU 1804可以包括用于从诸如高速缓存子系统1806或存储器1814等存储器或高速缓存中接收或读取指令的前端。所述前端可以包括用于使用要执行的可能指令来高效地填充流水线的读取器。前端可以包括解码器,所述解码器用于将指令解码为用于执行的操作码,确定其意义,获得副作用、所需数据、所消耗数据以及将产生的数据。二进制转换器可以用于优化代码。指令可以驻留在如由编译器产生的指令流中,或可以由二进制转换器创建。信息可以被传递至执行流水线中的乱序或有序执行引擎以供由CPU 1804执行。执行流水线可以包括重命名和分配单元,所述重命名和分配单元用于对乱序执行的指令进行重命名、将这种重命名惯例存储在与引退单元共存的重排序缓冲器(ROB)中,从而使得指令可以看起来像是按照其被接收的顺序而引退。重命名和分配单元可以进一步分配资源以供并行地执行指令。调度器可以在输入可用时调度要在执行单元上执行的指令,或者可以调度有待在可编程结构1816、1818上执行的指令。执行单元或可编程结构1816、1818的输出可以在ROB中排队。前端可以试图预料将阻止指令在序列流中执行的任何行为并且可以读取可能执行的指令流。当存在例如误预测时,ROB可以通知前端,并且不同指令集可能替代地被执行。
如以上所讨论的,结构1816、1818可以包括FPGA、FPNA、或FPAA。在一个实施例中,结构1816、1818可以各自通信地耦合至用于控制和管理诸如高速缓存1820、1822等对应结构的一个或多个实体。此外,结构1816、1818可以通信地耦合至未在图18中展示但在下文中进一步详细描述的结构或存储器控制器。高速缓存1820、1822和对应的结构和存储器控制器可以彼此、与CPU 1804、以及芯片I/O 1808进行通信。芯片I/O可以处理与例如存储器1814或系统1800中的其他目的地进行的通信。
在图18的示例中,结构1816、1818可以各自包括高速缓存、控制器和可编程结构阵列的组合的多个实例。这些组合可以被称为结构区块。给定层级的结构区块可以指定此给定层级的所有的可编程结构以及相关联的高速缓存和控制器。可编程结构阵列其自身可以包括限定的、离散数量的可编程结构区1826。单独可编程结构区1826可以被配置成可以处理特定任务以便由CPU 1804实现执行指令的专用执行块,比如执行单元。每个区1826可以包括适当数量的可配置块,当区1826被加载有配置文件或其他规范时,这些可配置块各自被编程为使得区1826作为指定执行单元来操作。对于给定的结构或区块,区1826可以表示可以配置有特定身份以代表SoC 1802和CPU 1804来执行用于执行指令的任务的单元。
CPU 1804可以通过高速缓存子系统1806从存储器1814中提取指令。基于有待执行的特定指令,可以通过诸如结构1816、1818等可编程结构更高效地执行一些任务。系统1800的任何适当的部分可以判定是否通过区1826来执行给定任务。在一个实施例中,由编译器生成的指令或以指令流的形式提供的指令可以具体地指定结构1820、1822中的区1826将用于实施指定执行任务。在另一实施例中,SoC 1802的一部分可以确定结构1820、1822中的区1826将用于实施指定执行任务。可以基于结构1820、1822高效地执行任务的能力来作出使结构1820、1822中的区实施指定执行任务的决定。此外,可以根据有待应用于结构1820、1822的区的给定配置的可用性来作出所述决定。例如,如果特定配置可用或将适用于结构1820、1822的区内,则可以选择所述配置、将其加载到对应区中、执行一次或多次并且将结果返回至CPU 1804。所述决定可以进一步基于是否将由所配置区进行足够数量的执行。例如,一次执行可能不足以超过对区1826的进行配置的开销。然而,如果执行将发生几千次,并且区1826可以比CPU 1804中的正常执行单元更高效地执行任务,则提高的执行效率可能超过开销。
区1826可以在结构1816与结构1818之间改变尺寸。例如,结构1818中的区可以具有四倍的管芯空间,并且因此可以具有四倍的门,并且可以具有结构1816中的区的四倍的用于实施功能的可用空间。然而,结构1816可能被定位成比结构1818更靠近CPU 1804。因此,结构1816可以用于比在结构1818中的任务更频繁地执行的较小执行任务。此外,因为区1826是可能被唯一地标识成执行CPU 1804的任务的给定结构的最小部分,因此从CPU 1804的角度来看,作为一种“黑箱”,在给定区1826内的未使用空间可能无法由同一结构内的其他区使用。因此,有待加载到用于执行任务的区1826中的配置可能应用于配置将适用的最小可用区1826。另一结构1818可以能够实施比结构1820更复杂的执行单元,但是具有与CPU1804的较低通信速度。
系统1800可以包括另一系统可编程结构1810,所述系统可编程结构可以包括由例如FPGA实施的可重新配置逻辑块。结构1810可以由CPU 1804控制。然而,由于结构1810在SoC 1802和CPU 1804片外,因此结构1810与CPU 1804、以及支持SoC 1802内的CPU 1804操作的组件之间可能存在较低的通信带宽。通信带宽可能受系统总线1812的带宽的限制,所述系统总线的带宽可能低于SoC 1802内的总线或迹线。结构1810的实用性可能受到诸如其中可以在没有与CPU 1804进行较多通信的情况下完成大量计算的应用的限制。这可以防止结构1810有效地实施许多更普通的低层级执行块。SoC 1800可能将太大而无法适用于结构1816、1818的区中的配置分配给结构1810。然而,这些可能会遇到带宽问题。
图19是根据本公开的实施例的系统1800的元件的更详细示意图。
在一个实施例中,系统1800可以包括单独可编程结构阵列1908。这些可编程结构阵列可以全部或部分地由图18的结构1816、1818来实施。可以存在任何适当数量的阵列1908,如,M个阵列。阵列1908可以与结构层级结构的给定层级相对应。如所示出的,阵列1908可以属于这种层级结构的层级N。
阵列1908可以以任何适当的方式接口连接到系统1800的其余部分。在一个实施例中,阵列1908可以使用结构接口控制器(FIC)1902来接口连接到系统1800的其余部分。在另一实施例中,阵列1908可以使用配置存储器控制器(CMC)1904来接口连接到系统1800的其余部分。在又另一实施例中,针对给定阵列1908,系统1800可以包括配置高速缓存(cCache)1906。
FIC 1902可以以任何适当的方式来实施,包括使用逻辑或电路系统。以下进一步更加详细地描述了FIC 1902的不同实施例。FIC 1902可以实施用于由SoC 1802执行的指令,这些指令被寻址到结构和阵列1908的配置。例如,FIC 1902可以转换并执行控制命令以及加载、操作和发起去往/来自结构的存储器事务。控制可以暂时授权给FIC 1902以在操作期间发起其自身的存储器事务。
CMC 1904可以以任何适当的方式来实施,包括使用逻辑或电路系统。以下进一步更加详细地描述了CMC 1904的不同实施例。CMC 1904可以将到cCache 1906或阵列1908的输入路径和输出路径映射至存储器或寄存器。这种输入路径和输出路径可以在FIC 1902中、由其制成或建立。而且,CMC 1904可以根据由CPU 1804进行的控制来缓冲输入和输出。
CCache 1906可以被实施成存储指定将如何对阵列1908的给定区进行编程的配置。配置的结果可以包括阵列1908区的门或其他块的特定布局。这种配置可以包括配置文件,所述配置文件具有对结构区的互连和块直接进行配置的已编译的低层级位流。所述配置可以被存储在cCache 1906中,以使得:给定针对特定任务的请求,所述配置可以被快速地加载到阵列1908的区上并且可用于执行。可以快速地交换和加载不同的配置。CCache1906可以被指定为在结构层级结构中的层级N处的高速缓存。
如以上所讨论的,在给定层级结构处,可以存在多个阵列1908,诸如M个不同阵列。这些阵列在图19中示出为阵列1908A至1908B。这些阵列1908的组合可以被称为结构区块1920。结构区块1920可以被称为其层级结构的给定层级LN。此外,对阵列1908而言唯一的任何相关联元件都可以单独地或者共同地被认为是给定结构区块1920的一部分。例如,FIC1902A至1902B、CMC 1904A至1904B、以及cCache LN1906A至1906B可以被认为是结构区块1920的一部分。层级结构的其他层可以包括其自身的对应结构区块1920。例如,针对层级N可以存在结构区块1920,并且针对层级N+1可以存在不同的结构区块1922。
结构区块1920、1922可以以任何适当的方式互连至SoC 1802的其他部分。例如,执行流水线的指令分派单元1910可以连接至结构区块1920的给定FIC 1902。指令分派单元1910可以提供有待由阵列1908的区执行的指令,或者可以将这种区的配置指定为不同的执行安排。如SoC 1802的数据高速缓存LN 1912等数据高速缓存可以包括可用于由执行单元以及可重新配置结构进行读操作或写操作的数据地址。可以通过高速缓存1912从CMC 1904发送输入数据或输出数据。
在一个实施例中,SoC 1802可以包括多层配置高速缓存。例如,所述层级结构的给定层的所有cCache 1906都可以被路由至cCache-高速缓存1914、被指定为层级结构的较高层,诸如,N+1。cCache-高速缓存1914可以被如此指定,因为其是用于其他cCache的高速缓存,并且其自身可以是cCache。CCache-高速缓存(N+1)1914可以通过例如CMC 1904连接至cCache(N)1906。CCache-高速缓存1914可以存储可在阵列1908的特定层级(N)上运行的配置文件。因此并且例如,服务于L1结构阵列的L2cCache-高速缓存及其相关联的L1cCache可能被设计为保持不同于与L2结构阵列相关联的L2cCache的数据。然而,这种约束可能不是绝对的。此外,空间在L2阵列区中可用于将以其他方式保留在L1cCache中的配置以供与L1阵列区一起使用(由于,例如,L1阵列区小于L2阵列区)。然而,根据所使用的实施方式,可能优化或专门实施cCache-高速缓存的给定层级LN+1,以便服务层级LN的配置。
如果需要的话,尤其是当例如层级LN配置可以在层级LN+1阵列1906上执行时,cCache-高速缓存1914、1930的不同层级可以一起工作。在这种情况下,cCache-高速缓存1914、1930可以平衡工作负荷,并且如果空间在较小、较低层级高速缓存上不可用,则配置可以替代地被存储在较大、较高层级的高速缓存上。CCache-高速缓存1914、1930还可以从系统高速缓存、诸如系统高速缓存1924的任何适当层级中获得附加信息。此系统高速缓存1924可以包括来自例如层级LN+2的指令或数据高速缓存信息。可以使用其他适当的层级。CCache-高速缓存1914、1930可以对芯片I/O 1810进行寻址以例如访问SoC 1802外部的存储器或其他元件。
图20是根据本公开的实施例的配置高速缓存层级结构的框图。图20展示了三级层级结构的不同层级的示例安排,但是可以对所呈现的安排适当地进行改变。
在一个实施例中,L1结构区块2002可以通过L1cCache-高速缓存2004连接至L3系统高速缓存2006。L3系统高速缓存2006进而可以连接至存储器2016。在另一实施例中,L2结构区块2008可以通过L2cCache-高速缓存2010连接至存储器2016。在又另一实施例中,包括比结构区块2002、2008中的阵列更大的阵列的L3可编程结构2012可以通过其L3高速缓存和控制器2014连接至存储器2016。在这种实施例中,单个阵列可能用于L3可编程结构,并且因此,实质上是单个阵列的结构区块。因此,不可能将cCache-高速缓存放置在阵列与存储器2016之间。
在一个实施例中,仅L1结构可以直接使用处理器寄存器来发起存储器事务。在另一实施例中,任何较高层都可以通过其对应的CMC而被限制到DMA类型的存储器事务。
图21是根据本公开的实施例的配置高速缓存及其操作的框图和示意图。如L1cCache 2102等cCache可以接收将从其配置中加载指定配置N的指令。在一个实施例中,所述指令可以指定所述配置将被加载到结构阵列的哪个区中。在另一实施例中,cCache可以判定所述配置将被加载到结构阵列的哪个区中。在其他实施例中,FIC可以作出这种判定并且将所述判定作为有待发送的指令的一部分而发布至cCache。在又另一实施例中,由FIC接收的指令可以指定所述判定,所述判定进而可以被中继至cCache。虽然CCache可以包括用于任何适当数量的配置的空间,但在图21的示例中,cCache 2102可以包括用于四种配置2104的空间。CCache 2102可以使新的配置能够被快速地推送、切换、转储清除、保存或重置。在一个实施例中,cCache 2102可以响应于预加载指令,所述预加载指令开始从另一源(如更高层级高速缓存或存储器)将配置加载到cCache 2102中,从而使得等待时间减少。
在一个实施例中,cCache 2102可以从存储于其中的一个或多个配置文件2104中识别配置文件2104N。CCache 2102可以存储有限数量的配置文件2104。在另一实施例中,如果给定配置文件2104不可用,则可能从较高层级cCache-高速缓存获得配置文件。在又另一实施例中,如果此较高层级cCache-高速缓存不具有可用的配置文件,则所述配置文件可以从例如存储器或甚至更高层级cCache-高速缓存中获得。因此,cCache和cCache-高速缓存可以维持彼此之间的一致性。此外,所述cCache和cCache-高速缓存可以维持与如dCache或iCache等其他SoC高速缓存的一致性。可以部分地例如使用修改、拥有、独占、共享、无效(Modified Owned Exclusive Shared Invalid,MOESI)协议来实现一致性。在一个实施例中,这种高速缓存的一致性可能偏离MOESI协议或可以使用的其他协议。在这种实施例中,可以在操作期间锁定高速缓存配置行。所述锁定可以由例如ISA指令来指定。因此,所执行的操作可能会变成原子的。
一旦发现或获得配置2104N,CCache 2102就可以将配置加载到实际的结构区,比如结构0 2106。可以根据配置2104N来对单独的逻辑块2108进行编程。
配置2104可以被设计成使得每个可编程逻辑块2108和互连的默认状态为关闭的、未通电或断开连接的。因此,如果编程器不需要整个结构阵列,则可以仅使用输入通道与输出通道之间的必要列来加载较小的配置以用于实现指定的计算。因此,可以限定区。编译器可以组合在可编程结构的给定阵列内的配置,以将配置组合成最大化地利用所述结构。给定类型的SoC 1802可以通过可用指令来限定结构区的默认尺寸以及这些区可以如何互换使用。
图22是根据本公开的实施例的结构接口控制器可以如何与可编程结构交互的框图。FIC 2202可以包括用于输入、输出和控制的引脚、端口或通道。控制端口可以被路由至cCache,以使逻辑区2206被配置成特定执行块。在一个实施例中,输入端口可以被路由至输入移位寄存器2208。在另一实施例中,输出端口可以被路由至输出移位寄存器2204。
与结构区块内的对应FIC或CMC单元进行的通信可能需要使用限定的协议来发送和接收位。在一个实施例中,所述协议可通过诸如移位寄存器2204、2208等缓冲移位寄存器来间接地提供通信。
在一个实施例中,cCache 2102可以允许将配置保存或重置为原始配置。这些可以包括当所述配置位于结构区2206上时所述配置实际改变的情况。这些情况可以包括例如状态机或使用存储器的结构区域的函数。可以响应于指定这种操作的指令而执行保存和重置。通过移位寄存器2204进行的输出可以允许在特权执行模式期间验证和批准异步存储器事务。例如,这可以在安全应用中执行。
图23是根据本公开的实施例的示例结构接口控制器和示例配置存储器控制器的框图。FIC 2302可以包括用于配置可编程结构的任何适当数量和类型的组件。例如,FIC2302可以包括用于跟踪操作码、输入、和输出的计数器区块2316。这些计数器区块可用于跟踪输入和输出日志以便在未预期的结构行为在例如非特权执行模式下发生时引发异常。此外,FIC 2302可以包括用来与结构或cCache进行通信的端口2312,诸如时钟信号、输入端口、输出端口、以及用于发送读请求和写请求以及发送读授权和写授权的端口。这些端口可以与结构或其cCache进行接口连接。
在一个实施例中,FIC 2302可以包括cCache一致性控制逻辑2314,用于判定配置是否在cCache中可用或者这种配置是否必须从更高层级高速缓存或存储器中获取。
在另一实施例中,FIC 2302可以包括指令端口2308。通过指令端口2308接收的指令可以由编译器或代码或者由SoC 1802的其他部分生成,并且可以指定关于结构将要执行的操作。所述操作可以包括将由结构执行的操作以及将由FIC 2302或CMC 2304执行以便对结构进行配置的操作。可以接收任何适当的指令,诸如指定操作码或有待由结构执行的指令的类型定义、输入尺寸、输出尺寸、输入地址、输出地址或分频的时钟信号的那些指令。在进一步实施例中,FIC 2302可以包括用于控制结构或CMC 2304的操作的控制逻辑2310。控制逻辑2310可以实施对配置指令的执行。例如,FIC 2302可以向cCache发送命令以加载具体配置。FIC 2302可以调解CPU 1804、SoC 1802与结构之间的通信。FIC 2302可以向CMC2304发布控制。
在又另一实施例中,指令可以由CMC 2304执行,以建立到存储器或其他高速缓存的输入路径和输出路径。根据结构的配置、有待执行的任务、任何输入数据的源、以及任何输出数据的目的地,CMC 2304可以在结构与适当的输出2318之间建立输入输出结构通信通道2306。输出2318可以包括例如存储器或寄存器。
FIC 2302和CMC 2304可以将结构的多个部分与SoC 1802的其余部分隔离,并且可以负责对诸如LOAD(加载)或RUN(运行)等处理器指令作出反应。
任何适当的指令都可以用于专门针对可编程结构及其配置。可以根据存储器地址或寄存器来限定输入位置和输出位置。可以以例如字、半字、四分之一字或可以是例如64位的字节为单位来限定传送单位。例如,“结构单元”可以与单独的L1FPGA或FPNA相对应。
待由如本文所描述的可编程结构利用的结构指令可以包括为相关联配置文件指定结构单元和源存储器地址的结构预加载指令PRELOAD(预加载)。在一个实施例中,结构预加载指令可以采用以下形式:PRELOAD<fabric unit>,<src config mem address>(预加载<结构单元>,<源配置存储器地址>)。例如,所述结构预加载指令可以用于将相对较大的配置文件加载到cCache中。可能会在程序执行开始时预加载通常使用的配置和将最快要使用的配置以便利用后台存储器传送。PRELOAD可以引起将配置文件加载到与结构单元相关联的cCache中,即使其尚未直接加载到所述结构中。
结构指令可以包括为相关联配置文件指定结构单元和源存储器地址的结构加载指令LOAD。在一个实施例中,结构加载指令可以采用以下形式:LOAD<fabric unit>,<srcconfig mem address>(加载<结构单元>,<源配置存储器地址>).LOAD可以引起将配置实际传送至指定阵列上。如果在结构单元中的现有阵列配置被修改但未被保存,则所述阵列配置将被丢弃,并且配置文件的状态将保持为其原始被加载的状态。注意的是,在一些实施例中,可以选择配置高速缓存的替换策略,诸如最近最少使用(LRU)或神经学习模型。
结构指令可以包括为待保存的相关联配置文件指定结构单元和目的地地址的结构保存指令SAVE(保存)。在一个实施例中,结构保存指令可以采用以下形式:SAVE<fabricunit>,<dest config mem address>(保存<结构单元>,<目的地配置存储器地址>)。可以立即或至少在从阵列移除配置之前执行SAVE操作。
这些结构指令可以包括指定可以恢复原始配置文件信息的结构单元的结构重置指令RESET(重置)。在一个实施例中,结构重置指令可以采用以下形式:RESET<fabric unit>(重置<结构单元>)。可以应用RESET,例如,其中,对这些执行块的操作导致了执行块的改变。在进行后续操作之前,可能需要恢复原始配置。在实施例中,可以从L1cCache中获得这种原始配置。
结构指令可以包括指定结构单元的结构转储清除指令FLUSH(转储清除)。在一个实施例中,结构转储清除指令可以采用以下形式:FLUSH<fabric unit>,<config memaddress>(转储清除<结构单元>,<配置存储器地址>)。FLUSH可以从结构单元清除配置信息,而不保存。例如,当预期结构在一段时间上将不被使用并且不需要向其中的逻辑块提供电力时,可以使用FLUSH。这可以节省电力。
结构指令可以包括指定结构单元、周期数量、输入存储器地址、输入尺寸、输出存储器地址、和输出尺寸的结构运行指令RUN(运行)。在一个实施例中,结构运行指令可以采用以下形式:RUN<fabric unit>,<cycles>,<input mem address>,<input size>,<outputmem address>,<output mem size>(运行<结构单元>,<周期>,<输入存储器地址>,<输入尺寸>,<输出存储器地址>,<输出存储器尺寸>)。所述结构运行指令可以实际地操作经配置的可编程结构。所述指令可以指定要操作的时钟周期数量(如果配置是异步的,则所述时钟周期数量可以根据结构单元的预定时钟频率或处理器时钟频率来指定)和I/O参数。在一些模式中,可以将经配置的可编程结构设置为连续运行,例如在特权执行模式下自由运行。
结构指令可以包括指定结构单元的结构停止指令STOP(停止)。在一个实施例中,结构预加载指令可以采用以下形式:STOP<fabric unit>(停止<结构单元>)。所述结构停止指令可以在其当前执行帧中暂停同步结构。例如,可以在上下文切换或调试期间使用所述结构停止指令。类似地,结构恢复指令RESUME(恢复)可以引起执行恢复。在一个实施例中,结构预加载指令可以采用以下形式:RESUME<fabric unit>(恢复<结构单元>)。
注意,如本文所例示的结构指令可作为对诸如x86架构等给定ISA的扩展来提供,以允许将可重新配置的结构无缝地集成到基本上任何软件中。在实施例中,这些结构指令可以支持任何片上可重新配置结构,但是在一个实施例中,仅第一层级层级结构可以直接地对寄存器进行寻址;可重新配置逻辑硬件的其他层级可能被限制到直接存储器访问(DMA)类型的存储器事务。应理解的是,在各个实施例中,这些指令可以被扩展以同样地支持片外结构的操作。如本文所描述的ISA扩展可以使得复杂计算能够更快、更功率高效,并且与其他CPU操作完全并行,进而增强了高端且低功率装置的功率和效率。
如上文所见,这些结构指令精确地指定在哪个可编程结构(在可编程结构层级结构的每一层级上可能存在多个)上进行加载/操作。对这种结构指令的适当编程器和编译器使用可以利用包括具有多种配置的高速缓存的可编程结构安排来避免等待先前未高速缓存的配置的加载,所述多种配置可以在之间利用很少惩罚进行循环、同时还执行PRELOAD。
鉴于图20,可以在考虑图23时进行示例操作。应用可以在系统1800上运行,其中,区块2002、2008每个区块各自包括三个FPGA和一个FPNA。区块2002可以使用其FPNA来从位图图像中识别数字特征并且向由同样在区块2002中的FPGA实施的查找表输出特定格式的表示。此FPGA可以将输出映射成整数格式并且将数据存储在存储器中。
在应用的开始处,可以使用PRELOAD来预加载此FPGA和FPNA的配置文件。这种PRELOAD可以基本上在给定应用内的实际使用之前执行。PRELOAD命令可以指定对应的配置文件位置(R1,R2)和目的地结构(FPGA1_1,FPNA1_1)。
PRELOAD FPGA1_1,(R1)
PRELOAD FPNA1_1,(R2)
根据实际计算时间,可能已经在区块2002的cCache内预加载所述配置。实时地,可以使用LOAD命令将这些计算从cCache加载到实际的结构中。
LOAD FPGA1_1,(R1)
LOAD FPNA1_1,(R2)
所存储的25字节的数字图像各自可以在由R3指定的地址处,并且输出文件可以在由R4指定的地址处开始。如果指令集架构允许使用寄存器范围来代替存储器访问,则一个寄存器的范围作为FPNA的中间输出用于R5。R8可以包括计数器。可以使FPNA运行四个时钟周期以产生输出。在这种情况下,以下伪代码循环可能对整个位图图像集进行迭代并将其输出为整数格式:
LOOP:(循环:)RUN FPNA1_1,4,(R3),25,R5,1(运行FPNA1_1,4,(R3),25,R5,1)
SUB R8,R8,#1(减法R8,R8,#1)
RUN FPGA1_1,2,R5,1,(R4),4(运行FPGA1_1,2,R5,1,(R4),4)
ADD R4,R4,#4(加法R4,R4,#4)
BNEQ R8,LOOP(BNEQ R8,循环)
可编程结构可以与CPU 1802的执行并行地运行,因此当循环等待对FPNA或FPGA的任何执行时,附加计算可以并行地完成。
注意,在以上的循环中,可以在CPU的给定部分(例如,ALU、执行单元等)中执行除了RUN指令之外的指令。进而,RUN指令使例如CPU的调度和/或发布逻辑激活到结构接口控制器的控制信号。此结构接口控制器进而发起对指定结构的某种操作。然而,应理解的是,循环的包括RUN指令在内的所有指令最初是从同一程序数据读取的并且通过CPU的生成适当的控制信号的解码阶段进行解码以供进行指令执行。为此,编译器或乱序执行单元可以使SUB(减法)指令在RUN FPGA1(运行FPGA1)指令之后执行,以避免不必要的停顿。
尽管已经使用本图像处理示例展示了可以如何将任务从CPU 1804卸载到可编程结构,但是可以将可以为其高效地进行可编程结构的配置的任何适当的任务从CPU 1804卸载到可编程结构。例如,这些任务可以包括:数学函数,诸如平方根、指数函数、幂函数、非线性函数、三角函数、矩阵运算、伪随机数生成、线性编程、加密/解密、文件压缩或解压缩、数字信号处理、FIR滤波、IIR滤波、有限状态机、马尔可夫链、程序控制逻辑、模拟、误差校正/检测、图像处理、路由算法、蒙特卡洛模拟、天气模型、混沌系统、生物特征分析、手写识别、面部识别、指纹识别、语音处理、语音到文本转换、计算机视觉试探、内容可寻址搜索优化、散列函数和神经网络模型。
图24是根据本公开的实施例的一种用于管理可编程结构和高速缓存的方法2400的流程图。方法2400可以由任何适当的标准来发起。此外,尽管方法2400描述了特定元件的操作,但是方法2400可以由任何适当组合或类型的元件来执行。例如,方法2400可以由在图1至图23中所展示的元件或可操作用于实施方法2400的任何其他系统来实施。如此,方法2400的优选初始化点以及包括方法2400的元件的顺序可取决于所选的实施方式。在一些实施例中,可以可选地省略、重组、重复或组合一些元件。此外,可以在方法2400自身内并行地执行所述方法的一部分。
在2405处,在一个实施例中,可以加载有待执行的应用。SoC可以将指令中的一部分或全部从存储器加载到高速缓存中。基于由如FGPA等结构区进行的预期执行,可以预加载FPGA的配置文件。这些配置文件可以被预加载到cCache中。当对配置文件进行请求时,高速缓存一致性可以是关于这种cCache的内容的地址。
在2410处,在一个实施例中,可以确定可以使用SoC上的结构区完全或部分地执行给定指令。结构区可以包括例如FPGA区。在2415处,基于将在结构区上执行指令的判定,可以确定用于执行的适当结构区。可以选择适当的结构层,其中,可以在较高层结构处实施较复杂的计算块,或者可以在较低层的结构处实施较简单的计算块。此外,需要到SoC的主机处理器的更大吞吐量或带宽的计算块可被选择用于在更靠近处理器的较低层结构上执行。
在2420处,在一个实施例中,可以识别所述指令将被执行所在的特定结构区。可以为所述区确定适当的结构配置。在一个实施例中,在2425处,可以将与计算块相对应的配置加载到所述区中。在这样做时,可以执行高速缓存一致性,其中,可以访问更高层级的高速缓存或存储器以获得配置。所述配置可以被存储在结构区本地的cCache中。可以建立从结构区到存储器、寄存器或数据高速缓存系统的存储器路径。可以建立去往和来自结构区的输入参数和输出参数。
在2430处,可以执行结构区。在2435处,在一个实施例中,如果对结构区作出改变,则可以保存所述改变。在另一实施例中,如果对结构区作出改变,则所述改变可以被清除并恢复原始配置。
在2440处,可以判定是否将再次执行结构区。若是,则方法2400可以在2430处重复。否则,方法2400可以前进到2445。在2445处,可以判定是否不久将再次需要结构区。若否,在2450处,在一个实施例中,结构区可以被转储清除并且被断电。否则,方法2400可以前进到2455。
在2455处,可以判定在应用中是否存在有待执行的附加指令。若是,则方法2400可以在2410处重复。否则,在2460处,方法2400可以可选地重复或终止。
如以上所描述的,可以提供基于结构的指令以利用在处理器中可用的可编程结构。更具体地,可以在例如如由编程器编码的和/或由编译器插入的程序中提供这种指令,以流动通过诸如给定核等通用处理器的流水线。在流水线处理期间,例如,在发布或调度阶段,针对可编程结构的这些指令(为了便于讨论本文中被称为“结构指令”)可被转移或以其他方式引导至分层可编程结构,以便如本文所描述的那样在可编程结构上实现控制和执行。
因此,在较高层级处,如本文中所描述的结构指令连同应用的普通指令前进通过处理器,至少到达这种指令被解码、分配并且引导以用于进行调度的点。然后,可能发生不同操作。更具体地,这些指令可以被递送到包括FIC和CMC的可编程结构的控制逻辑,以使这些单元执行包括配置和控制操作的各种操作,从而控制在给定的一个或多个可编程结构单元中的特定执行功能的执行。为此,在可编程结构中的这种逻辑或电路系统可以包括硬件电路系统、软件、和/或固件的组合,包括被配置用于接收并处理这种结构指令的状态机。
现在参照图25,所示是根据本发明的实施例的方法的流程图。更具体地,图25的方法2500可以由硬件电路系统、软件、和/或固件的组合、包括CPU的调度逻辑来执行。如所见的,方法2500开始于接收调度器中的指令块(框2510)。这种指令可以包括给定应用的各种指令,包括诸如传统的x86指令或给定ISA的其他传统指令等用于在通用电路系统上执行的指令、以及用于在可编程结构内执行配置和控制操作的基于结构的指令。
在菱形2520处,判定是否在所接收的指令块内存在可以与应用的指令调度窗口相对应的任何可编程结构指令。在实施例中,可以提供诸如结构指示符(例如,位)等指示符,所述指示符如果被设置为指示相应指令是结构指令。如果不存在这种指令,则各种CPU指令可以被调度并被发送至CPU的一个或多个不同的执行单元(框2530)。
否则,如果确定在所述块中存在可编程结构指令,则控制转到框2540,在所述框中可以关于CPU指令来确定这些指令的排序。也就是说,可以考虑依赖性。例如,假定给定的CPU指令用于对可编程结构中执行的计算结果执行算术运算。为了使能够正确执行,首先执行此可编程函数计算,以使得可以将期望的结果(对应于来自可编程结构的输出数据)作为适当的输入数据来提供,以便与依赖的CPU指令结合使用。
仍参照图25,在框2550处,可编程结构指令可以被发送至可编程结构以供处理。更具体地,在实施例中,这样的一条或多条指令可以被转移或引导至可编程结构的FIC。此后,控制转到框2560,在所述框中,独立CPU指令可以被调度以供执行。也就是说,在调度窗口内可能存在有待在CPU内执行的、不依赖于可编程结构中执行的任何计算结果的附加指令。如此,可以在CPU的给定执行单元上调度并执行这些指令,而不需要等待可编程结构计算的任何结果。
仍然参照图25,接下来判定是否从可编程结构接收到结果(菱形2570)。在一些实施例中,可编程结构计算的结果可以被直接发送至给定CPU的寄存器堆。在其他情况下,可以将结果提供给存储器层级结构,其中,完成信号或其他信号从可编程结构发送到CPU调度逻辑(和/或引退单元),以指示完成所请求的计算。如果未接收到这种结果,控制可以循环回到框2560。否则,当接收到这种结果时,控制转到框2580,在所述框中,可以调度一个或多个依赖的CPU指令以在CPU处执行。因此,假定给定CPU指令用于对从可编程结构计算中获得的结果数据执行操作,则将发生正确的执行。应当理解,尽管在图25的实施例中以这种较高层次示出,但许多变体和替代方案是可能的。
现在参照图26,所示是根据本发明的另一个实施例的方法的流程图。图26示出了用于如在本文中所描述的那样控制可编程结构中的执行的实施例。在实施例中,方法2600可以至少部分地由这种可编程结构的结构接口控制器来执行。当然,在其他情况下,方法2600可以由硬件电路系统、软件和/或固件的其他组合来执行。方法2600开始于接收第一可编程结构控制指令的控制信息(框2610)。为了讨论的目的,假定此可编程结构控制指令是先前在CPU流水线中接收并解码的运行指令。可以向结构接口控制器提供如由这种解码逻辑解码的指令的各个字段。
响应于此指令,结构接口控制器可以发起在第一可编程结构单元上的执行(框2620)。更具体地,此第一可编程结构单元可以由所述指令的可编程结构指示符来指示。应理解的是,执行发起可以包括向给定可编程结构单元提供来自结构接口控制器和/或高速缓存控制器的各种控制信号。这种控制信号使所述单元开始对由指令标识的输入数据执行一个或多个操作,以便生成可以被提供至如由指令指示的给定目的地的输出数据。在实施例中,可以经由通过如本文中所描述的可配置存储器控制器配置的互连来发送此输出数据。
如进一步展示的,控制接下来转到框2630,在所述框中,可以接收用于第二可编程结构控制指令的控制信息。注意的是,此指令取决于所述第一可编程结构指令。作为示例,假定此第二可编程结构控制指令是例如被引导至与第一可编程结构控制指令的可编程结构单元不同的可编程结构单元的另一运行指令。进一步假定所述指令用于对包括响应于第一可编程结构指令而生成的结果数据的数据执行操作。如此,存在指令依赖性。
由于这种指令依赖性,在菱形2640处,可以判定是否完成第一可编程结构控制指令的执行。注意的是,可以以各种方式实施这种判定。作为示例,第一可编程结构单元可以向结构接口控制器提供完成信号以指示其执行已经完成。或者,与输出数据的目的地位置(并且其可以同样是第二可编程结构控制指令的输入数据的源位置)相关联的有效指示符可以被设置为指示其中的信息是有效的。
假定确定完成了第一可编程结构控制指令的执行,则控制转到框2650。在框2650处,结构接口控制器可以在这个第二可编程单元上发起执行,以执行对第二可编程结构控制指令的操作。应当理解,尽管在图26的实施例中以这种较高层次示出,但许多变体和替代方案是可能的。
下面的示例涉及进一步实施例。
在一个示例中,一种处理器包括:第一核,用于执行指令,所述第一核形成于第一管芯上;以及可编程结构,具有包括形成于所述第一管芯上的第一可编程结构层以及形成于所述第一管芯上的第二可编程结构层的层级结构布置。所述可编程结构可以包括用于以下操作的结构接口控制器:从所述第一核接收第一可编程结构控制指令;并且响应于所述第一可编程结构控制指令而使所述第一可编程结构层的第一可编程结构单元对第一输入数据执行操作。
在示例中,所述第一核包括:解码逻辑,用于对包括ISA指令的所述第一可编程结构控制指令进行解码;以及发布逻辑,用于将经解码的第一可编程结构控制指令引导至所述结构接口控制器。
在示例中,所述第一核进一步包括:调度逻辑,用于在将对所述第一输入数据执行所述操作的结果存储在目的地存储设备中之后调度取决于所述第一可编程结构控制指令的第二指令以在所述第一核的第一执行逻辑上执行。
在示例中,所述调度逻辑用于至少调度按照程序顺序在所述第二指令之后的第三指令,以在所述第二指令之前在所述第一执行逻辑上执行。
在示例中,所述第一可编程结构控制指令包括:第一字段,用于标识所述第一可编程结构单元;第二字段,用于标识所述第一可编程结构单元要执行的周期数量;第三字段,用于指示所述第一输入数据的尺寸;以及第四字段,用于指示会由所述第一可编程结构单元输出的第一输出数据的尺寸。
在示例中,所述结构接口控制器用于发布控制信号,所述控制信号用于使所述第一可编程结构单元响应于所述第一可编程结构控制指令而执行所述操作。
在示例中,所述第一可编程结构控制指令进一步包括:目的地字段,用于指示所述第一输出数据的目的地存储设备。
在示例中,所述可编程结构包括一个或多个现场可编程门阵列以及一个或多个现场可编程神经阵列。
注意,可以使用各种手段来实施以上处理器。
在示例中,所述处理器包括结合在用户设备触控式装置中的SoC。
在另一示例中,一种系统包括显示器和存储器,并且包括以上示例的一个或多个中的所述处理器。
在另一示例中,一种方法包括:在处理器的可编程结构的结构接口控制器中从所述处理器的第一核的流水线接收第一可编程结构指令,所述处理器包括至少一个核以及所述可编程结构,所述可编程结构包括多个可编程结构层,所述第一可编程结构指令包括结构预加载指令;确定所述多个层中的第一层的用于与所述第一可编程结构指令相关联的第一结构单元;以及响应于确定所述第一结构单元而使所述第一结构单元的配置存储在所述多个层中的所述第一层的第一配置高速缓存中。
在示例中,所述方法进一步包括:在所述结构接口控制器中接收第二可编程结构指令,所述第二可编程结构指令包括结构加载指令;以及响应于所述第二结构指令而将所述配置从所述第一配置高速缓存加载到所述第一结构单元。
在示例中,所述方法进一步包括:在所述结构接口控制器中接收第三可编程结构指令,所述第三可编程结构指令包括结构保存指令;以及响应于所述第三可编程结构指令而在将所述配置从所述第一配置高速缓存加载到所述第一结构单元之前将所述第一结构单元的当前配置保存到所述第一配置高速缓存。
在示例中,所述方法进一步包括:接收第四可编程结构指令,所述第四可编程结构指令包括结构恢复指令;以及响应于所述第四可编程结构指令而恢复所述第一结构单元的第一配置,其中,对所述第一结构单元的先前执行引起对所述第一结构单元的所述配置的一个或多个改变。
在示例中,所述方法进一步包括:接收第五可编程结构指令,所述第五可编程结构指令包括结构转储清除指令;响应于第五可编程结构指令而移除所述第一结构单元的当前配置;以及此后解除对所述第一结构单元的供电。
在示例中,所述方法进一步包括:在所述第一核的解码逻辑中对所述第一可编程结构指令进行解码;以及经由所述第一核的发布逻辑来将经解码的第一可编程结构指令引导至所述结构接口控制器。
在示例中,所述方法进一步包括:在所述结构接口控制器中接收第一可编程结构控制指令;以及响应于所述第一可编程结构控制指令而使所述第一结构单元对第一输入数据执行操作以生成第一结果数据。
在示例中,所述方法进一步包括:在所述结构接口控制器中接收第二可编程结构控制指令;以及响应于所述第二可编程结构控制指令、以及所述第一结果数据的可用性而使所述可编程结构的第二结构单元对所述第一结果数据执行操作。
在另一示例中,一种包括指令的计算机可读介质用于执行以上示例中任一项所述的方法。
在另一个示例中,一种包括数据的计算机可读介质用于由至少一台机器用来制造用于执行以上示例中任一项所述的方法的至少一个集成电路。
在另一个示例中,一种设备包括用于执行以上示例中任一项所述的方法的装置。
在另一示例中,一种系统包括:处理器,所述处理器具有多个核、多个高速缓存存储器、以及可编程结构,所述可编程结构具有包括多个可编程结构层的层级结构布置。所述可编程结构可以包括用于以下操作的结构接口控制器:从所述多个核中的第一核接收第一可编程结构控制指令,所述第一可编程结构控制指令具有:第一字段,用于标识所述可编程结构的第一可编程结构单元;第二字段,用于标识所述第一可编程结构单元要执行的周期数量;第三字段,用于指示用于执行的第一数据的尺寸;以及第四字段,用于指示会由所述第一可编程结构单元输出的第一输出数据的尺寸;以及响应于所述第一可编程结构控制指令而使所述第一可编程结构单元对所述第一输入数据进行操作。所述系统可以进一步包括耦合至所述处理器的系统存储器。
在示例中,所述结构接口控制器用于:接收结构预加载指令;以及响应于所述结构预加载指令而使所述第一可编程结构单元的配置存储在与所述第一可编程结构单元相关联的第一配置高速缓存中。
在示例中,所述结构接口控制器用于:接收结构加载指令;以及响应于所述结构加载指令而使所述第一可编程结构单元的所述配置从所述第一配置高速缓存加载到所述第一可编程结构单元。
在示例中,所述结构接口控制器用于:接收第二可编程结构控制指令;以及响应于所述第二可编程结构控制指令、以及所述第一输出数据的可用性而使所述可编程结构的第二结构单元对所述第一输出数据执行操作。
在另一示例中,一种设备包括:用于在处理器的可编程结构的结构接口控制器中从所述处理器的第一核的流水线接收第一可编程结构指令的装置,所述处理器包括至少一个核以及所述可编程结构,所述可编程结构包括多个可编程结构层,所述第一可编程结构指令包括结构预加载指令;用于确定所述多个层中的第一层的用于与所述第一可编程结构指令相关联的第一结构单元的装置;以及用于使所述第一结构单元的配置存储在所述多个层中的所述第一层的第一配置高速缓存中的装置。
在示例中,所述设备进一步包括:用于在所述结构接口控制器中接收第二可编程结构指令的装置,所述第二可编程结构指令包括结构加载指令;以及用于将所述第一配置从所述第一配置高速缓存加载到所述第一结构单元的装置。
在示例中,所述设备进一步包括:用于在所述结构接口控制器中接收第三可编程结构指令的装置,所述第三可编程结构指令包括结构保存指令;以及用于在将所述配置从所述第一配置高速缓存加载到所述第一结构单元之前将所述第一结构单元的当前配置保存到所述第一配置高速缓存的装置。
在示例中,所述设备进一步包括:用于接收第四可编程结构指令的装置,所述第四可编程结构指令包括结构恢复指令;以及用于恢复所述第一结构单元的第一配置的装置,其中,对所述第一结构单元的先前执行引起对所述第一结构单元的所述配置的一个或多个改变。
应理解,上述示例的各种组合是可能的。
实施例可以被用于许多不同类型的系统中。例如,在一个实施例中,可以将通信设备布置为用于执行本文所述的各种方法与技术。当然,本发明的范围不限于通信设备,相反,其他实施例可以涉及用于处理指令的其他类型的装置,或一个或多个机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备执行本文所述的方法与技术中的一个或多个。
实施例可以实现在代码中,并且可以存储在非暂态存储介质上,该非暂态存储介质具有存储于其上的指令,该指令可以被用来对系统编程以执行指令。各实施例还可以在数据中实现,并且可以存储在非暂态存储介质上,该非暂态存储介质如果被至少一个机器使用,使得该至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可实现在计算机可读存储介质中,该计算机可读存储介质包括信息,该信息当被制造到SoC或其他处理器中时,用于配置该SoC或其他处理器以执行一个或多个操作。存储介质可以包括但不限于,任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)与静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。

Claims (19)

1.一种用于控制可编程结构的处理器,包括:
第一核,用于执行指令,所述第一核形成于第一管芯上;以及
可编程结构,具有包括形成于所述第一管芯上的第一可编程结构层以及形成于所述第一管芯上的第二可编程结构层的层级结构布置,所述第一可编程结构层包括第一结构接口控制器、第一配置高速缓存和多个第一可编程结构阵列,所述第二可编程结构层包括第二结构接口控制器、第二配置高速缓存和多个第二可编程结构阵列,所述可编程结构包括用于以下操作的所述第一结构接口控制器:
从所述第一核接收包括运行指令的第一可编程结构控制指令;以及
响应于所述第一可编程结构控制指令而使所述第一可编程结构层的第一可编程结构单元对第一输入数据执行操作,其中,所述第一可编程结构控制指令包括:
第一字段,用于标识所述第一可编程结构单元;
第二字段,用于标识所述第一可编程结构单元要执行的周期数量;
第三字段,用于指示所述第一输入数据的尺寸;以及
第四字段,用于指示会由所述第一可编程结构单元输出的第一输出数据的尺寸。
2.如权利要求1所述的处理器,其特征在于,所述第一核包括:
解码逻辑,用于对包括指令集架构(ISA)指令的所述第一可编程结构控制指令进行解码;以及
发布逻辑,用于将经解码的第一可编程结构控制指令引导至所述第一结构接口控制器。
3.如权利要求2所述的处理器,其特征在于,所述第一核进一步包括:调度逻辑,用于在将对所述第一输入数据执行所述操作的结果存储在目的地存储设备中之后调度取决于所述第一可编程结构控制指令的第二指令以在所述第一核的第一执行逻辑上执行。
4.如权利要求3所述的处理器,其特征在于,所述调度逻辑用于至少调度按照程序顺序在所述第二指令之后的第三指令,以在所述第二指令之前在所述第一执行逻辑上执行。
5.如权利要求1所述的处理器,其特征在于,所述结构接口控制器用于发布控制信号,所述控制信号用于使所述第一可编程结构单元响应于所述第一可编程结构控制指令而执行所述操作。
6.如权利要求1所述的处理器,其特征在于,所述第一可编程结构控制指令进一步包括:目的地字段,用于指示所述第一输出数据的目的地存储设备。
7.如权利要求1所述的处理器,其特征在于,所述可编程结构包括一个或多个现场可编程门阵列以及一个或多个现场可编程神经阵列。
8.一种用于控制可编程结构的方法,包括:
在处理器的可编程结构的结构接口控制器中从所述处理器的第一核的流水线接收第一可编程结构指令,所述处理器包括至少一个核以及所述可编程结构,所述可编程结构包括多个可编程结构层,所述第一可编程结构指令包括结构预加载指令;
确定所述多个可编程结构 层中的第一层的用于与所述第一可编程结构指令相关联的第一结构单元;
响应于确定所述第一结构单元,使所述第一结构单元的配置响应于所述结构预加载指令而存储在所述多个可编程结构 层中的所述第一层的第一配置高速缓存中;
在所述结构接口控制器中接收第二可编程结构指令,所述第二可编程结构指令包括结构加载指令;
响应于所述第二可编程结构指令而将所述配置从所述第一配置高速缓存加载到所述第一结构单元;
在所述结构接口控制器中接收第三可编程结构指令,所述第三可编程结构指令包括结构保存指令;
响应于所述第三可编程结构指令而在将所述配置从所述第一配置高速缓存加载到所述第一结构单元之前将所述第一结构单元的当前配置保存到所述第一配置高速缓存;
接收第四可编程结构指令,所述第四可编程结构指令包括结构转储清除指令;
响应于第四可编程结构指令而从所述第一结构单元移除所述第一结构单元的当前配置而不是保存所述当前配置;以及
此后解除对所述第一结构单元的供电。
9.如权利要求8所述的方法,其特征在于,进一步包括:
接收第五可编程结构指令,所述第五可编程结构指令包括结构恢复指令;以及
响应于所述第五可编程结构指令而恢复所述第一结构单元的第一配置,其中,对所述第一结构单元的先前执行引起对所述第一结构单元的所述配置的一个或多个改变。
10.如权利要求8所述的方法,其特征在于,进一步包括:在所述第一核的解码逻辑中对所述第一可编程结构指令进行解码;以及经由所述第一核的发布逻辑来将经解码的第一可编程结构指令引导至所述结构接口控制器。
11.如权利要求8所述的方法,其特征在于,进一步包括:
在所述结构接口控制器中接收第六可编程结构控制指令;以及
响应于所述第六可编程结构控制指令而使所述第一结构单元对第一输入数据执行操作以生成第一结果数据。
12.如权利要求11所述的方法,其特征在于,进一步包括:
在所述结构接口控制器中接收第七可编程结构控制指令;以及
响应于所述第七可编程结构控制指令、以及所述第一结果数据的可用性而使所述可编程结构的第二结构单元对所述第一结果数据执行操作。
13.一种计算机可读存储介质,包括计算机可读指令,所述指令当被执行时用于实施如权利要求8至12中任一项所述的方法。
14.一种用于控制可编程结构的系统,包括:
处理器,具有多个核、多个高速缓存存储器、以及可编程结构,所述可编程结构具有包括含第一层和第二层的多个可编程结构层的层级结构布置,所述第一层具有第一结构接口控制器、第一配置高速缓存和包括第一可编程结构单元的多个第一可编程结构阵列,所述第二层包括第二结构接口控制器、第二配置高速缓存和包括第二可编程结构单元的多个第二可编程结构阵列,所述可编程结构进一步包括用于以下操作的结构接口控制器:
从所述多个核中的第一核接收第一可编程结构控制指令,所述第一可编程结构控制指令具有:第一字段,用于标识所述第一可编程结构单元;第二字段,用于标识所述第一可编程结构单元要执行的周期数量;第三字段,用于指示用于执行的第一输入数据的尺寸;以及第四字段,用于指示会由所述第一可编程结构单元输出的第一输出数据的尺寸;以及
响应于所述第一可编程结构控制指令而使所述第一可编程结构单元对所述第一输入数据进行操作;以及
系统存储器,耦合至所述处理器。
15.如权利要求14所述的系统,其特征在于,所述结构接口控制器用于:
接收结构预加载指令;以及
响应于所述结构预加载指令而使所述第一可编程结构单元的配置存储在所述第一配置高速缓存中。
16.如权利要求15所述的系统,其特征在于,所述结构接口控制器用于:
接收结构加载指令;以及
响应于所述结构加载指令而使所述第一可编程结构单元的所述配置从所述第一配置高速缓存加载到所述第一可编程结构单元。
17.如权利要求14所述的系统,其特征在于,所述结构接口控制器用于:
接收第二可编程结构控制指令;以及
响应于所述第二可编程结构控制指令、以及所述第一输出数据的可用性而使所述第二可编程结构单元对所述第一输出数据执行操作。
18.一种用于控制可编程结构的设备,包括:
用于在处理器的可编程结构的结构接口控制器中从所述处理器的第一核的流水线接收第一可编程结构指令的装置,所述处理器包括至少一个核以及所述可编程结构,所述可编程结构包括多个可编程结构层,所述第一可编程结构指令包括结构预加载指令;
用于确定所述多个可编程结构 层中的第一层的用于与所述第一可编程结构指令相关联的第一结构单元的装置;
用于响应于所述结构预加载指令而使所述第一结构单元的配置存储在所述多个可编程结构 层中的所述第一层的第一配置高速缓存中的装置;
用于在所述结构接口控制器中接收第二可编程结构指令的装置,所述第二可编程结构指令包括结构加载指令;
用于将所述配置从所述第一配置高速缓存加载到所述第一结构单元的装置;
用于在所述结构接口控制器中接收第三可编程结构指令的装置,所述第三可编程结构指令包括结构保存指令;
用于在将所述配置从所述第一配置高速缓存加载到所述第一结构单元之前将所述第一结构单元的当前配置保存到所述第一配置高速缓存的装置;
用于在所述结构接口控制器中接收第四可编程结构指令的装置,所述第四可编程结构指令包括结构转储清除指令;
用于从所述第一结构单元移除所述第一结构单元的当前配置而不是保存所述当前配置的装置;以及
用于在此后解除对所述第一结构单元的供电的装置。
19.如权利要求18所述的设备,其特征在于,进一步包括:
用于接收第五可编程结构指令的装置,所述第五可编程结构指令包括结构恢复指令;以及
用于恢复所述第一结构单元的第一配置的装置,其中,对所述第一结构单元的先前执行引起对所述第一结构单元的所述配置的一个或多个改变。
CN201680064141.7A 2015-11-30 2016-09-27 用于可编程结构层级结构和高速缓存的指令和逻辑 Active CN108351863B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/953,529 US20170153892A1 (en) 2015-11-30 2015-11-30 Instruction And Logic For Programmable Fabric Hierarchy And Cache
US14/953,529 2015-11-30
PCT/US2016/053958 WO2017095511A1 (en) 2015-11-30 2016-09-27 Instruction and logic for programmable fabric hierarchy and cache

Publications (2)

Publication Number Publication Date
CN108351863A CN108351863A (zh) 2018-07-31
CN108351863B true CN108351863B (zh) 2022-12-13

Family

ID=58777923

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680064141.7A Active CN108351863B (zh) 2015-11-30 2016-09-27 用于可编程结构层级结构和高速缓存的指令和逻辑

Country Status (5)

Country Link
US (1) US20170153892A1 (zh)
EP (1) EP3384400B1 (zh)
CN (1) CN108351863B (zh)
TW (1) TW201723814A (zh)
WO (1) WO2017095511A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US11226840B2 (en) 2015-10-08 2022-01-18 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US11216720B2 (en) 2015-10-08 2022-01-04 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that manages power consumption based on memory accesses per period
US10664751B2 (en) 2016-12-01 2020-05-26 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either cache memory or neural network unit memory
US10353860B2 (en) 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
US10725934B2 (en) 2015-10-08 2020-07-28 Shanghai Zhaoxin Semiconductor Co., Ltd. Processor with selective data storage (of accelerator) operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache wherein evicted cache line is stored in said data storage when said data storage is in a first mode and said cache line is stored in system memory rather then said data store when said data storage is in a second mode
US11029949B2 (en) 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
US11221872B2 (en) 2015-10-08 2022-01-11 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US10389839B2 (en) * 2016-06-01 2019-08-20 Intel Corporation Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node
US10573598B2 (en) * 2017-09-28 2020-02-25 Xilinx, Inc. Integration of a programmable device and a processing system in an integrated circuit package
CN108874702B (zh) * 2018-06-15 2020-11-17 中国电子科技集团公司第五十二研究所 基于axi总线的多路对称加解密ip核并行处理装置和方法
CN108777155A (zh) * 2018-08-02 2018-11-09 北京知存科技有限公司 闪存芯片
CN110287384B (zh) * 2019-06-10 2021-08-31 北京百度网讯科技有限公司 智能服务方法、装置及设备
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US11650742B2 (en) 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US11269780B2 (en) * 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
KR20210080009A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스
US11387863B1 (en) * 2021-04-05 2022-07-12 Rockwell Collins, Inc. Cognitively adaptable front-end with FPNA enabled integrated network executive
CN114785660B (zh) * 2022-03-15 2023-08-29 桂林电子科技大学 一种NoC高速数据采集拓扑结构及其同步方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102289424A (zh) * 2011-08-09 2011-12-21 清华大学 一种动态可重构阵列处理器的构令流工作方法
EP2469377A2 (en) * 2010-12-22 2012-06-27 VIA Technologies, Inc. Decentralized power management distributed among multiple processor cores
CN104375972A (zh) * 2013-08-16 2015-02-25 亚德诺半导体集团 用于可配置数学硬件加速器的微处理器集成配置控制器
CN105793819A (zh) * 2013-12-23 2016-07-20 英特尔公司 包括混合处理器核的片上系统(soc)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737631A (en) * 1995-04-05 1998-04-07 Xilinx Inc Reprogrammable instruction set accelerator
US6732263B1 (en) * 2000-06-12 2004-05-04 Altera Corporation Configuring both a programmable logic device and its embedded logic with a single serialized configuration bit stream
US7299339B2 (en) * 2004-08-30 2007-11-20 The Boeing Company Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework
US7647475B2 (en) * 2006-09-06 2010-01-12 Mips Technologies, Inc. System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
GB2471067B (en) * 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US8972707B2 (en) * 2010-12-22 2015-03-03 Via Technologies, Inc. Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin
US9153508B2 (en) * 2011-08-17 2015-10-06 Rambus Inc. Multi-chip package and interposer with signal line compression
CN103748837B (zh) * 2011-08-22 2017-08-15 英特尔公司 使用可动态选择的冗余共享链路物理路径在基于开放核心协议的互连网络中改善数据吞吐量的方法
US8643168B1 (en) * 2012-10-16 2014-02-04 Lattice Semiconductor Corporation Integrated circuit package with input capacitance compensation
US9065722B2 (en) * 2012-12-23 2015-06-23 Advanced Micro Devices, Inc. Die-stacked device with partitioned multi-hop network
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US9698790B2 (en) * 2015-06-26 2017-07-04 Advanced Micro Devices, Inc. Computer architecture using rapidly reconfigurable circuits and high-bandwidth memory interfaces

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2469377A2 (en) * 2010-12-22 2012-06-27 VIA Technologies, Inc. Decentralized power management distributed among multiple processor cores
CN102289424A (zh) * 2011-08-09 2011-12-21 清华大学 一种动态可重构阵列处理器的构令流工作方法
CN104375972A (zh) * 2013-08-16 2015-02-25 亚德诺半导体集团 用于可配置数学硬件加速器的微处理器集成配置控制器
CN105793819A (zh) * 2013-12-23 2016-07-20 英特尔公司 包括混合处理器核的片上系统(soc)

Also Published As

Publication number Publication date
US20170153892A1 (en) 2017-06-01
EP3384400A4 (en) 2019-08-21
EP3384400B1 (en) 2021-07-14
WO2017095511A1 (en) 2017-06-08
CN108351863A (zh) 2018-07-31
TW201723814A (zh) 2017-07-01
EP3384400A1 (en) 2018-10-10

Similar Documents

Publication Publication Date Title
CN108351863B (zh) 用于可编程结构层级结构和高速缓存的指令和逻辑
US10310868B2 (en) Instruction and logic for programmable fabric heirarchy and cache
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN108292229B (zh) 用于重新出现的相邻聚集的指令和逻辑
US9870209B2 (en) Instruction and logic for reducing data cache evictions in an out-of-order processor
CN107003921B (zh) 具有有限状态机控制的可重配置测试访问端口
CN108351835B (zh) 用于高速缓存控制操作的指令和逻辑
CN108369516B (zh) 用于加载-索引和预取-分散操作的指令和逻辑
CN108351784B (zh) 用于在乱序处理器中进行有序处理的指令和逻辑
US10346170B2 (en) Performing partial register write operations in a processor
US20160179549A1 (en) Instruction and Logic for Loop Stream Detection
CN107077421B (zh) 用于页表游走改变位的指令和逻辑
CN108701101B (zh) 处理器系统管理中断事件的基于仲裁器的串行化
CN108292271B (zh) 用于向量置换的指令和逻辑
US20170168819A1 (en) Instruction and logic for partial reduction operations
US10705845B2 (en) Instructions and logic for vector bit field compression and expansion
US9851976B2 (en) Instruction and logic for a matrix scheduler
KR20160113677A (ko) 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법
US10133582B2 (en) Instruction and logic for identifying instructions for retirement in a multi-strand out-of-order processor
US10268255B2 (en) Management of system current constraints with current limits for individual engines
US10884735B2 (en) Instruction and logic for predication and implicit destination
US10795681B2 (en) Instruction length decoding
US20160378471A1 (en) Instruction and logic for execution context groups for parallel processing
US10990395B2 (en) System and method for communication using a register management array circuit
CN107408035B (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