CN104204990A - 在使用共享虚拟存储器的处理器中加速操作的装置和方法 - Google Patents

在使用共享虚拟存储器的处理器中加速操作的装置和方法 Download PDF

Info

Publication number
CN104204990A
CN104204990A CN201280072078.3A CN201280072078A CN104204990A CN 104204990 A CN104204990 A CN 104204990A CN 201280072078 A CN201280072078 A CN 201280072078A CN 104204990 A CN104204990 A CN 104204990A
Authority
CN
China
Prior art keywords
tlb
accelerator
processor
core
page
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
Application number
CN201280072078.3A
Other languages
English (en)
Other versions
CN104204990B (zh
Inventor
E·威斯曼
K·K·凡塞纳坦
Y·扎克
B·靳兹伯格
R·罗恩
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
Priority to CN201710022904.8A priority Critical patent/CN106708753B/zh
Publication of CN104204990A publication Critical patent/CN104204990A/zh
Application granted granted Critical
Publication of CN104204990B publication Critical patent/CN104204990B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure

Abstract

描述了用于将前端核耦合到加速器组件(诸如图形加速器)的装置和方法。例如,描述了一种装置,包括:加速器,包括一个或多个执行单元(EU)用于执行特定的指令集;以及前端核,包括通信耦合到加速器的转换后备缓冲器(TLB),并且向加速器提供存储器访问服务,存储器访问服务包括响应于加速器需要访问系统存储器,代表加速器执行TLB查找操作以将虚拟地址映射到物理地址。

Description

在使用共享虚拟存储器的处理器中加速操作的装置和方法
发明领域
本发明的实施例一般涉及计算机系统的领域。更具体地,本发明的实施例涉及在使用共享虚拟存储器的处理器中加速操作的装置和方法。
背景技术
指令集,或指令集架构(ISA)是涉及编程的计算机架构的一部分,并可以包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断、异常处理、以及外部输入和输出(I/O)操作。术语指令在本申请中一般表示宏指令,宏指令是被提供给处理器(或指令转换器,该指令转换器(例如,利用静态二进制转换、包括动态编译的动态二进制转换)转换、变形、仿真或以其他方式将指令转换成将由处理器处理的一个或多个其他指令)以供执行的指令——作为对比,微指令或微操作(“微操作”或“uops”)——是处理器的解码器解码宏指令的结果。
ISA与微架构不同,微架构是实现该指令集的处理器的内部设计。具有不同微架构的处理器可共享共同的指令集。例如,奔腾四(Pentium 4)处理器、酷睿(CoreTM)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices,Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。例如,ISA的相同寄存器架构可以在不同的微架构中使用公知的技术以不同方法来实现,公知的技术包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)、以及引退寄存器组;使用多个寄存器映射和寄存器池)的一个或多个动态分配物理寄存器,等等。除非另行指出,术语寄存器架构、寄存器组和寄存器在本文中用于指代对软件/编程者可见的寄存器以及指令指定寄存器的方式。在需要特殊性的场合,将使用定语逻辑的、架构的或软件可见的来指示寄存器架构中的寄存器/寄存器组,同时不同的定语将用于指示给定微架构中的寄存器(例如物理寄存器、重排序缓冲器、引退寄存器、寄存器池)。
指令集包括一个或多个指令格式。给定指令格式定义多个字段(位的数量、位的位置等)以指定将要被执行的操作(操作码)以及该操作将要执行的操作数等等。通过定义指令模板(或子格式),一些指令格式被进一步分解。例如,可将给定指令格式的指令模板定义成具有该指令格式的字段的不同子集(所包括的字段通常是相同顺序,但至少一些由于包括更少的字段而具有不同的位位置)和/或定义成对给定字段的解释不同。因此,利用给定指令格式(而且如果定义,则按照该指令格式的指令模板中的给定一个模板)来表达ISA的每个指令,并且ISA的每个指令包括用于指定其操作和操作数的字段。例如,示例性的ADD(加法)指令具有特定的操作码和指令格式,该指令格式包括用于指定该操作码的操作码字段和用于选择操作数(源1/目的地和源2)的操作数字段;并且该ADD指令在指令流中的出现将具有在操作数字段中的特定内容,该特定内容选择特定操作数。
科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用以及视觉和多媒体应用(诸如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)通常需要对大量数据项执行相同的操作(被称为“数据并行性”)。单指令多数据(SIMD)指的是使得处理器对多个数据项执行一操作的一种类型的指令。SIMD技术尤其适用于将寄存器中的多个位逻辑地划分成多个固定大小的数据元素的处理器,其中每个数据元素表示单独的值。例如,可将256位寄存器中的位指定为要进行操作的源操作数,作为4个单独的64位打包数据元素(四字(Q)尺寸数据元素)、8个单独的32位打包数据元素(双字(D)尺寸数据元素)、16个单独的16位打包数据元素(字(W)尺寸数据元素)、或32个单独的8位数据元素(字节(B)尺寸数据元素)。该数据类型可被称为打包数据类型或向量数据类型,并且该数据类型的操作数被称为打包数据操作数或向量操作数。换句话说,打包数据项或向量指的是打包数据元素的序列,而打包数据操作数或向量操作数是SIMD指令(或称为打包数据指令或向量指令)的源操作数或目的地操作数。
作为示例,一种类型的SIMD指令指定了将要以纵向方式对两个源向量操作数执行的单个向量操作,用于生成具有相同尺寸的、具有相同数量的数据元素并且按照相同数据元素次序的目的地向量操作数(也被称为结果向量操作数)。源向量操作数中的数据元素被称为源数据元素,而目的地向量操作数中的数据元素被称为目的地或结果数据元素。这些源向量操作数具有相同尺寸并且包含相同宽度的数据元素,因此它们包含相同数量的数据元素。两个源向量操作数中的相同位位置中的源数据元素形成数据元素对(也称为对应的数据元素;即,每个源操作数的数据元素位置0中的数据元素相对应,每个源操作数中的数据元素位置1中的数据元素相对应,以此类推)。对这些源数据元素对中的每一个分别执行该SIMD指令指定的操作,以产生匹配数量的结果数据元素,并且因此每一对源数据元素具有相应的结果数据元素。由于该操作是纵向的,且由于结果向量操作数是相同尺寸、具有相同数量的数据元素并且结果数据元素按照与源向量操作数相同的数据元素顺序被存储,所以结果数据元素处于结果向量操作数中与它们在源向量操作数中的相应源数据元素对相同的位位置中。除了这种示例性类型的SIMD指令之外,存在各种各样其他类型的SIMD指令(例如仅具有一个源向量操作数或具有超过两个源向量操作数、以横向方式操作、产生不同尺寸的结果向量操作数、具有不同尺寸的数据元素和/或具有不同的数据元素次序的SIMD指令)。应当理解,术语目的地向量操作数(或目的地操作数)被定义为执行由指令指定的操作的直接结果,包括将该目的地操作数存储在一位置处(可以是由该指令指定的寄存器或存储器地址处),使得它可作为源操作数由另一指令访问(通过该另一指令指定同一位置)。
诸如具有包括x86、MMXTM、流式SIMD扩展(SSE)、SSE2、SSE3、SSE4.1以及SSE4.2指令的指令集的CoreTM处理器所采用的SIMD技术之类的SIMD技术已经实现了应用性能的重大改进。已经推出和/或发布了被称为高级向量扩展(AVX)(AVX1和AVX2)和利用向量扩展(VEX)编码方案的附加的SIMD扩展集(参见例如2011年10月的64和IA-32架构软件开发者手册;以及参见2011年6月的高级向量扩展编程参考)。
附图简述
以下描述和附图用于示出本发明的实施例。在附图中:
图1A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的框图;
图1B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。
图2是根据本发明的实施例的具有集成的存储器控制器和图形器件的单核处理器和多核处理器的框图。
图3示出根据本发明一个实施例的系统的框图;
图4示出了根据本发明的实施例的第二系统的框图;
图5示出了根据本发明的实施例的第三系统的框图;
图6示出了根据本发明的实施例的片上系统(SoC)的框图;
图7是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
图8示出用于在中央处理单元和图形处理单元共享虚拟存储器的系统处理页错误的当前实现;
图9示出包括加速器组件和前端核的本发明的一个实施例;
图10A-C示出根据本发明的不同实施例的方法;
图11A是根据本发明的实施例的单个处理器核以及它与管芯上互连网络的连接及其二级(L2)高速缓存的本地子集的框图;以及
图11B是根据本发明的实施例的图11A中处理器核的一部分的展开图。
详细描述
示例性处理器架构和数据类型
图1A是示出根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图1B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图1A-B中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄存器重命名的、无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将描述无序方面。
在图1A中,处理器流水线100包括取出级102、长度解码级104、解码级106、分配级108、重命名级110、调度(也称为分派或发布)级112、寄存器读取/存储器读取级114、执行级116、写回/存储器写入级118、异常处理级122和提交级124。
图1B示出了包括耦合到执行引擎单元150的前端单元130的处理器核190,且执行引擎单元和前端单元两者都耦合到存储器单元170。核190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核190可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。
前端单元130包括耦合到指令高速缓存单元134的分支预测单元132,该指令高速缓存单元耦合到指令的地址转换后备缓冲器(TLB)136,该转换后备缓冲器耦合到指令取出单元138,指令取出单元耦合到解码单元140。解码单元140(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元140可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核190包括(例如,在解码单元140中或否则在前端单元130内的)用于存储某些宏指令的微代码的微代码ROM或其他介质。解码单元140耦合至执行引擎单元150中的重命名/分配器单元152。
执行引擎单元150包括重命名/分配器单元152,该重命名/分配器单元152耦合至引退单元154和一个或多个调度器单元156的集合。调度器单元156表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元156耦合到物理寄存器组单元158。每个物理寄存器组单元158表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元158包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元158与引退单元154重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元154和物理寄存器组单元158耦合到执行群集160。执行群集160包括一个或多个执行单元162的集合和一个或多个存储器访问单元164的集合。执行单元162可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元156、物理寄存器组单元158和执行群集160被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整型流水线、标量浮点/打包整型/打包浮点/向量整型/向量浮点流水线,和/或各自具有其自己的调度器单元、物理寄存器组单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元164的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元164的集合耦合到存储器单元170,该存储器单元包括耦合到数据高速缓存单元174的数据的地址TLB单元172,其中数据高速缓存单元耦合到二级(L2)高速缓存单元176。在一个示例性实施例中,存储器访问单元164可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元170中的数据TLB单元172。指令高速缓存单元134还耦合到存储器单元170中的第二级(L2)高速缓存单元176。L2高速缓存单元176耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线100:1)指令取出138执行取出和长度解码级102和104;2)解码单元140执行解码级106;3)重命名/分配器单元152执行分配级108和重命名级110;4)调度器单元156执行调度级112;5)物理寄存器组单元158和存储器单元170执行寄存器读取/存储器读取级114;执行群集160执行执行级116;6)存储器单元170和物理寄存器组单元158执行写回/存储器写入级118;7)各单元可牵涉到异常处理级122;以及8)引退单元154和物理寄存器组单元158执行提交级124。
核190可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核190包括用于支持打包数据指令集扩展(例如,AVX1、AVX2和/或先前描述的一些形式的一般向量友好指令格式(U=0和/或U=1))的逻辑,从而允许很多多媒体应用使用的操作能够使用打包数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元134/174以及共享L2高速缓存单元176,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图2是根据本发明的各实施例可能具有一个以上核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器200的框图。图2中的实线框示出具有单个核202A、系统代理210、一个或多个总线控制器单元216的集合的处理器200,而虚线框的可选附加示出具有多个核202A-N、系统代理单元210中的一个或多个集成存储器控制器单元214的集合以及专用逻辑208的替代处理器200。
因此,处理器200的不同实现可包括:1)CPU,其中专用逻辑208是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核202A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核202A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核202A-N是多个通用有序核。因此,处理器200可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器200可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将处理器200实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元206的集合、以及耦合至集成存储器控制器单元214的集合的外部存储器(未示出)。该共享高速缓存单元206的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元212将集成图形逻辑208、共享高速缓存单元206的集合以及系统代理单元210/集成存储器控制器单元214互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元206和核202A-N之间的一致性(coherency)。
在一些实施例中,核202A-N中的一个或多个核能够多线程化。系统代理210包括协调和操作核202A-N的那些组件。系统代理单元210可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调整核202A-N和集成图形逻辑208的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核202A-N在架构指令集方面可以是同构的或异构的;即,这些核202A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图3-6是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。
现在参考图3,所示出的是根据本发明一个实施例的系统300的框图。系统300可以包括一个或多个处理器310、315,这些处理器耦合到控制器中枢320。在一个实施例中,控制器中枢320包括图形存储器控制器中枢(GMCH)390和输入/输出中枢(IOH)350(其可以在分开的芯片上);GMCH 390包括存储器和图形控制器,存储器340和协处理器345耦合到该存储器和图形控制器;IOH 350将输入/输出(I/O)设备360耦合到GMCH390。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文中所描述的),存储器340和协处理器345直接耦合到处理器310以及控制器中枢320,控制器中枢320与IOH 350处于单个芯片中。
附加处理器315的任选性质用虚线表示在图3中。每一处理器310、315可包括本文中描述的处理核中的一个或多个,并且可以是处理器200的某一版本。
存储器340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢320经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接395与处理器310、315进行通信。
在一个实施例中,协处理器345是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢320可以包括集成图形加速器。
在物理资源310、1315之间可以存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。
在一个实施例中,处理器310执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器310将这些协处理器指令识别为应当由附连的协处理器345执行的类型。因此,处理器310在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器345。协处理器345接受并执行所接收的协处理器指令。
现在参考图4,所示为根据本发明的一实施例的更具体的第一示例性系统400的框图。如图4所示,多处理器系统400是点对点互连系统,并包括经由点对点互连450耦合的第一处理器470和第二处理器480。处理器470和480中的每一个都可以是处理器200的某一版本。在本发明的一个实施例中,处理器470和480分别是处理器310和315,而协处理器438是协处理器345。在另一实施例中,处理器470和480分别是处理器310和协处理器345。
处理器470和480被示为分别包括集成存储器控制器(IMC)单元472和482。处理器470还包括作为其总线控制器单元的一部分的点对点(P-P)接口476和478;类似地,第二处理器480包括点对点接口486和488。处理器470、480可以使用点对点(P-P)电路478、488经由P-P接口450来交换信息。如图4所示,IMC 472和482将各处理器耦合至相应的存储器,即存储器432和存储器434,这些存储器可以是本地附连至相应的处理器的主存储器的部分。
处理器470、480可各自经由使用点对点接口电路476、494、486、498的各个P-P接口452、454与芯片组490交换信息。芯片组490可以可选地经由高性能接口439与协处理器438交换信息。在一个实施例中,协处理器438是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存491可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组490可经由接口496耦合至第一总线416。在一个实施例中,第一总线416可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图4所示,各种I/O设备414可以连同总线桥418耦合到第一总线416,总线桥将第一总线416耦合至第二总线420。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理器(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器415耦合到第一总线416。在一个实施例中,第二总线420可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线420,在一个实施例中这些设备包括例如键盘/鼠标422、通信设备427以及诸如可包括指令/代码和数据430的盘驱动器或其它大容量存储设备的存储单元428。此外,音频I/O 424可以被耦合至第二总线420。注意,其它架构是可能的。例如,代替图4的点对点架构,系统可以实现多分支总线或其它这类架构。
现在参考图5,所示为根据本发明的实施例的更具体的第二示例性系统500的框图。图4和图5中的相同部件用相同附图标记表示,并从图5中省去了图4中的某些方面,以避免使图5的其它方面变得模糊。
图5示出处理器470、480可分别包括集成存储器和I/O控制逻辑(“CL”)472和482。因此,CL 472、482包括集成存储器控制器单元并包括I/O控制逻辑。图5不仅示出存储器432、434耦合至CL 472、482,而且还示出I/O设备514也耦合至控制逻辑472、482。传统I/O设备515被耦合至芯片组490。
现在参照图6,所示出的是根据本发明一个实施例的SoC 600的框图。在图2中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图6中,互连单元602被耦合至:应用处理器610,该应用处理器包括一个或多个核202A-N的集合以及共享高速缓存单元206;系统代理单元210;总线控制器单元216;集成存储器控制器单元214;一组或一个或多个协处理器620,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元630;直接存储器存取(DMA)单元632;以及用于耦合至一个或多个外部显示器的显示单元640。在一个实施例中,协处理器620包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。该协处理器或者支持与应用处理器相同的ISA,或者具有控制指令或控制寄存器接口的不同类型和方法。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图4中示出的代码430)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图7是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图7示出可以使用x86编译器704来编译利用高级语言702的程序,以生成可以由具有至少一个x86指令集核的处理器716原生执行的x86二进制代码706。具有至少一个x86指令集核的处理器716表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的目标代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器704表示用于生成x86二进制代码706(例如,目标代码)的编译器,该二进制代码706可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器716上执行。类似地,图7示出可以使用替代的指令集编译器708来编译利用高级语言702的程序,以生成可以由不具有至少一个x86指令集核的处理器714(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码710。指令转换器712被用来将x86二进制代码706转换成可以由不具有x86指令集核的处理器714原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码710相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器712通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码706的软件、固件、硬件或其组合。指令转换器712的二进制代码或者基于x86指令集或者基于非x86指令集。它表示从x86至替换指令的实际转换,或者发生在x86处理器上或者在没有x86支持的处理器上。
在使用共享虚拟存储器的处理器中加速操作的装置和方法
由本专利申请的受让人(以及可能的其它人)设计的未来处理器将使用中央处理单元(CPU)和图形处理单元(GPU)之间的共享虚拟存储器(SVM)。图8示出一种这样的实现,其中运行在GPU 820上的代码——示为用户空间851内的图形线程(GTHREAD)810——使用运行在CPU 805上的应用801的相同虚拟存储器。图8还示出分别在CPU和GPU的内核层850内执行的主机操作系统803和同步逻辑811。
由GPU 820访问共享的虚拟存储器可导致页错误(PF)状况,例如,如果相应的虚拟页不存在于系统存储器(例如,动态随机存取存储器或DRAM)中,或者如果有“访问权”违背(例如,当GPU 820试图写入“只读”存储器页时)。
用于解决GPU页错误状况的当前方案假设GPU生成的页错误被转发到GPU的驱动器804,其通过影子(shadow)线程802解决该页错误状况。影子线程802可通过自身生成相同的页错误以便从其本机操作系统获取支持或通过经由限定的API接入操作系统以便从操作系统获取用于错误存储器地址访问的直接支持,来解决该页错误。这种基于驱动器的页错误处理方案显著慢于“本机”CPU页错误处理。我们估计以此方式在GPU 820上处理页错误所需的时间大约比在CPU 805上处理页错误慢3倍。该方案还涉及与在CPU上处理GPU错误有关的主机CPU开销。以上指出的性能降低主要由于以下事实引起:不同于视为单个处理器异常的常规页错误,处理页错误事件。
以下描述的本发明的实施例使在具有共享虚拟存储器(SVM)能力的加速器上(诸如GPU)处理页错误引起的CPU开销量最小化。另外,这些实施例将本机操作系统(OS)虚拟存储器支持用于具有SVM能力的设备,而不是使用上述低效的基于驱动器的机制。
图9示出包括前端核851与加速器组件850的本发明的一个实施例。在一个实施例中,前端核是能够执行本机(例如,x86)操作系统代码的英特尔架构(IA)核(然而本发明的基本原理不限于IA核)。如说明990所指出的,其标识不同类型组件的填充模式,前端核851和加速器850包括各种硬件数据结构、硬件功能单元和软件(例如,操作系统)组件。具体地,所示实施例的前端核851包括转换后备缓冲器(TLB)、高速缓存,加速器的存储器管理器810使用该高速缓存来提高虚拟地址转换速度。具体地,TLB具有固定数量的槽,这些槽包含页表条目,每个条目将虚拟地址映射到物理地址。当试图访问虚拟地址空间内的具体页时,存储器管理器810执行所示的TLB查找。如果虚拟至物理映射存在于TLB中,则将物理地址提供给存储器管理器810,存储器管理器然后可利用该物理地址访问存储器层次结构830。
如果虚拟至物理映射不存在于TLB 820中,则导致“TLB未命中(miss)”。该TLB服务前端核851和加速器850两者。在一个实施例中,响应于TLB未命中,存储器管理器810访问页步行器(page walker)模块823,该模块向加速器850提供页步行(walk)服务。页步行硬件支持可以是前端核851的一部分,且还可由前端核用作其常规执行路径的一部分。一个选择包括页步行硬件支持作为加速器存储器管理器810的一部分。如本领域的技术人员所知,页步行涉及查找(存储在存储器830中的)页表中的地址映射,以确定是否存在映射。在一个实施例中,如果存在一个,则将其写回到TLB 820。错误指令的后续执行将导致TLB命中,且存储器访问将如前所述地继续。如果映射不存在,则由页错误处理器软件822重新开始错误异常。
在一个实施例中,TLB否决(shootdown)处理器821也被实现为在前端核851上执行的软件。如本领域的技术人员所理解的,如果系统组件(例如加速器执行单元801-804或另一个前端核)已经限制对于存储器830中包含的特定页的访问,则可使用TLB否决操作。在这一情况下,其它加速器/核的TLB必须被冲刷以去除关于该受限制的页的任何条目(即,使得不允许访问该页的其它加速器/核不能这样做)。这样做是为了强制TLB用其新属性(例如,只读)重新加载该页。导致其它核的TLB被清除的一个核的动作被称为“TLB否决”。在一个实施例中,TLB否决由操作系统驱动,且其主要焦点是将执行单元设置在已知状态,该状态不包括对指示存储器页的访问或包括对存储器的部分访问,如只读。在一个实施例中,应有前端核负责具有一种方法以在TLB否决事件期间停止加速器存储器访问并在页表的修改期间将其设置为已知状态。
在一个实施例中,前端核851上执行的包括页错误处理器822和TLB否决处理器821的软件被实现为本机操作系统代码(例如,如果前端核是因特尔架构(IA)核则为X86代码)。如上所述,该代码处理页错误并参与操作系统TLB否决过程。此外,在一个实施例中,本机OS代码调度加速器上的任务。具体地,OS代码可调度将由加速器执行单元(EU)801-804中的一个或多个执行的任务。
在一个实施例中,TLB 820被实现为内容可寻址存储器(CAM),然而本发明的基本原理不限于任何具体的TLB类型。TLB是本领域技术人员所公知的组件,因为本文中未详细描述以免混淆本发明的基本原理。
总之,在本发明的一个实施例中,将轻量的前端核851增加到支持共享的虚拟存储器(SVM)的每个加速器850。该前端核充当加速器850的存储器管理单元。在一个实施例中,它作为特殊的CPU(在一个实施例中为英特尔架构CPU)对操作系统(OS)是可见的,且能够运行OS代码的小子集。
所示的装置和方法提供对现有实现的改进,其中通过硬件组件(IOMMU2)将MMU服务提供给具有SVM能力的加速器,该硬件组件在设备TLB未命中的情况下执行页步行。在PF的情况下,IOMMU2使用中断通知其驱动器,该驱动器解决PF并发送回响应。如前所述,以此方式利用IOMMU2是非常麻烦的且效率低,因此它涉及两路中断。
除了简化前端核的存储器管理支持,该核可由操作系统用作假设要运行在加速器上的任何调度的终点。该方法要求操作系统要知晓加速器的类型并且将把假设要在其加速器上执行的任务对准其前端核。为了支持该方法,加速器必须包括用于作为从前端核得出的请求的结果保存并恢复其上下文的选项。该保存和恢复能力将用作OS任务切换的一部分。
图10A示出根据本发明的一个实施例的方法。在1001,前端核通信耦合到加速器。如上所述,一个实施例的前端核执行OS代码的轻量集合,且包括TLB、页步行模块、页错误处理器和TLB否决处理器。在1002,由前端核检测由加速器生成的存储器访问操作,该前端核在其TLB中检查处理存储器访问所需的条目。如果条目存在(在1003确定),则在1004,将TLB映射提供给加速器。如果否,则在1006,前端核将页步行器服务提供给加速器以确定虚拟至物理映射。在任一情况下,在1005,加速器使用前端核提供的映射访问存储器。
图10B示出实现在图9所示的架构上的用于处理TLB否决操作的示例性方法。在1011,前端核通信耦合到加速器。如上所述,一个实施例的前端核执行OS代码的轻量集合,且包括TLB、页步行模块、页错误处理器和TLB否决处理器。在1012,由前端核检测由加速器生成的存储器访问操作,该前端核检查其TLB以找到处理存储器访问所需的条目。如果在1013检测到TLB否决操作,则在1016,冲刷加速器/核的TLB以去除受限制的页的任何条目。在1014,受限制的页的TLB映射或当前加速器被授权访问的受限制的页的TLB映射被提供给请求加速器。在1015,加速器使用前端核提供的映射访问存储器。
图10C示出实现在图9所示的架构上的用于处理页错误的示例性方法。在1021,前端核通信耦合到加速器。如上所述,一个实施例的前端核执行OS代码的轻量集合,且包括TLB、页移动模块、页错误处理器和TLB否决处理器。在1022,由前端核检测由加速器生成的存储器访问操作,该前端核检查其TLB以找到处理存储器访问所需的条目。在1023,确定地址映射(经由TLB或经由对页表的存储器访问)。如果检测到页错误,因为例如所请求的页当前未被存储在物理存储器地址空间中(但是例如被存储在硬驱动上),则在1025,所请求的页被加载到存储器中。在1026,加速器针对所请求的页访问系统存储器。
示例性指令格式
本文中所描述的指令的实施例可以不同的格式体现。另外,在下文中详述示例性系统、架构、以及流水线。指令的实施例可在这些系统、架构、以及流水线上执行,但是不限于详述的系统、架构、以及流水线。
向量友好指令格式是适于向量指令(例如,存在专用于向量操作的特定字段)的指令格式。尽管描述了其中通过向量友好指令格式支持向量和标量操作两者的实施例,但是替代实施例仅使用通过向量友好指令格式的向量操作。
图11A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图11A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络1102的连接及其二级(L2)高速缓存的本地子集1104的框图。在一个实施例中,指令解码器1100支持具有打包数据指令集扩展的x86指令集。L1高速缓存1106允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1108和向量单元1110使用分开的寄存器集合(分别为标量寄存器1112和向量寄存器1114),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存1106读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集1104是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存1104的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集1104中,并且可以与其他处理器核访问其自己的本地L2高速缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的L2高速缓存子集1104中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图11B是根据本发明的各实施例的图11A中的处理器核的一部分的展开图。图11B包括L1高速缓存1104的L1数据高速缓存1,106A部分,以及关于向量单元1110和向量寄存器1114的更多细节。具体地说,向量单元1410是16宽向量处理单元(VPU)(见16宽ALU 1128),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元1120支持对寄存器输入的混合、通过数值转换单元1122A-B支持数值转换、并通过复制单元1124支持对存储器输入的复制。写掩码寄存器1126允许断言所得的向量写入。
本发明的实施例可以包括以上描述的各个步骤。这些步骤可在用于致使通用或专用处理器执行所述步骤的机器可执行指令中实现。另选地,这些步骤可由包含用于执行这些步骤的硬连线逻辑的专用硬件组件来执行,或由编程的计算机组件和自定义的硬件组件的任何组合来执行。
如在此所述的,指令可以指硬件的具体配置,如被配置成执行特定操作或具有预定功能的专用集成电路(ASIC)或者存储在嵌入非暂态计算机可读介质中的存储器中的软件指令。因而,附图中示出的技术可以使用存储在一个或多个电子设备(例如,终端站、网络元件等等)并在其上执行的代码和数据来实现。此类电子设备通过使用诸如非暂态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)之类的计算机机器可读介质和暂态计算机机器可读通信介质(例如,电、光、声或其它形式的传播信号——诸如载波、红外信号、数字信号等)来(内部地和/或通过网络与其他电子设备)存储和传递代码和数据。另外,这类电子设备一般包括与一个或多个其它组件耦合的一组一个或多个处理器,所述一个或多个其它组件例如是一个或多个存储设备(非暂态机器可读存储介质)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)以及网络连接。该组处理器和其它组件的耦合一般是通过一个或多个总线和桥(也称总线控制器)达成的。存储设备和携带网络流量的信号分别表示一个或多个机器可读存储介质以及机器可读通信介质。因此,给定电子设备的存储设备通常存储代码和/或数据以供在该电子设备的一个或多个处理器上执行。当然,本发明的实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。贯穿此详细描述,为解释起见,阐明了众多具体细节以提供对本发明的全面理解。然而,对本领域技术人员将显见的是,没有这些具体细节也可实践本发明。在某些实例中,并不详细描述众所周知的结构和功能以免淡化本发明的主题。因此,本发明的范围和精神应根据所附权利要求书来判断。

Claims (25)

1.一种装置,包括:
加速器,包括一个或多个执行单元(EU),用于执行特定的指令集;以及
至加速器的前端核,包括通信耦合到所述加速器并与所述加速器共享的转换后备缓冲器(TLB),并且向所述加速器提供存储器访问服务,所述存储器访问服务包括响应于加速器需要访问系统存储器,代表加速器执行TLB查找操作以将虚拟地址映射到物理地址,
存储器层次结构,包括通信耦合到所述前端核和所述加速器且经由TLB查找操作提供的物理地址访问的系统存储器。
2.如权利要求1所述的装置,其特征在于,所述前端核还包括页步行器模块,用于在对于当前的存储器访问不存在TLB条目时确定虚拟至物理映射,所述页步行器模块访问系统存储器以确定所述加速器所需的映射。
3.如权利要求2所述的装置,其特征在于,所述页步行器模块更新TLB以包括虚拟至物理地址映射。
4.如权利要求3所述的装置,其特征在于,所述前端核还包括页错误处理器以重新开始未更新TLB之后导致页错误的指令。
5.如权利要求4所述的装置,其特征在于,所述前端核还包括TLB否决处理器,用于响应于检测到特定的页已经被限制由特定系统组件使用,执行TLB否决操作,所述TLB否决操作导致特定页的TLB条目被冲刷。
6.如权利要求1所述的装置,其特征在于,所述前端核包括用于执行x86操作系统代码的核。
7.如权利要求1所述的装置,其特征在于,所述加速器包括用于执行图形指令的图形加速器。
8.如权利要求7所述的装置,其特征在于,所述加速器包括用于执行图形指令的多个执行单元(EU)。
9.如权利要求8所述的装置,其特征在于,所述前端核包括用于调度在EU上执行图形指令的调度器。
10.如权利要求8所述的装置,其特征在于,所述加速器包括存储器管理器,用于生成将由前端核服务的TLB查找和TLB未命中信号。
11.一种装置,包括:
加速器装置,包括一个或多个执行单元(EU),用于执行特定的指令集;以及
至加速器装置的前端核装置,包括通信耦合到加速器并与加速器共享的转换后备缓冲器(TLB),并且向所述加速器装置提供存储器访问服务,所述存储器访问服务包括响应于加速器需要访问系统存储器,代表加速器装置执行TLB查找操作以将虚拟地址映射到物理地址,
存储器层次结构装置,包括通信耦合到所述前端核装置和所述加速器装置且经由TLB查找操作提供的物理地址访问的系统存储器。
12.如权利要求11所述的装置,其特征在于,所述前端核装置还包括页步行器装置,用于在对于当前的存储器访问不存在TLB条目时确定虚拟至物理映射,所述页步行器装置访问系统存储器以确定所述加速器装置所需的映射。
13.如权利要求12所述的装置,其特征在于,所述页步行器装置更新TLB以包括虚拟至物理地址映射。
14.如权利要求13所述的装置,其特征在于,所述前端核装置还包括页错误处理器以重新开始在已经更新TLB之后导致页错误的指令。
15.如权利要求14所述的装置,其特征在于,所述前端核装置还包括TLB否决处理器装置,用于响应于检测到特定的页已经被限制由特定系统组件使用,执行TLB否决操作,所述TLB否决操作导致特定页的TLB条目被冲刷。
16.如权利要求11所述的装置,其特征在于,所述前端核装置包括用于执行x86操作系统代码的核。
17.如权利要求11所述的装置,其特征在于,所述加速器装置包括用于执行图形指令的图形加速器。
18.如权利要求17所述的装置,其特征在于,所述加速器装置包括用于执行图形指令的多个执行单元(EU)。
19.如权利要求18所述的装置,其特征在于,所述前端核装置包括用于调度在EU上执行图形指令的调度器装置。
20.如权利要求18所述的装置,其特征在于,所述加速器装置包括存储器管理器,用于生成将由前端核装置服务的TLB查找和TLB未命中信号。
21.一种方法,包括:
将前端核通信耦合到加速器,所述前端核监视由所述加速器生成的存储器访问操作;
确定转换后备缓冲器(TLB)条目是否存在于由所述前端核管理的TLB中,以服务由所述加速器生成的存储器访问操作;
如果是,则将所述TLB条目提供给所述加速器;
如果不是,则生成页步行操作以确定所述加速器所需的虚拟至物理映射;以及
通信耦合存储器层次结构,所述存储器层次结构包括到所述前端核和所述加速器且使得能经由TLB查找操作提供的物理地址访问的系统存储器。
22.如权利要求21所述的方法,其特征在于,页步行操作包括访问系统存储器中的页以执行虚拟至物理映射。
23.如权利要求22所述的方法,其特征在于,还包括:
更新TLB以包括从系统存储器读取的虚拟至物理映射。
24.如权利要求23所述的方法,其特征在于,还包括:
导致所述加速器重新执行需要虚拟至物理存储器转换的指令;以及
将映射从TLB提供给加速器。
25.如权利要求21所述的方法,其特征在于,还包括:
响应于确定特定的页已经被限制由特定组件使用,在前端核上执行TLB否决操作,所述TLB否决操作导致与该特定页相关联的条目从TLB冲刷。
CN201280072078.3A 2012-03-30 2012-03-30 在使用共享虚拟存储器的处理器中加速操作的装置和方法 Active CN104204990B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710022904.8A CN106708753B (zh) 2012-03-30 2012-03-30 在使用共享虚拟存储器的处理器中加速操作的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/031676 WO2013147885A1 (en) 2012-03-30 2012-03-30 Apparatus and method for accelerating operations in a processor which uses shared virtual memory

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201710022904.8A Division CN106708753B (zh) 2012-03-30 2012-03-30 在使用共享虚拟存储器的处理器中加速操作的装置和方法

Publications (2)

Publication Number Publication Date
CN104204990A true CN104204990A (zh) 2014-12-10
CN104204990B CN104204990B (zh) 2018-04-10

Family

ID=49260939

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201280072078.3A Active CN104204990B (zh) 2012-03-30 2012-03-30 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN201710022904.8A Active CN106708753B (zh) 2012-03-30 2012-03-30 在使用共享虚拟存储器的处理器中加速操作的装置和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201710022904.8A Active CN106708753B (zh) 2012-03-30 2012-03-30 在使用共享虚拟存储器的处理器中加速操作的装置和方法

Country Status (4)

Country Link
US (5) US9405701B2 (zh)
EP (2) EP3373105B1 (zh)
CN (2) CN104204990B (zh)
WO (1) WO2013147885A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077336A (zh) * 2014-12-18 2017-08-18 英特尔公司 二进制转换机制
CN108021528A (zh) * 2016-11-03 2018-05-11 北京中科寒武纪科技有限公司 Slam运算装置和方法
CN108776949A (zh) * 2017-04-07 2018-11-09 英特尔公司 用于图形处理环境中的存储器管理的设备和方法
CN109416640A (zh) * 2016-07-01 2019-03-01 英特尔公司 孔径访问处理器、方法、系统和指令
CN109478139A (zh) * 2016-08-13 2019-03-15 英特尔公司 用于共享存储器中的访问同步的装置、方法和系统
CN109565523A (zh) * 2016-09-12 2019-04-02 英特尔公司 用于结构上的解聚的存储级存储器的机制
CN109643243A (zh) * 2016-09-26 2019-04-16 英特尔公司 动态虚拟cpu核分配
CN109643279A (zh) * 2016-09-26 2019-04-16 英特尔公司 使用虚拟到虚拟地址表进行存储器压缩
CN109690475A (zh) * 2016-09-30 2019-04-26 英特尔公司 用于转移操作的硬件加速器和方法
CN109416640B (zh) * 2016-07-01 2024-04-26 英特尔公司 孔径访问处理器、方法、系统和指令

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3373105B1 (en) 2012-03-30 2020-03-18 Intel Corporation Apparatus and method for accelerating operations in a processor which uses shared virtual memory
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9361116B2 (en) * 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9081707B2 (en) * 2012-12-29 2015-07-14 Intel Corporation Apparatus and method for tracking TLB flushes on a per thread basis
EP3072058B1 (en) * 2014-02-28 2017-04-12 Philips Lighting Holding B.V. Bus address assignment
WO2016023448A1 (en) * 2014-08-11 2016-02-18 Mediatek Inc. Dynamic memory control method and system thereof
WO2016064403A1 (en) 2014-10-23 2016-04-28 Hewlett Packard Enterprise Development Lp Supervisory memory management unit
US9996357B2 (en) 2015-10-30 2018-06-12 International Business Machines Corporation Resolving page faults out of context for shared contexts
CN105487949A (zh) * 2015-11-25 2016-04-13 浪潮电子信息产业股份有限公司 一种mic卡的测试方法及装置
US20170177361A1 (en) * 2015-12-22 2017-06-22 Michael Anderson Apparatus and method for accelerating graph analytics
KR101923661B1 (ko) * 2016-04-04 2018-11-29 주식회사 맴레이 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
EP3255550B1 (en) * 2016-06-08 2019-04-03 Google LLC Tlb shootdowns for low overhead
US10540292B2 (en) 2016-06-08 2020-01-21 Google Llc TLB shootdowns for low overhead
US10229470B2 (en) * 2016-08-05 2019-03-12 Intel IP Corporation Mechanism to accelerate graphics workloads in a multi-core computing architecture
US10268596B2 (en) * 2017-04-21 2019-04-23 Intel Corporation Memory access compression using clear code for tile pixels
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
US10922258B2 (en) * 2017-12-22 2021-02-16 Alibaba Group Holding Limited Centralized-distributed mixed organization of shared memory for neural network processing
US10430246B2 (en) 2018-01-18 2019-10-01 International Business Machines Corporation Virtualized and synchronous access to hardware accelerators
US11372803B2 (en) * 2018-04-03 2022-06-28 Xilinx, Inc. Data processing engine tile architecture for an integrated circuit
US10846235B2 (en) 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
US11112972B2 (en) 2018-12-05 2021-09-07 Samsung Electronics Co., Ltd. System and method for accelerated data processing in SSDs
US10817441B2 (en) * 2019-03-29 2020-10-27 Intel Corporation Shared accelerator memory systems and methods
US11176493B2 (en) * 2019-04-29 2021-11-16 Google Llc Virtualizing external memory as local to a machine learning accelerator
CN110428359B (zh) * 2019-08-09 2022-12-06 南京地平线机器人技术有限公司 用于处理感兴趣区域数据的装置和方法
US11341051B2 (en) * 2020-09-15 2022-05-24 Vmware, Inc. Consolidating shared state for translation lookaside buffer shootdowns
US11321242B2 (en) 2020-09-15 2022-05-03 Vmware, Inc. Early acknowledgement of translation lookaside buffer shootdowns
CN116680230B (zh) * 2023-05-22 2024-04-09 无锡麟聚半导体科技有限公司 一种硬件加速电路及芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452423A (zh) * 2007-12-06 2009-06-10 Arm有限公司 控制硬件加速器内数据值的清除
CN101840355A (zh) * 2003-02-18 2010-09-22 微软公司 用于增强协处理器性能的系统和方法
CN102023932A (zh) * 2009-09-18 2011-04-20 英特尔公司 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持
US20110161619A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430593B1 (en) 1998-03-10 2002-08-06 Motorola Inc. Method, device and article of manufacture for efficient task scheduling in a multi-tasking preemptive priority-based real-time operating system
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6697919B2 (en) * 2000-06-10 2004-02-24 Hewlett-Packard Development Company, L.P. System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system
US20060075211A1 (en) * 2002-03-21 2006-04-06 Martin Vorbach Method and device for data processing
US7017025B1 (en) 2002-06-27 2006-03-21 Mips Technologies, Inc. Mechanism for proxy management of multiprocessor virtual memory
US7673304B2 (en) 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
EP1611528A2 (de) * 2003-04-04 2006-01-04 PACT XPP Technologies AG Verfahren und vorrichtung für die datenverarbeitung
US7079147B2 (en) * 2003-05-14 2006-07-18 Lsi Logic Corporation System and method for cooperative operation of a processor and coprocessor
US7318128B1 (en) * 2003-08-01 2008-01-08 Sun Microsystems, Inc. Methods and apparatus for selecting processes for execution
US7219209B2 (en) * 2003-08-29 2007-05-15 Motorola, Inc. Bus filter for memory address translation
US20050223380A1 (en) 2004-03-31 2005-10-06 Chun Anthony L Trigger queue for a filter micro-coded accelerator
US7237094B2 (en) * 2004-10-14 2007-06-26 International Business Machines Corporation Instruction group formation and mechanism for SMT dispatch
US7389403B1 (en) 2005-08-10 2008-06-17 Sun Microsystems, Inc. Adaptive computing ensemble microprocessor architecture
US8914618B2 (en) 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US7827383B2 (en) * 2007-03-09 2010-11-02 Oracle America, Inc. Efficient on-chip accelerator interfaces to reduce software overhead
US8055872B2 (en) * 2008-02-21 2011-11-08 Arm Limited Data processor with hardware accelerator, accelerator interface and shared memory management unit
US8166249B2 (en) * 2008-03-10 2012-04-24 International Business Machines Corporation Performing a least recently used (LRU) algorithm for a co-processor
US8261276B2 (en) * 2008-03-31 2012-09-04 International Business Machines Corporation Power-efficient thread priority enablement
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
US9286232B2 (en) * 2009-01-26 2016-03-15 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a cache of ranges of currently registered virtual addresses
US20110161620A1 (en) 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8473717B2 (en) * 2010-02-03 2013-06-25 Arm Limited Coprocessor reset controller with queue for storing configuration information of subsequent sessions prior to completion of current session
US8683175B2 (en) * 2011-03-15 2014-03-25 International Business Machines Corporation Seamless interface for multi-threaded core accelerators
US8898434B2 (en) * 2011-11-11 2014-11-25 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing system throughput by automatically altering thread co-execution based on operating system directives
US9317441B2 (en) * 2011-12-22 2016-04-19 Intel Cororation Indexed page address translation to reduce memory footprint in virtualized environments
US9268596B2 (en) 2012-02-02 2016-02-23 Intel Corparation Instruction and logic to test transactional execution status
EP3373105B1 (en) * 2012-03-30 2020-03-18 Intel Corporation Apparatus and method for accelerating operations in a processor which uses shared virtual memory
US9361116B2 (en) * 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9053025B2 (en) * 2012-12-28 2015-06-09 Intel Corporation Apparatus and method for fast failure handling of instructions
US9229865B2 (en) * 2013-02-21 2016-01-05 Empire Technology Development Llc One-cacheable multi-core architecture

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101840355A (zh) * 2003-02-18 2010-09-22 微软公司 用于增强协处理器性能的系统和方法
CN101452423A (zh) * 2007-12-06 2009-06-10 Arm有限公司 控制硬件加速器内数据值的清除
CN102023932A (zh) * 2009-09-18 2011-04-20 英特尔公司 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持
US20110161619A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077336B (zh) * 2014-12-18 2021-05-28 英特尔公司 二进制转换机制
CN107077336A (zh) * 2014-12-18 2017-08-18 英特尔公司 二进制转换机制
CN109416640B (zh) * 2016-07-01 2024-04-26 英特尔公司 孔径访问处理器、方法、系统和指令
CN109416640A (zh) * 2016-07-01 2019-03-01 英特尔公司 孔径访问处理器、方法、系统和指令
CN109478139B (zh) * 2016-08-13 2024-01-23 英特尔公司 用于共享存储器中的访问同步的装置、方法和系统
CN109478139A (zh) * 2016-08-13 2019-03-15 英特尔公司 用于共享存储器中的访问同步的装置、方法和系统
US11681529B2 (en) 2016-08-13 2023-06-20 Intel Corporation Apparatuses, methods, and systems for access synchronization in a shared memory
CN109565523A (zh) * 2016-09-12 2019-04-02 英特尔公司 用于结构上的解聚的存储级存储器的机制
CN109565523B (zh) * 2016-09-12 2022-08-19 英特尔公司 用于结构上的解聚的存储级存储器的机制
CN109643279B (zh) * 2016-09-26 2023-12-15 英特尔公司 使用虚拟到虚拟地址表进行存储器压缩的方法和装置
CN109643279A (zh) * 2016-09-26 2019-04-16 英特尔公司 使用虚拟到虚拟地址表进行存储器压缩
CN109643243A (zh) * 2016-09-26 2019-04-16 英特尔公司 动态虚拟cpu核分配
CN109643243B (zh) * 2016-09-26 2024-03-08 英特尔公司 用于动态虚拟cpu核分配的方法、系统、设备、装置和介质
CN109690475A (zh) * 2016-09-30 2019-04-26 英特尔公司 用于转移操作的硬件加速器和方法
CN109690475B (zh) * 2016-09-30 2024-01-23 英特尔公司 用于转移操作的硬件加速器和方法
CN108021528B (zh) * 2016-11-03 2020-03-13 中科寒武纪科技股份有限公司 Slam运算装置和方法
CN109634904B (zh) * 2016-11-03 2023-03-07 中科寒武纪科技股份有限公司 Slam运算装置和方法
CN109634904A (zh) * 2016-11-03 2019-04-16 北京中科寒武纪科技有限公司 Slam运算装置和方法
CN108021528A (zh) * 2016-11-03 2018-05-11 北京中科寒武纪科技有限公司 Slam运算装置和方法
CN108776949A (zh) * 2017-04-07 2018-11-09 英特尔公司 用于图形处理环境中的存储器管理的设备和方法
CN108776949B (zh) * 2017-04-07 2024-05-03 英特尔公司 用于图形处理环境中的存储器管理的设备和方法

Also Published As

Publication number Publication date
EP2831693A4 (en) 2015-10-21
US10078519B2 (en) 2018-09-18
US20170153984A1 (en) 2017-06-01
CN104204990B (zh) 2018-04-10
US20170109294A1 (en) 2017-04-20
CN106708753A (zh) 2017-05-24
EP2831693B1 (en) 2018-06-13
EP2831693A1 (en) 2015-02-04
US20130318323A1 (en) 2013-11-28
EP3373105A1 (en) 2018-09-12
US9971688B2 (en) 2018-05-15
US20170109281A1 (en) 2017-04-20
US9405701B2 (en) 2016-08-02
EP3373105B1 (en) 2020-03-18
CN106708753B (zh) 2021-04-02
US10467012B2 (en) 2019-11-05
US20160335090A1 (en) 2016-11-17
WO2013147885A1 (en) 2013-10-03

Similar Documents

Publication Publication Date Title
CN104204990A (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
JP6375379B2 (ja) キャッシュ占有決定および命令スケジューリングのための方法および装置
CN104205088A (zh) 用于实现页级自动二进制转换的硬件剖析机制
CN104603795A (zh) 用于实现用于用户级线程的即时上下文切换的新指令和高效的微架构
CN105224865A (zh) 用于在安全飞地页高速缓存中进行中断和恢复分页的指令和逻辑
CN103959237A (zh) 用于提供向量横向比较功能的指令和逻辑
CN104484284A (zh) 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
US10339060B2 (en) Optimized caching agent with integrated directory cache
CN104603745A (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
CN104025067A (zh) 具有由向量冲突指令和置换指令共享的全连接互连的处理器
CN104603746A (zh) 由读和写掩码控制的向量移动指令
CN104335183A (zh) 用于测试事务性执行状态的指令和逻辑
EP3734455A1 (en) Technology for providing out-of-band processor telemetry
CN104951702A (zh) 用于有效地执行散列操作的方法和设备
CN104919432A (zh) 用于将多个位向左移并将多个1拉入较低有效位的指令
CN104077107A (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
JP5985526B2 (ja) システムコールのためのロバスト且つ高性能な命令
CN104011663A (zh) 掩码寄存器上的广播操作
CN104903867A (zh) 用于执行冲突检测并将寄存器的内容广播到另一个寄存器的数据元素位置的系统、装置和方法
CN104969178A (zh) 用于实现便笺式存储器的装置和方法
CN104049944A (zh) 将有条件短前向分支转换成计算等效的所断言指令
CN104025027A (zh) 结构访问处理器、方法、系统和指令
CN104246692A (zh) 用于实时指令跟踪的系统和方法
CN103988173A (zh) 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑
CN105027137A (zh) 用于针对增强型安全检查的页走查扩展的装置和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant