CN105320494A - 带有一致的和非一致的子系统的存储器排序 - Google Patents

带有一致的和非一致的子系统的存储器排序 Download PDF

Info

Publication number
CN105320494A
CN105320494A CN201510313396.XA CN201510313396A CN105320494A CN 105320494 A CN105320494 A CN 105320494A CN 201510313396 A CN201510313396 A CN 201510313396A CN 105320494 A CN105320494 A CN 105320494A
Authority
CN
China
Prior art keywords
storer
functional unit
noco
memory
processor
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
CN201510313396.XA
Other languages
English (en)
Other versions
CN105320494B (zh
Inventor
张春晖
G·Z·克里斯沃斯
E·T·格罗科斯基
R·桑德拉拉曼
C-L·陈
F·阿达纳兹
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 CN105320494A publication Critical patent/CN105320494A/zh
Application granted granted Critical
Publication of CN105320494B publication Critical patent/CN105320494B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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
    • 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/3824Operand accessing
    • 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
    • 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/0815Cache consistency protocols
    • 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
    • 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/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Abstract

可以接收与存储器相关联的操作和与一个或多个功能单元相关联的操作。可以确定与存储器相关联的操作和与功能单元中的一个或多个相关联的操作之间的依赖关系。可以为与存储器相关联的操作创建第一排序。此外,还可以基于确定的依赖关系和与存储器相关联的操作的第一排序,为与功能单元中的一个或多个相关联的操作创建第二排序。

Description

带有一致的和非一致的子系统的存储器排序
技术领域
此处所描述的各实施例一般涉及存储器排序,更具体而言,涉及带有一致的和非一致的子系统的存储器排序。
背景技术
处理设备可以基于包括存储器和功能单元的架构。处理设备的处理器核可以将处理任务或功能指定到功能单元。例如,处理核可以将数据存储在存储器中,还可以在它被存储在存储器中之后进一步向功能单元发出对数据执行操作的命令。
附图简述
图1是示出了根据一些实施例的实现存储器流模块以提供存储器定序或排序的计算系统的框图。
图2是根据本发明的一些实施例的存储器流模块的框图。
图3是根据一些实施例的执行存储器操作和非一致的(NOCO)触发器的方法的流程图。
图4A示出了根据一些实施例的存储器操作和NOCO触发器的示例序列。
图4B示出了根据一些实施例的存储器操作和NOCO触发器的另一示例序列。
图4C示出了根据一些实施例的存储器操作和NOCO触发器的另一示例序列。
图5示出了根据本发明的一些实施例的基于存储器操作的提升,将依赖关系添加到存储器操作和NOCO触发器的序列的方法。
图6示出了根据本发明的一些实施例的检测NOCO触发器的示例架构。
图7示出了根据一实施例的包括管理与无序指令流水线相关联的检查点的逻辑电路的处理器的微架构的框图。
图8是根据一个实现的计算机系统的框图;
图9为根据另一实现的的计算机系统的框图。
图10是根据一实现的片上系统的框图。
图11示出了计算系统的框图的另一实现。
图12示出了计算系统的框图的另一实现。
具体实施方式
本发明的各方面涉及带有一致的和非一致的子系统或部分的处理架构中的存储器排序技术。存储器排序技术可以被用来改善处理器、处理设备或基于处理器的系统的性能。例如,存储器排序技术可以被用来通过定义在处理设备的不同的部件之间的操作(例如,存储器读取事务和存储器写入事务)之间实施的属性,来改善处理设备的性能。处理设备可包括处理器核、多个功能单元以及存储器。处理器核可以卸载要由功能单元执行的任务。例如,处理器核可以发出对应于将指令或命令和数据存储在存储器中的第一操作,并可以基于存储在存储器中的指令或命令,发出对应于将命令(即,触发器)传输到功能单元以对数据执行功能或操作的第二操作。处理设备可包括存储器流模块,该存储器流模块包括功能块,功能块可以被用来基于与处理设备的存储器相关联的操作,定义与一个或多个功能单元相关联的操作的依赖关系。
处理设备可包括非一致的子系统或部分和一致的子系统或部分。例如,处理设备的存储器可以是一致的子系统的一部分,而一个或多个功能单元可以是非一致的子系统的一部分。这样的存储器可以被称为一致的存储器,而这样的功能单元可以被称为非一致的(NOCO)功能单元。NOCO功能单元可以是在处理器核的外面的功能单元。例如,处理器核可包括功能单元,NOCO功能单元可以在处理器核外部。NOCO功能单元也可以被称为加速器或固定功能块。一致的和非一致的可以是指一致性模型。在某些实施例中,一致性模型可以定义存储器操作的规则(例如,向存储器的写入事务和由功能单元从存储器检索数据的读取事务)。例如,一致的存储器可以是指由一个或多个执行或功能单元或处理器读和/或写的存储器,而非一致的功能单元可以是指存储和一致的存储器分离的数据的分离的副本或与之相关联的功能单元。这样的功能单元也可以被称为加速器。如此,包括一致的存储器和一个或多个非一致的功能单元两者的处理设备可以被称为一致的和非一致的系统。在某些实施例中,与一致的存储器相关联的操作可以被称为存储器操作(例如,对于一致的存储器的读取或写入事务),与非一致的功能单元相关联的操作可以被称为NOCO触发器。相应地,由于NOCO功能单元和一致的存储器正在对相同数据的分开地存储的副本进行操作,因此,使用数据执行的操作可能要求某些依赖关系,以便维护为操作定义的规则。
现代的基于微处理器的产品,包括片上系统(SoC)、客户端、服务器以及硬件加速器,可以使用包括一致的存储器和非一致的功能单元的处理架构。存储器排序模块可以被用来定义与一致的存储器相关联的操作和与非一致的功能单元相关联的操作之间的交互。在某些实施例中,存储器排序模块可以被用来定义对于NOCO功能单元的操作(例如,NOCO触发器)和对于一致的存储器的操作(例如,存储器操作)之间的依赖关系。在某些实施例中,NOCO触发器可以是NOCO功能单元检索存储在一致的存储器中的命令或指令的命令。存储在一致的存储器中的这样的命令或指令可以被称为控制块(CB)。如此,来自处理器核的第一操作(例如,存储器操作)可以对应于向一致的存储器写入或读取控制块,来自处理器核的第二操作(例如,NOCO触发器)可以对应于从一致的存储器读取和检索控制块,以及要由NOCO功能单元执行的随后的操作。如此,NOCO功能单元的NOCO触发器可以取决于一致的存储器操作。在某些实施例中,这样的依赖关系可以是指NOCO功能单元的NOCO触发器不由处理核执行或向NOCO功能单元传输,直到一致的存储器的特定存储器操作被完成。
如下面进一步详细描述的,存储器流模块可以提供一致的存储器的存储器操作的第一流或序列,和NOCO功能单元的NOCO触发器的第二流或序列。在某些实施例中,NOCO功能单元的NOCO触发器的第二流或序列可以取决于一致的存储器的存储器操作的第一流或序列。例如,在一致的存储器的较旧的存储器操作(例如,较早地发出的读取事务)被执行完之前,NOCO功能单元的触发器可以被限制执行。
一致的存储器的存储器操作和NOCO功能单元的触发器之间的这样的排序可以改善包括一致的子系统和非一致的子系统两者的处理设备的总体性能。例如,存储器流模块所使用的一致性模型可以为一致的存储器创建第一流,其中,第一流可以允许操作的无序执行(例如,特定事务可以在较早的事务之前执行),而让NOCO功能单元的另一流按比较连续和有序方式执行,也部分地依赖于存储器操作。这样的一致性模型可以允许更快地执行存储器操作,同时也使用NOCO功能单元。
图1是示出了根据一些实施例的实现用于提供和更新与存储器120和一个或多个NOCO功能单元130相关联的存储器序列的存储器流模块107的计算系统100的框图。计算系统100利用处理器102形成,该处理器102包括处理核,该处理核可以卸载要由NOCO功能单元130中的一个或多个完成的工作或事务。简而言之,存储器流模块107为存储器120并为NOCO功能单元130维护和更新存储器序列,存储器序列可以被用来定义何时可以执行存储器120的存储器操作和/或NOCO功能单元130的NOCO触发器。例如,存储器流模块107可以定义并控制存储器120的存储器操作以及NOCO功能单元130的NOCO触发器的执行的特定顺序,以及基于存储器120的存储器操作,定义并实施NOCO功能单元130的NOCO触发器的依赖关系。在下文中参考图2–6更详细地描述了关于存储器流模块107的更多细节。
根据此处所描述的各实施例,计算系统100包括诸如处理器102之类的组件来使用包括执行用于处理数据的算法的逻辑的执行单元108。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的PENTIUMIIITM、PENTIUM4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本计算系统100可执行可从美国华盛顿州雷蒙德市的微软公司买到的WINDOWSTM操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。
实施例不限于计算机系统。本发明的替代实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的一些示例包括,但不仅限于:蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用可包括,但不仅限于:微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机、或可执行参照至少一个实施例的一个或多个指令的任何其他系统。
在图1所示出的实施例中,处理器102包括实现将执行至少一个指令的算法的一个或多个执行单元108。可在单处理器桌面或服务器系统的情境中描述一个实施例,但是可将替代实施例包括在多处理器系统中。系统100是“中枢”系统架构的示例。计算机系统100包括用于处理数据信号的处理器102。处理器102,作为一个说明性示例,包括,例如,复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现多个指令集组合的处理器、基于无序的处理器、或任意其他处理器设备(例如,数字信号处理器)。处理器102耦合到在处理器102及系统100中的其他组件(诸如存储指令、数据,或其任何组合的主存储器120)之间传输数据信号的处理器总线110。系统100的其他组件可包括,但不仅限于,图形加速器、存储器控制器中枢、I/O控制器中枢、无线收发器、闪存BIOS、网络控制器、音频控制器、串行扩展端口,以及I/O控制器。这些要素执行本领域所熟知的常规功能。
在一个实施例中,处理器102包括第一级(L1)内部高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存存储器或多级内部高速缓存存储器(例如,L1和L2)。其他实施例包括内部高速缓存和外部高速缓存的组合,这取决于特定实现和需求。寄存器组106将不同类型的数据存储在各种寄存器中,包括,但不限于,整数寄存器、浮点寄存器、向量寄存器、分组寄存器、影子寄存器(shadowregister)、检查点寄存器、状态寄存器、配置寄存器,以及指令指针寄存器。
执行单元108(包括用于执行整数和浮点操作的逻辑)也驻留在处理器102中。应该指出的是,执行单元可以或可以不具有浮点单元。在一个实施例中,处理器102包括存储微代码的微代码(μcode)ROM,该微代码在被执行时将执行某些宏指令的算法或处理复杂情况。这里,微代码是潜在地可更新的,以为处理器102处理逻辑缺陷/修补。执行单元108的替代实施例也可被用于微控制器、嵌入式处理器、图形设备、DSP以及其他类型的逻辑电路。
系统100包括主存储器120。主存储器120可包括,但不限于,动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。主存储器120存储将由可由处理器102执行的数据信号来表示的指令和/或数据。处理器102通过处理器总线110与主存储器120进行通信。诸如存储器控制器中枢(MCH)之类的系统逻辑芯片可以耦合到处理器总线110和主存储器120。MCH可提供至存储器120的高带宽存储器路径,用于指令和数据存储,以及用于存储图形命令、数据和纹理。MCH可用于引导处理器102、主存储器120以及系统100内的其他组件之间的数据信号,并在处理器总线110、主存储器120、高速缓存存储器104,以及系统I/O之间桥接该数据信号。MCH可经由存储器接口耦合至主存储器120。在一些实施例中,系统逻辑芯片可以提供用于通过加速图形端口(AGP)互连耦合到图形控制器的图形端口。系统100也可以包括I/O控制器中枢(ICH)。ICH经由局部I/O总线提供至一些I/O设备的直接连接。局部I/O总线是高速I/O总线,用于将外围设备连接至主存储器120、芯片组以及处理器102。一些示例是音频控制器、固件中枢(闪存BIOS)、无线收发机、数据存储、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线(USB))以及网络控制器。数据存储设备可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
对于系统的另一个实施例,存储器流模块107可以与片上系统一起使用。用于一个这样的系统的存储器可以是闪存存储器。闪存存储器可位于与处理器和其他系统组件相同的管芯上。此外,诸如存储器控制器或图形控制器之类的其他逻辑块也可位于芯片上系统上。
片上系统的一个实施例包括处理器核、一致的存储器(例如,存储器120)以及一个或多个非一致的功能单元(例如,NOCO功能单元130)。在某些实施例中,处理器核可包括控制存储器120的存储器操作以及NOCO功能单元130的NOCO触发器的存储器流模块107。例如,在某些实施例中,处理器核可以将事务或操作传输到一致的存储器120和NOCO功能单元130。在某些实施例中,处理器核可以将存储器操作(例如,读取或写入事务)传输到一致的存储器。存储器操作可以是将指令和命令存储到存储器中。这样的指令和命令可以被称为控制块(CB)。在某些实施例中,CB可以存储在一致的存储器120的预定义的和特定区域。处理器核还可以进一步将NOCO触发器操作传输到NOCO功能单元130中的一个。例如,NOCO触发器操作可以通过由处理器102的处理器核所发出的存储器映射的输入/输出(IO)写入事务来传输。一旦从处理器核接收到NOCO触发器,NOCO功能单元就可以从一致的存储器120检索CB,NOCO功能单元130可以基于检索到的CB,执行操作。例如,NOCO功能单元130可以检索对应于CB的数据,并基于指令和可能在CB中标识的数据的位置,对数据执行操作。随后,NOCO功能单元130可以基于CB,来处理数据,并可以将经处理的数据写入到一致的存储器120。例如,NOCO功能单元130可以发起向一致的存储器120的写入事务,以将经处理的数据存储在一致的存储器120的另一位置。此外,NOCO功能单元130还可以基于CB,将CB标记为在数据已经被处理完之后完成。
在某些实施例中,NOCO功能单元可以是,但不仅限于,图形控制器、处理器、或处理设备、网络控制器、处理器,或处理设备、直接存储器访问(DMA)控制器、处理器、或处理设备,或用于与处理设备相关联的编程的输入/输出(PIO)中的任何其他设备。例如,NOCO功能单元130可以是包括算术逻辑单元(ALU)或其他处理能力的IO设备。
图2是示出了根据本发明的一些实施例的示例存储器流模块200的框图。存储器流模块200可以对应于图1的存储器流模块107。一般而言,存储器流模块200可包括一致的子模块(或功能块)210、非一致的子模块(或功能块)220、非一致的流标识符子模块(或功能块)230、一致的流标识符子模块(或功能块)240、依赖关系子模块(或功能块)250以及提升子模块(或功能块)260。在替换实施例中,子模块中的一个或多个的功能可以被组合或分开。例如,单一子模块可以执行一致的子模块210、非一致的子模块220、非一致的流标识符子模块230、一致的流标识符子模块240、依赖关系子模块250,以及提升子模块260的功能。可另选地,子模块210、220、230、240、250,以及260中的每一个的功能都可以在多个子模块之间分离。
如图2所示,存储器流模块200可包括一致的子模块210。在某些实施例中,一致的子模块210可以接收或标识与存储器(例如,一致的存储器120)相关联的一个或多个存储器操作。例如,一致的子模块210可以标识与一致的存储器相关联的存储器操作。存储器操作可包括将数据(例如,控制块)写入到一致的存储器的写入操作或从一致的存储器读取数据的读取操作。存储器流模块200可包括非一致的子模块220。在某些实施例中,非一致的子模块220可以接收或标识与NOCO功能单元相关联的一个或多个NOCO触发器操作。例如,非一致的子模块220可以标识与一个或多个NOCO功能单元相关联的NOCO触发器,以检索存储在一致的存储器中的数据(例如,控制块)。存储器流模块230还可以包括一致的流标识符子模块230。在某些实施例中,一致的流标识符子模块230可以定义与一致的存储器相关联的存储器操作的流。存储器操作的流可以是指已经发出的存储器操作的系列。例如,一致的流标识符子模块230可以定义要被执行的存储器操作的顺序。在某些实施例中,存储器操作的顺序可以被定义为,以便存储器操作按程序顺序(例如,按照发出存储器操作的顺序)或当存储器操作的读取操作在存储器操作的写入操作之后时,存储器操作的顺序可以通过放宽存储器操作的顺序来定义。例如,读取事务或操作(也被称为加载)可以在按照程序顺序比读取事务或操作早的写入操作或事务(也被称为存储)之前执行。这样的顺序可以被称为总存储顺序(TSO)。参考图4A-4C更详细地公开了关于存储器操作的定序或排序的进一步的细节。存储器流模块200还可以包括非一致的流标识符子模块240。在某些实施例中,非一致的流标识符子模块240可以定义NOCO触发器操作的顺序。例如,在某些实施例中,触发器操作可以按先后顺序。在某些实施例中,先后顺序可以是指程序顺序,其中,操作(例如,NOCO触发器操作)被执行,以便按照程序顺序较早地发出的NOCO触发器在按照程序顺序较晚发出的NOCO触发器之前执行。
如此,可以接收存储器操作的系列。存储器操作的系列可以按程序顺序(例如,按存储器操作被发出的顺序)。存储器操作的系列可以基于按先后顺序来排序或基于这样的顺序排序:在写入事务之前的读取事务可以在写入事务之前执行。此外,还可以接收NOCO触发器的系列。NOCO触发器可以基于先后顺序。
参考图2,存储器流模块200可包括依赖关系子模块250。在某些实施例中,依赖关系子模块250可以基于存储器操作,定义一个或多个NOCO触发器的依赖关系。在某些实施例中,依赖关系可以是指一个特定存储器操作在依赖于该特定存储器操作的NOCO触发器可以被执行之前被执行或完成的要求。在某些实施例中,可以基于读取事务或存储器操作,为触发器操作定义依赖关系,(例如,NOCO触发器可以不执行并绕过较旧的读取操作),和/或基于提升的写入存储器操作,为NOCO触发器定义依赖关系。例如,存储器流模块200可包括提升子模块260。在某些实施例中,提升子模块260可以标识写入存储器操作被提升。提升的写入操作可以是指在处理器或处理设备的外面被分派的写入操作。响应于写入存储器操作被提升的标识,提升子模块260可以基于被提升的写入存储器操作,为NOCO触发器创建依赖关系。
图3是根据一些实施例的执行存储器操作和非一致的功能单元(NOCO)触发器的方法300的流程图。在某些实施例中,方法300可以由存储器流模块107或200执行。例如,方法300可以被图1的存储器流模块107或图2的存储器流模块200用来控制和/或更新执行顺序和与对应于一致的存储器的存储器操作和对应于处理器(例如,处理器102)的NOCO功能单元的NOCO触发器相关联的依赖关系。方法300可以由处理逻辑执行,该处理逻辑可以包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等等)、软件、固件、或其组合。可另选地,计算系统100的其他组件可以执行方法300的某些或所有操作。
如图3所示,方法300可以以处理逻辑在框310标识存储器操作的系列开始(框310)。在某些实施例中,存储器操作可以按先后顺序(例如,按程序顺序)或可以按这样的总存储顺序:可以放宽或修改后面跟着读取存储器操作的写入事务,以便读取存储器操作可以在较早的写入存储器操作之前执行。此外,存储器操作还可以与向可以被用来存储控制块和经处理的数据的一致的存储器的读取存储器操作和写入存储器操作相关联。例如,存储器操作可以为NOCO功能单元指定指令。在某些实施例中,指令可包括控制NOCO功能单元可以如何执行的信息,NOCO功能单元应该执行的命令,NOCO功能单元应该检索以对其执行的数据的位置,等等。如此,控制块可包括确定NOCO功能单元应该检索的数据的信息,如何对NOCO功能单元将检索的数据进行操作以生成经处理的数据,以及将存储经处理的数据的一致的存储器中的位置。
处理逻辑还可以进一步标识NOCO触发器的系列(框320)。在某些实施例中,NOCO触发器可以是对应的NOCO功能单元从一致的存储器中检索数据的指令或命令。例如,NOCO触发器可以指定存储在一致的存储器中的NOCO功能单元将检索和/或将执行的控制块的位置。如此,NOCO触发器可以被视为指定NOCO功能单元将如何操作的操作。
参考图3,处理逻辑可以基于存储器操作的系列,为NOCO触发器创建依赖关系(框330)。在某些实施例中,依赖关系可以指定,在存储器操作系列的特定存储器操作被执行完之前将不执行特定NOCO触发器。如此,依赖关系可以被视为对于特定NOCO触发器何时可以被执行的一种限制。此外,处理逻辑还可以执行存储器操作和NOCO触发器(框340)。例如,处理逻辑可以执行存储器操作和NOCO触发器,以便NOCO触发器中的一个或多个依赖于存储器操作中的一个或多个。
图4A示出了根据一些实施例的存储器操作和NOCO触发器的示例序列400。一般而言,序列400可包括对应于一致的存储器(例如,存储器120)的存储器操作的第一流,和对应于至少一个NOCO功能单元(例如,NOCO130)的NOCO触发器的第二流,其中,第二流的NOCO触发器在第一流的存储器操作的较早的读取操作之前不能执行。序列400可以由图1的存储器流模块107或图2的存储器流模块200创建。例如,存储器流模块可以为NOCO触发器定义依赖关系,以便NOCO触发器不能在较早的存储器操作(这是来自第一流的读取事务)之前执行。
如图4A所示,序列400可包括一致的存储器的存储器操作的第一流410,其中包括被称为读取存储器操作A的存储器操作411、被称为读取存储器操作B的存储器操作412、被称为写入存储器操作C的存储器操作413、被称为写入存储器操作D的存储器操作414,以及被称为读取存储器操作E的存储器操作415。此外,序列400还可包括一个或多个NOCO功能单元的NOCO触发器的第二流420,其中包括被称为触发器X的NOCO触发器421,可以被称为触发器Y的NOCO触发器422。在某些实施例中,NOCO触发器中的每一个都可以是向NOCO功能单元的写入操作。如此,序列400可包括向一致的存储器的读取和写入操作的第一流,以及向NOCO功能单元的写入操作的第二流。存储器操作和NOCO触发器中的每一个的布局可以对应于存储器操作或NOCO触发器何时被发出的时间。例如,存储器操作或NOCO触发器越靠近获取操作,按程序顺序越早发出存储器操作或触发器操作。例如,读取存储器操作A可以被视为按程序顺序的第一操作,触发器X可以被视为按程序顺序的第二操作,读取和写入存储器操作B和C可以被视为按程序顺序的第三和第四操作,触发器Y可以被视为按程序顺序的第五操作,以此类推。
在某些实施例中,序列400可以被称为带有NOCO流的放宽的顺序一致性。例如,顺序一致性可以是指按程序顺序执行存储器操作和NOCO触发器(例如,按照操作被发出的顺序)。这样的顺序一致性可以导致后面跟着触发器X的读取存储器操作A的执行,然后,后面跟着读取存储器操作B和写入操作C,触发器Y跟在读取存储器操作B和写入存储器操作C之后。然而如果存储器操作是在NOCO触发器被发出之前发出的读取存储器操作,带有NOCO流的放宽的顺序一致性可以定义NOCO触发器和存储器操作中的一个之间的依赖关系。在某些实施例中,流410的存储器操作可以被执行,而不等待特定NOCO触发器被执行。例如,存储器操作B,C,D以及E中的任何一个可以被允许在NOCO触发器X和Y中的任何一个被执行完之前执行。然而,存储器操作B,C,D以及E可以按程序顺序执行(例如,存储器操作B必须在稍后的存储器操作C,D,或E之前执行)。如此,存储器操作的流410可以被视为与NOCO触发器无关。NOCO触发器操作的流420可以与其他NOCO触发器按先后顺序放置。例如,NOCO触发器X可以按程序顺序比NOCO触发器Y早地发出。如此,NOCO触发器X必须在可以执行NOCO触发器Y之前执行。然而,可以在NOCO触发器X和NOCO触发器Y之间定义与存储器操作411和413的依赖关系423和424。例如,NOCO触发器X可以不被允许执行,直到存储器操作A已经执行,NOCO触发器Y可以不被允许执行,直到NOCO触发器X和存储器操作C已经执行。如此,依赖关系423和424基于存储器操作,定义NOCO触发器何时可以执行。如此,特定NOCO触发器(例如,NOCO触发器Y)可以不被允许执行,直到前一NOCO触发器(例如,NOCO触发器X)和特定存储器操作(例如,存储器操作C)已经被执行。
图4B示出了根据一些实施例的存储器操作和触发器的另一示例序列430。一般而言,序列400可包括对应于一致的存储器(例如,存储器120)的存储器操作的第一流,和对应于至少一个NOCO功能单元(例如,NOCO130)的NOCO触发器的第二流,其中,第二流的NOCO触发器在第一流的存储器操作的提升的写入操作执行完之前不能执行。序列430可以由图1的存储器流模块107或图2的存储器流模块200创建。例如,存储器流模块可以为NOCO触发器定义依赖关系,以便NOCO触发器不能在较早的存储器操作(这是来自第一流的提升的写入操作)之前执行。
如图4B所示,第一流440可包括存储器操作441,442,443,444,以及445。此外,第二流450还可包括NOCO触发器操作451和NOCO触发器操作452。序列430可以被称为带有单向围墙(onewayfence)是弱NOCO流。例如,存储器操作C*可以被称为提升的写入操作。在某些实施例中,提升的写入操作可以是可以在CPU的外面分派或执行的写入操作。例如,对应于存储器操作C*的提升的写入操作可以是将新控制块写入到一致的存储器,将由NOCO功能单元对该一致的存储器进行操作。在某些实施例中,提升的写入事务可以导致新依赖关系454,该新依赖关系454指定,可能不能执行NOCO触发器操作Y,直到在提升的写入事务被执行完之后。依赖关系453也可以定义,不可以在读取存储器操作A之前执行NOCO触发器操作X。
图4C示出了根据一些实施例的存储器操作和触发器的另一示例序列460。一般而言,序列460可包括对应于一致的存储器(例如,存储器120)的存储器操作的第一流,和对应于至少一个NOCO功能单元(例如,NOCO130)的NOCO触发器的第二流,其中,第二流的NOCO触发器在第一流的存储器操作的提升的写入操作执行完之前不能执行,并且可以排序第一流的存储器操作,以便稍后的读取存储器操作可以在较早的写入存储器操作之前执行。序列460可以由图1的存储器流模块107或图2的存储器流模块200创建。例如,存储器流模块可以为NOCO触发器定义依赖关系,以便NOCO触发器不能在较早的存储器存储器操作(这是来自第一流的提升的写入存储器操作)之前执行。
如图4C所示,第一流470可包括存储器操作471、472、473、474,以及475。此外,第二流480还可包括NOCO触发器481和NOCO触发器482。序列460可以被称为带有非一致的(NOCO)流的放宽的总存储顺序(TSO)。例如,可以基于TSO,排序第一流470的存储器操作,以便读取事务(例如,存储器操作E)可以在存储器操作的较早的写入事务(例如,存储器操作C*和D)之前执行。类似于序列430,依赖关系483和484可以定义何时可以执行对应的触发器操作。
如此,序列460可以指定对应于存储器操作的第一流和对应于NOCO触发器的第二流。在某些实施例中,第二流的NOCO触发器可以相对于其他NOCO触发器按先后顺序执行。例如,在第一时间发出的第一NOCO触发器可以在在晚于第一时间的第二时间发出的第二NOCO触发器之前执行,第二NOCO触发器可以不被允许执行,直到第一NOCO触发器被执行完。此外,还可以排序存储器操作,以便可以在第一写入存储器操作已经执行完之前执行在比第一写入存储器操作发出的时间稍晚的时间发出的读取存储器操作。
如此,序列460可以指定存储器操作的流,其中,某些稍后的存储器操作可以在其他存储器操作之前执行,同时还指定相对于其他NOCO触发器按先后顺序排列的NOCO触发器的第二流,但是,其中,NOCO触发器中的一个或多个依赖于第一流的存储器操作中的至少一个。如此,稍后的存储器操作可以在较早的NOCO触发器和某些其他较早的存储器操作之前被执行或分派,但是,稍后的NOCO触发器可以不在较早的NOCO触发器之前被执行或分派,还可以进一步依赖于至少一个存储器操作。
图5示出了根据本发明的一些实施例的基于存储器操作的提升,将依赖关系添加到存储器操作和NOCO触发器的序列的方法500。在某些实施例中,方法500可以由存储器流模块107或200执行。例如,方法500可以被图1的存储器流模块107或图2的存储器流模块200用来控制和/或更新执行顺序和与对应于一致的存储器的存储器操作和对应于处理器(例如,处理器102)的NOCO功能单元的NOCO触发器相关联的依赖关系。方法500可以由处理逻辑执行,该处理逻辑可以包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等等)、软件、固件、或其组合。可另选地,计算系统100的其他组件可以执行方法300的某些或所有操作。
如图5所示,方法500可以以处理逻辑在框510获取存储器操作的系列(框510)和NOCO触发器操作的系列(框520)开始。例如,处理逻辑可以获取包括多个存储器操作和多个NOCO触发器操作的流。处理逻辑还可以进一步判断存储器操作是否正在被提升(框530)。例如,被包括在已获取的流中的特定存储器操作是否受制于全局观察(GlobalObserve),该全局观察可导致在CPU的外面分派的向一致的存储器的写入事务。如此,如果处理逻辑标识存储器操作被提升,那么,可以基于存储器操作的提升,在NOCO触发器操作和存储器操作之间添加依赖关系(框550)。例如,可能不允许执行特定NOCO触发器,直到被提升的存储器操作被执行并完成(例如,数据块被写入到一致的存储器)。然而,如果处理逻辑没有标识存储器操作被提升,那么,可以不向NOCO触发器操作的系列添加额外的依赖关系(框540)。
图6示出了根据本发明的一些实施例的检测NOCO触发器操作的示例架构600。一般而言,架构600可以是存储器流模块(例如,存储器流模块107或存储器流模块200)的一部分和/或以处理器或处理设备(例如,处理器100)的硬件来实现。架构600可以被用来标识存储器流中的NOCO触发器操作。在某些实施例中,NOCO触发器操作可以被视为一种写入事务(即,存储器映射的IO写入)。
如图6所示,架构600可包括非一致的存储器特定的寄存器(NOCOMSR)610、比较器630、逻辑门640以及转换后援缓冲器(TLB)650。在某些实施例中,NOCOMSR610可以指定与处理设备架构的NOCO部分相关联的存储器地址范围。例如,NOCOMSR可包括数据字段611、612、613以及614。在某些实施例中,NOCOMSR610的数据字段中的一个可以对应于与处理设备的NOCO部分相关联的物理地址范围。例如,数据字段613可以是指定处理设备架构的NOCO部分所使用的地址范围的非一致的物理地址(NOCOPHYADDR)。在某些实施例中,输入信号631可以对应于页漏失处理程序(PMH)。例如,处理设备可以遍历页面表以查看对于指定的虚拟地址,是否存在有效页面表条目。如果存在条目,则将该条目的地址与NOCOMSR610的NOCOPHYADDR数据字段613中的地址进行比较。例如,比较器630可以将来自NOCOMSR610的地址与来自PMH返回PHYADDR输入信号631的地址进行比较。如果比较器630输出“1”以指出来自输入信号631的地址匹配数据字段631的地址中的一个,启用信号632被设置为1,那么,逻辑门640(例如,AND门)可以输出要被存储在TLB中的比特。例如,TLB中的专用存储区字段可以被用来存储非一致的比特。如此,当读取TLB条目时,非一致的比特可以指出与TLB条目相关联的操作与处理设备架构的非一致的部分相关联。
图7示出了根据一实施例的包括管理存储器序列的逻辑电路的处理器700的微架构的框图。存储器流模块107和200可以在处理器700中实现。在一些实施例中,可将根据一个实施例的指令实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(例如,单精度和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端701是处理器700的部分,该部分取出要被执行的指令,并准备这些指令以便稍后在处理器流水线中使用。
前端701可包括若干单元。在一个实施例中,指令预取器716从存储器取出指令,并将指令馈送至指令解码器718,指令解码器随后解码或解释这些指令。例如,在一个实施例中,该解码器将接收到的指令解码为机器可执行的、被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,该解码器将指令解析为可由微架构用于执行根据一个实施例的多个操作的操作码以及对应的数据和控制字段。在一个实施例中,追踪高速缓存730接受经解码的微操作,并将它们组合为程序有序序列或uop队列734中的踪迹,以用于执行。当追踪高速缓存730遇到复杂指令时,微代码ROM732提供完成操作所需的uop。
一些指令被转换为单个微op,而其他指令需要若干个微op以完成完整的操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器718访问微代码ROM732以执行该指令。对于一个实施例,可将指令解码为少量的微op,以便在指令解码器718处进行处理。在另一实施例中,如果需要多个微op来完成操作,则可将指令存储在微代码ROM732中。追踪高速缓存730参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM732中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码ROM732完成对指令的微op进行的序列化操作之后,该机器的前端701恢复从追踪高速缓存730中提取微op。
无序执行引擎703是准备指令以进行执行的地方。无序执行逻辑具有多个缓冲器,这些缓冲器用于使指令流平滑并且重排序该指令流,以优化指令流往下进入流水线并且被调度以供执行时的性能。分配器逻辑分配每个微op需要的机器缓冲器和资源以用于执行。寄存器重命名逻辑将多个逻辑寄存器重命名为寄存器组中的多个条目。在指令调度器(存储器调度器、快速调度器702、慢速/通用浮点调度器704、简单浮点调度器706)之前,分配器也将每个微操作的条目分配入两个微操作队列中的一个,一个队列用于存储器操作,另一个队列用于非存储器操作。uop调度器702、704、706基于对它们的从属输入寄存器操作数源的准备状态以及微操作完成其操作所需的执行资源的可用性来确定uop何时就绪用于执行。一个实施例中的快速调度器702可在主时钟周期的每半个上进行调度,而其他调度器可在每个主处理器时钟周期上仅调度一次。调度器对分配端口进行仲裁以调度uop以便执行。在某些实施例中,无序执行引擎703和执行块711可以将指令的分配和完成/执行通知给引退单元。
在执行块710中,寄存器组708和712位于调度器702、704和706以及执行单元714、716、718、720、722和724之间。也存在单独的寄存器组708、710,分别用于整数和浮点操作。一个实施例中的每个寄存器组708、710也包括旁路网络,该旁路网络可绕开还未被写入到寄存器组中的、刚完成的结果或将这些结果转发到新的从属uop中。整数寄存器组708和浮点寄存器组710也能够彼此传递数据。对于一个实施例,将整数寄存器组708划分为两个单独的寄存器组,一个寄存器组用于低阶的32位数据,第二个寄存器组用于高阶的32位数据。一个实施例中的浮点寄存器组710具有128位宽的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块711包括执行单元712、714、716、718、720、722和724,实际在这些执行单元中执行指令。该区块包括存储微指令执行所需要的整数和浮点数据操作数值的寄存器组708和710。一个实施例的处理器700由若干个执行单元所组成。一个实施例的处理器200包括有若干个执行单元:地址生成单元(AGU)712、AGU714、快速ALU716、快速ALU718、慢速ALU720、浮点ALU722、浮点移动单元724。对于一个实施例,浮点执行块722和724执行浮点、MMX、SIMD、SSE以及其他操作。一个实施例中的浮点ALU712包括用于执行除法、平方根和余数微op的64位/64位的浮点除法器。对于本发明的多个实施例,可利用浮点硬件来处理涉及浮点值的指令。
在一个实施例中,ALU操作去往高速ALU执行单元716和718。一个实施例中的快速ALU716和718可执行有效等待时间为半个时钟周期的快速操作。对于一个实施例,大多数复杂整数操作去往慢速ALU720,因为慢速ALU720包括用于长等待时间类型操作的整数执行硬件,例如,乘法器、移位器、标记逻辑和分支处理设备。存储器加载/存储操作由AGU712和714来执行。对于一个实施例,在对64位的数据操作数执行整数操作的情境中描述整数ALU716、718和720。在替换实施例中,ALU716、718、720可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元722、724可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元722和724可结合SIMD和多媒体指令,对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,uop调度器702、704和706就分派从属操作。由于在处理器700中推测性地调度并执行uop,因此处理器700也包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在带着临时不正确的数据离开调度器的运行中的从属操作。重放机制跟踪并重新执行使用不正确数据的指令。仅仅从属操作需要被重放,而允许独立操作完成。也可将处理器的一个实施例的调度器和重放机制设计成用于捕捉指令序列,以用于文本串比较操作。
处理器700还包括根据一实施例的管理无序架构的检查点的逻辑。在一个实施例中,处理器700的执行块711可包括检查点模块200,以管理根据此处的描述的无序架构的检查点。
术语“寄存器”指代被用作指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些从处理器外部(从编程者的角度来看)可用的那些。然而,实施例中的寄存器不限于表示特定类型的电路。相反,实施例中的寄存器能够存储并提供数据,并且执行本文中所述的功能。在此所述的寄存器可由处理器中的电路使用任何数量不同技术来实现,诸如,专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例中的寄存器组也包含八个用于紧缩数据的多媒体SIMD寄存器。
对于以下讨论,应当将寄存器理解为设计成用于保持紧缩数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽的MMXTM寄存器(在一些实例中也称为‘mm’寄存器)。”这些MMX寄存器(可用在整数和浮点格式中)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器组中,或被包括在不同的寄存器组中。此外,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
各实施例可以以许多不同的系统类型来实现。现在参照图8,其中示出了根据一个实现的多处理器系统800的框图。如图8所示,多处理器系统800是点对点互连系统,并包括通过点对点互连850而耦合的第一处理器870和第二处理器880。如图8所示,处理器870和880中的每一个都可以是多核处理器,包括第一和第二处理器核,虽然潜在地更多核可以存在于处理器中。每一个处理器都可以包括根据本发明的实施例的混合型写入模式逻辑。在某些实施例中,存储器流模块107和200可以在多处理器系统800中实现。例如,存储器流模块107和200可以在处理器870和/或处理器880中实现。
虽然仅以两个处理器870,880示出,但是应当理解,本发明的范围不限于此。在其他实现中,在给定处理器中可存在一个或多个附加处理器。
处理器870和880被示出为分别包括集成存储器控制器单元882和882。处理器870也包括作为其总线控制器单元的部分的点对点(P-P)接口876和888;类似地,第二处理器880包括P-P接口886和888。处理器870和880可经由使用点对点(P-P)接口电路888和888的P-P接口850来交换信息。如图8所示,IMC882和882将处理器耦合到各自的存储器,即存储器832和存储器834,这些存储器可以是本地附连到各自处理器的主存储器的部分。
处理器870、880可各自经由使用点对点接口电路876、894、886、898的各个P-P接口852、854与芯片组890交换信息。芯片组890还可经由高性能图形接口839与高性能图形电路838交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组890可以经由接口896耦合至第一总线816。在一个实施例中,第一总线816可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图8所示,各种I/O设备814可连同总线桥818一起耦合到第一总线816,总线桥818将第一总线816耦合到第二总线820。在一个实施例中,第二总线820可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线820,在一个实施例中,这些设备包括例如键盘和/或鼠标822、通信设备827以及诸如可包括指令/代码和数据830的盘驱动器或其他大容量存储设备之类的存储单元828。此外,音频I/O824可耦合至第二总线820。注意,其他架构是可能的。例如,代替图8的点对点架构,系统可实现多点总线或者其他此类架构。
现在参照图9,所示出的是根据本发明实施例的第三系统900的框图。图8和9中的相同元件使用相同附图标记,且在图9中省略了图8的某些方面以避免遮挡图9的其它方面。
图9示出处理器970、980可分别包括集成存储器和I/O控制逻辑(“CL”)972和982。对于至少一个实施例,CL972、982可以包括集成存储器控制器单元。此外。CL972,982也可以包括I/O控制逻辑。图9示出了存储器932,934耦合到CL972,982,I/O设备915还耦合到控制逻辑972,982。传统I/O设备915被耦合至芯片组990。在某些实施例中,存储器流模块107和200可以在系统900中实现。例如,存储器流模块107和200可以在处理器970和/或处理器980中实现。
图10是可包括核1002中的一个或多个的示例性片上系统(SoC)。本领域已知的对膝上型计算机、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其他执行逻辑的多个系统和电子设备通常都是合适的。
现在参照图10,所示出的是根据本发明一个实施例的SoC2200的框图。图5中的相似组件具有相同的标号。另外,虚线框是更先进的SoC上的可选特征。在图10中,互连单元(多个)1002被耦合至:应用处理器1010,其包括一组一个或多个核1002A-N以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组一个或多个媒体处理器1020,其可包括集成图形逻辑1008、用于提供静止和/或视频照相功能的图像处理器1024、用于提供硬件音频加速的音频处理器1026、用于提供视频编码/解码加速的视频处理器1028、静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,其用于耦合至一个或多个外部显示器。在某些实施例中,存储器流模块107和200可以在SoC1000中实现。例如,存储器流模块107和200可以在应用处理器1010和/或核1002A-N中实现。
接下来参考图11,描绘了根据本发明的各实施例的片上系统(SOC)设计的实施例。作为一个说明性示例,SoC1100被包括在用户设备(UE)中。在一个实施例中,UE是指被最终用户用来进行通信的任何设备,诸如手持式电话、智能电话、平板电脑、超薄型的笔记本、带有宽带适配器的笔记本或任何其他类似的通信设备。UE可以连接到基站或节点,该基站或节点可以本质上对应于GSM网络中的移动站(MS)。在某些实施例中,存储器流模块107和200可以在SoC1100中实现。例如,存储器流模块107和200可以在核1106和/或核1107中实现。
这里,SOC1100包括2个核——1106和1107。类似于上面的讨论,核1106和1107可以符合指令集架构,诸如基于ArchitectureCoreTM的处理器、AdvancedMicroDevices,Inc.(AMD)处理器、基于MIPS的处理器、基于ARM或其顾客的处理器设计,以及它们的被许可方或采用者。核1106和1107耦合到与总线接口单元1108和L2缓存1109相关联的缓存控件1110,以与系统1100的其他部分进行通信。互连1111包括芯片内互连,诸如IOSF、AMBA,或上文所讨论的其他互连,它们可以实现所描述的公开的一个或多个方面。
互连1111提供到其他组件的通信信道,其他组件诸如与SIM卡连接的用户标识模块(SIM)1130、保存供核1106和1107执行以初始化和引导SOC1100的引导代码的引导ROM1135、与外部存储器(例如,DRAM1160)连接的SDRAM控制器1140、与非易失性存储器(例如,闪存1165)连接的闪存控制器1145、与外围设备连接的外围控制器1150(例如,串行外围接口)、显示和接收输入(允许触摸的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的GPU1115等等。这些接口中的任何一种可以包括此处所描述的各实施例的各方面。
另外,系统示出了用于通信的外围设备,诸如蓝牙模块1170、3G调制解调器1175、GPS1180以及Wi-Fi1185。请注意,如上所述,UE包括用于通信的无线装置。结果,这些外围通信模块可以不全部都被包括。然而,在UE中,应该包括某种形式的用于外部通信的无线装置。
图12示出了计算机系统1200的示例形式的机器的示意图,在该计算系统1200内,可以执行用于使机器执行此处所讨论的方法中的任何一个或多个的一组指令。在替换实施例中,机器可以连接(例如,联网)到LAN、内联网、外部网或因特网中的其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备,或在对等(或分布式)网络环境中作为对等机器来操作。该机器可以是个人电脑(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、服务器、网络路由器、交换机或桥、或者是任何能够执行指定盖机器执行的动作的指令(连续的或以别的方式)的任何机器。此外,虽然只示出单个机器,但是,术语“机器”也应当包括单独或联合地执行一组(或多组)指令以执行本文所讨论的任何一种或更多种方法的机器的任意集合。
计算系统1200包括处理设备1202、主存储器1204(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或RambusDRAM(RDRAM)等等)、静态存储器1206(例如,闪存、静态随机存取存储器(SRAM),等等),以及数据存储设备1218,它们通过总线1230相互进行通信。在某些实施例中,存储器流模块107和200可以在系统1200中实现。例如,存储器流模块107和200可以在处理设备1202中实现和/或存储在指令1226中。
处理设备1202可以表示一个或多个通用处理设备,诸如微处理器、中央处理单元等等。更具体而言,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1202还可以是一个或多个专用的处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。在一个实施例中,处理设备1202可以包括一个或多个处理核。处理设备1202被配置成执行用于执行此处所讨论的操作的处理逻辑1226。在一个实施例中,处理设备1202可以是图1的计算系统100的一部分。可另选地,计算系统1200可包括如此处所描述的其他组件。应当理解,核可支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用超线程技术的同步多线程操作)。
计算系统1200还可以包括以通信方式耦合到网络1220的网络接口设备1208。计算系统1200还可以包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)、信号生成设备1216(例如,扬声器),或其他外围设备。此外,计算系统1200还可以包括图形处理单元1222、视频处理单元1228以及音频处理单元1232。在另一个实施例中,计算系统1200可以包括芯片组(未示出),芯片组是指被设计为与处理设备1202一起协作并控制处理设备1202和外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是主板上的一组芯片,该组芯片将处理设备1202链接到非常高速度的设备(诸如主存储器1204和图形控制器),以及将处理设备1202链接到较低速度的外围设备的外围总线(诸如USB、PCI或ISA总线)。
数据存储设备1218可以包括计算机可读取的存储介质1224,在其上面存储了实现此处所描述的功能的方法中的任何一个或多个的软件1226。软件1226还可以在由计算系统1200执行过程中完全地或至少部分地作为指令1226驻留在主存储器1204内和/或作为处理逻辑驻留在处理设备1202内;主存储器1204和处理设备1202还构成计算机可读取存储介质。
计算机可读取存储介质1224也可以被用来使用诸如参考图1所描述的处理设备1202来存储指令1226和/或包含调用上面的应用的方法的软件库。虽然计算机可读介质1224在示例实施例中被示为单个介质,但术语“计算机可读介质”可以包括存储一个或多个指令集的单个或多个介质(如:集中式或分布式数据库及/或关联的缓存及服务器)。术语“计算机可读取存储介质”还应该被视为包括能够存储、编码或携带由机器执行的一组指令并且使机器执行各实施例的方法中的任何一个或多个的任何介质。术语“计算机可读介质”应当相应地包括,但不限于:固态存储器以及光和磁介质。
以下示例关于进一步的实施例。
示例1是处理器,包括存储器,耦合到存储器的一个或多个功能单元,以及耦合到存储器和功能单元中的一个或多个的存储器流模块。存储器流模块可操作,以接收与存储器相关联的多个操作,以及接收与一个或多个功能单元相关联的多个操作。此外,存储器流模块还可以确定与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作之间的依赖关系,创建与存储器相关联的多个操作的第一排序,基于依赖关系和与存储器相关联的第一排序,创建与一个或多个功能单元相关联的多个操作的第二排序。
在示例2中,在示例1的处理器中,与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作之间的依赖关系指定,与一个或多个功能单元相关联的多个操作中的至少一个操作将不执行,直到与存储器相关联的多个操作中的一个操作被执行完。
在示例3中,在示例1-2中的任一示例的处理器中,其中与存储器相关联的多个操作包括与存储器相关联的读取和写入操作,其中与一个或多个功能单元相关联的多个操作包括执行一个或多个功能单元中的至少一个以对存储在存储器中的数据进行操作的触发器。
在示例4中,在示例1-3中的任一示例的处理器中,与存储器相关联的写入操作将控制块存储在存储器中,控制块包括用于一个或多个功能单元的操作的指令。
在示例5中,在示例1-4中的任一示例的处理器中,存储器是一致的存储器,一个或多个功能单元是非一致的(NOCO)功能单元。
在示例6中,在示例1-5中的任一示例的处理器中,存储器流模块进一步基于第一排序和第二排序,执行与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作。
在示例7中,在示例1-6中的任一示例的处理器中,存储器流模块进一步从与存储器相关联的多个操作中标识写入操作的提升,基于提升的写入操作,确定与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作之间的第二依赖关系,并基于第二依赖关系,修改第二排序,其中第二依赖关系指定,与一个或多个功能单元相关联的多个操作中的至少一个将不执行,直到提升的写入操作被执行完。
在示例8中,在示例1-7中的任一示例的处理器中,第一排序包括按先后顺序的与存储器相关联的多个操作,第二排序包括按先后顺序的与一个或多个功能单元相关联的多个操作。
在示例9中,在示例1-8中的任一示例的处理器中,所述第一排序包括按顺序的与所述存储器相关联的所述多个操作,其中与所述存储器相关联的所述多个操作中的读取操作可以在与所述存储器相关联的所述多个操作中的在程序顺序方面比所述读取操作早的写入操作之前执行。第二排序包括按先后顺序的与一个或多个功能单元相关联的多个操作。
在示例10中,方法包括,由处理器的存储器序列模块,接收与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作。可以确定确定与所述存储器相关联的所述多个操作和与所述一个或多个功能单元相关联的所述多个操作之间的依赖关系。可以创建与存储器相关联的多个操作的第一排序,基于依赖关系和与存储器相关联的多个操作的第一排序,创建与一个或多个功能单元相关联的多个操作的第二排序。
在示例11中,在示例10的方法中,与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作之间的依赖关系指定,与一个或多个功能单元相关联的多个操作中的至少一个操作将不执行,直到与存储器相关联的多个操作中的一个操作被执行完。
在示例12中,在示例10-11中的任一示例的方法中,其中与存储器相关联的多个操作包括与存储器相关联的读取和写入操作,其中与一个或多个功能单元相关联的多个操作包括用于执行一个或多个功能单元中的至少一个以对存储在存储器中的数据进行操作的触发器。
在示例13中,在示例10-12中的任一示例的方法中,与存储器相关联的写入操作将控制块存储在存储器中,控制块包括用于一个或多个功能单元的操作的指令。
在示例14中,在示例10-13中的任一示例的方法中,存储器是一致的存储器,一个或多个功能单元是非一致的(NOCO)功能单元。
在示例15中,在示例10-14中的任一示例的方法中,该方法进一步包括,由存储器序列模块,基于第一排序和第二排序,执行与存储器相关联的多个操作,与一个或多个功能单元相关联的多个操作。
在示例16中,在示例10-15中的任一示例的方法中,该方法进一步包括,由存储器序列模块,从与存储器相关联的多个操作标识写入操作的提升,由存储器序列模块,基于提升的写入操作,确定与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作之间的第二依赖关系。此外,该方法还可以包括,由所述存储器序列模块,基于所述第二依赖关系,修改所述第二排序,其中所述第二依赖关系指定,与所述一个或多个功能单元相关联的所述多个操作中的至少一个将不执行,直到所述提升的写入操作被执行完。
在示例17中,在示例10-16中的任一示例的方法中,第一排序包括按先后顺序的与存储器相关联的多个操作,第二排序包括按先后顺序的与一个或多个功能单元相关联的多个操作。
在示例18中,在示例10-17中的任一示例的方法中,所述第一排序包括按顺序的与所述存储器相关联的所述多个操作,其中与所述存储器相关联的所述多个操作中的读取操作可以在与所述存储器相关联的所述多个操作中的在程序顺序方面比所述读取操作早的写入操作之前执行,第二排序包括按先后顺序排列的与一个或多个功能单元相关联的多个操作。
各实施例可以具有上文所描述的结构特征的不同的组合。例如,上文所描述的处理器和方法的所有可选的特征也可以利用此处所描述的处理器来实现,示例中的细节可以用于一个或多个实施例中的任何地方。
示例19是包括处理器核和存储器序列模块的集成电路。存储器序列模块将接收与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作,确定与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作之间的依赖关系,创建与存储器相关联的多个操作的第一排序,并且基于依赖关系和与存储器相关联的多个操作的第一排序,创建与一个或多个功能单元相关联的多个操作的第二排序。可以基于所述第一排序和所述第二排序,执行与所述存储器相关联的所述多个操作和与所述一个或多个功能单元相关联的所述多个操作。
在示例20中,在示例19的集成电路中,与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作之间的依赖关系指定,与一个或多个功能单元相关联的多个操作中的至少一个操作将不执行,直到与存储器相关联的多个操作中的一个操作被执行完。
在示例21中,在示例19-20中的任一示例的集成电路中,与存储器相关联的多个操作包括与存储器相关联的读取和写入操作,与一个或多个功能单元相关联的多个操作包括用于执行一个或多个功能单元中的至少一个以对存储在存储器中的数据进行操作的触发器。
在示例22中,在示例19-21中的任一示例的集成电路中,与存储器相关联的写入操作将控制块存储在存储器中,且控制块包括用于一个或多个功能单元的操作的指令。
在示例23中,在示例19-22中的任一示例的集成电路中,存储器流模块进一步从与存储器相关联的多个操作中标识写入操作的提升,基于提升的写入操作,确定与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作之间的第二依赖关系,并基于第二依赖关系,修改第二排序。第二依赖关系指定,与一个或多个功能单元相关联的多个操作中的至少一个将不执行,直到提升的写入操作被执行完。
各实施例可以具有上文所描述的操作特征的不同的组合。例如,上文所描述的方法的所有可选的特征也可以相对于非瞬时的计算机可读取的存储介质来实现。这些示例中的细节可以在一个或多个实施例的任何地方被使用。
示例24是包括指令的非瞬态计算机可读取的存储介质,所述指令在被处理器执行时使处理器执行示例10-18的方法。
示例25是包括片上系统(SOC)的系统,该片上系统包括多个功能单元,存储器,以及耦合到功能单元的存储器流模块,以接收与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作,确定与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作之间的依赖关系,创建与存储器相关联的多个操作的第一排序,基于依赖关系和与存储器相关联的多个操作的第一排序,创建与一个或多个功能单元相关联的多个操作的第二排序。
在示例26中,示例25的SOC进一步包括示例1-9的主题。
在示例27中,在示例25的SOC中,存储器流模块进一步可操作,以执行示例10-18的主题。
在示例28中,示例25的SOC进一步包括示例19-23的主题。
示例29是这样的设备:包括用于接收与存储器相关联的多个操作的装置、用于接收与一个或多个功能单元相关联的多个操作的装置、用于确定与存储器相关联的多个操作和与一个或多个功能单元相关联的多个操作之间的依赖关系的装置、用于创建与存储器相关联的多个操作的第一排序的装置、以及用于基于依赖关系和与存储器相关联的多个操作和第一排序,创建与一个或多个功能单元相关联的多个操作的第二排序的装置。
在示例30中,示例29的设备进一步包括示例1-9和20-23中的任一示例的主题。
示例31是包括存储器流模块的设备,其特征在于,存储器流模块被配置成执行示例10-18中的任一示例的方法。
在示例32中,示例31的设备进一步包括示例1-9和19-28中的任一示例的主题。
尽管是参考数量有限的实施例来描述本公开的,但是,本领域技术人员将从其中理解很多修改和变体。所附权利要求书涵盖所有这样的修改和变体都将在本发明的真正的精神和范围内。
在以下描述中,阐明了众多具体细节,如具体类型的处理器和系统配置的示例、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线阶段和操作等,以提供对本公开的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本公开。在其它实例中,未详细描述公知的组件或方法,诸如具体或替代的处理器体系结构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、代码中算法的具体表达、具体掉电和功率限制技术/逻辑、以及计算机系统的其它具体操作细节,以避免不必要地模糊本发明。
各实施例是参考特定集成电路(诸如计算平台或微处理器中的)中的缓存存储器数据压缩和解压缩来描述的。各实施例也可以适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的各实施例不仅限于台式计算机系统或便携式计算机,诸如UltrabooksTM计算机。并且也可用于其它设备,诸如,手持式设备、平板、其他薄笔记本、片上系统(SOC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、因特网协议设备、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可执行以下教导的功能和操作的任何其他系统。描述了系统可以是任何类型的计算机或嵌入式系统。所公开的各实施例可以特别用于低端设备,诸如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监视控制和数据采集(SCADA)系统等等。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将在以下描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是它们的组合)对于用性能考量来平衡的‘绿色技术’的前景是至关重要的。
虽然参照处理器来描述多个实施例,但是其他实施例也适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于可受益于更高的流水线吞吐量和改善的性能的其他类型的电路或半导体器件。本发明的多个实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位、或16位数据运算的处理器或机器,并可适用于执行数据操纵或管理的任何处理器和机器。此外,此处的描述提供了示例,并且附图出于示意性目的示出各种示例。然而,这些示例不应该被理解为具有限制性意义,因为它们仅仅旨在提供本发明的多个实施例的示例,而并非对本发明的多个实施例的所有可能的实现方式进行穷举。
虽然下述的示例是在执行单元和逻辑电路情境下描述指令处理和分配,但本发明的其他实施例也可通过存储在机器可读有形介质上的数据和/或指令来完成,这些数据和/或指令在被机器执行时使得机器执行与本发明至少一个实施例相一致的功能。在一个实施例中,与本发明的多个实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令而被编程的通用处理器或专用处理器执行本发明的步骤。本发明的多个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程以执行根据本发明的多个实施例的一个或多个操作。或者,本发明的多个实施例的多个操作可由包含用于执行这些操作的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
可将用于对逻辑进行编程以执行本发明的多个实施例的指令存储在系统中的存储器中(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,计算机可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计会经历多个阶段,从创建到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,像仿真中有用的那样,可使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁或光存储设备(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光或电波来发送的,调制或以其他方式生成这些光或电波以传送这些信息。当发送指示或承载代码或设计的电载波达到实现该电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实施例的技术的项目(诸如,编码在载波中的信息)。
在本文中使用的模块指的是硬件、软件、和/或固件的任意组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微处理器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。
在一个实施例中,使用短语‘被配置成’指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定和/或所确定的任务。在该示例中,没有操作的装置或其元件仍然‘被配置成’执行指定任务,如果它被设计、耦合、和/或互连以执行所述指定任务的话。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但‘被配置成’向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。而是,该逻辑门是以在操作期间所输出的1或0用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语‘被配置成’不要求操作,而是集中于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用术语‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上注意的,在一个实施例中,用于、能够、或能用于指的是装置、逻辑、硬件、和/或元件的潜在状态,潜在该装置、逻辑、硬件、和/或元件没有正在操作而是被以如下方式设计:以指定方式来启用装置的使用。
如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其它表示。例如,十进制数十还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,复位,而更新的值潜在地包括低逻辑值,即,设置。注意,可以使用值的任何组合来表示任意数量的状态。
上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取、机器可读、计算机可存取、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可存取介质包括:诸如静态RAM(SRAM)或动态RAM(DRAM)之类的随机存取存储器(RAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;其它形式的用于保持从瞬态(传播)信号(例如载波、红外信号、数字信号)接收的信息的存储设备;等等,这些与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本公开的诸个实施例的指令可被存储在系统的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)中。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,计算机可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定指的是同一实施例。而且,特定特征、结构、或特性可按照任何合适的方式在一个或多个实施例中组合。
在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。相应地,应当将说明书和附图应认为是说明性的而不是限制性的。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。
以对计算机存储器内数据位的操作的算法和符号表示,来呈现详细的描述的一些部分。这些算法描述和表示是计算机领域内技术人员使用的手法,它最有效地将其工作本质传达给本领域内其它技术人员。算法,这里一般是指导致所希望的结果的操作的独立的序列。这些操作是需要对物理量进行物理操控的操作。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操控的电信号或磁信号的形式。主要出于常见用途的考虑,将这些信号称为位、值、要素、符号、字符、项、数字等被证明是方便的。此处所描述的块可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些和/或类似的术语用于与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非明确指明,从上文的讨论中显而易见地看出,可以理解,在全文中,利用诸如“定义”、“接收”、“确定”、“发出”、“链接”、“关联”、“获取”、“认证”、“禁止”、“执行”、“请求”、“通信”等术语的讨论,指的是计算系统或类似电子计算设备的动作和进程,该计算系统或类似电子计算设备操纵在该计算系统的寄存器和存储器内表示为物理(电子)量的数据并将其转换成在该计算系统存储器或寄存器或其他这样的信息存储、传输或显示设备内类似地表示为物理量的其他数据。
在本文中使用的词语“示例”或“示例性”意味着用作示例、实例或说明。在此被描述为“示例”或“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。相反,使用词语“示例”或“示例性”旨在以具体的方式呈现各个概念。如在该申请中使用的,术语“或”旨在表示包含的“或”,而不是排它的“或”。也就是说,除非根据上下文另有指定或显而易见,否则“X包括A或B旨在表示任何自然包含性置换。即,如果X包括A;X包括B;或X包括A和B两者;则在任何前述的情况下满足“X包括A或B。”此外,该申请和所附权利要求中使用的冠词“一”和“一个”一般应当被解释为表示“一个或多个”,除非根据上下文另有规定或明确指示为单数形式。此外,术语“实施例”或“一个实施例”或“实现”或“一个实现”不旨在意指同一个实施例或实现,除非这样描述。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等等旨在用作区别不同的元件的标记,可以不一定具有根据它们的数字表示的序数含义。

Claims (14)

1.一种方法,包括:
由处理器的存储器序列模块,接收与所述存储器相关联的多个操作;
由所述存储器序列模块,接收与所述一个或多个功能单元相关联的多个操作;
由所述存储器序列模块,确定与所述存储器相关联的所述多个操作和与所述一个或多个功能单元相关联的所述多个操作之间的依赖关系;
由所述存储器序列模块,创建与所述存储器相关联的所述多个操作的第一排序;以及
由所述存储器序列模块,基于所述依赖关系和与所述存储器相关联的所述多个操作的所述第一排序,创建与所述一个或多个功能单元相关联的所述多个操作的第二排序。
2.如权利要求1所述的方法,其特征在于,与所述存储器相关联的所述多个操作和与所述一个或多个功能单元相关联的所述多个操作之间的所述依赖关系指定,与所述一个或多个功能单元相关联的所述多个操作中的至少一个操作将不执行,直到与所述存储器相关联的所述多个操作中的一个操作被执行完。
3.如权利要求1所述的方法,其特征在于,与所述存储器相关联的所述多个操作包括与所述存储器相关联的读取和写入操作,其中与所述一个或多个功能单元相关联的所述多个操作包括用于执行所述一个或多个功能单元中的至少一个以对存储在所述存储器中的数据进行操作的触发器。
4.如权利要求3所述的方法,其特征在于,与所述存储器相关联的所述写入操作将控制块存储在所述存储器中,其中所述控制块包括用于所述一个或多个功能单元的所述操作的指令。
5.如权利要求1所述的方法,其特征在于,所述存储器是一致的存储器,所述一个或多个功能单元是非一致的(NOCO)功能单元。
6.如权利要求1所述的方法,其特征在于,进一步包括:
由所述存储器序列模块,基于所述第一排序和所述第二排序,执行与所述存储器相关联的所述多个操作和与所述一个或多个功能单元相关联的所述多个操作。
7.如权利要求1所述的方法,其特征在于,进一步包括:
由所述存储器序列模块,标识来自与所述存储器相关联的所述多个操作的写入操作的提升;
由所述存储器序列模块,基于所述提升的写入操作,确定与所述存储器相关联的所述多个操作和与所述一个或多个功能单元相关联的所述多个操作之间的第二依赖关系;以及
由所述存储器序列模块,基于所述第二依赖关系,修改所述第二排序,其中所述第二依赖关系指定,与所述一个或多个功能单元相关联的所述多个操作中的至少一个将不执行,直到所述提升的写入操作被执行完。
8.如权利要求1所述的方法,其特征在于,所述第一排序包括按先后顺序的与所述存储器相关联的所述多个操作,所述第二排序包括按先后顺序的与所述一个或多个功能单元相关联的所述多个操作。
9.如权利要求1所述的方法,其特征在于,所述第一排序包括按顺序的与所述存储器相关联的所述多个操作,其中与所述存储器相关联的所述多个操作中的读取操作可以在与所述存储器相关联的所述多个操作中的在程序顺序方面比所述读取操作早的写入操作之前执行,其中所述第二排序包括按先后顺序的与所述一个或多个功能单元相关联的所述多个操作。
10.包括多个指令的至少一个机器可读介质,响应于在计算设备上执行,所述指令使得所述计算设备执行根据权利要求1到9中的任一项所述的方法。
11.一种系统,包括其中包括存储器设备的片上系统(SOC)和其中包括存储器序列模块的处理器,其特征在于,所述存储器序列模块被配置成执行如权利要求1到9中任一项所述的方法。
12.一种装置,包括:
用于接收与所述存储器相关联的多个操作的装置;
用于接收与所述一个或多个功能单元相关联的多个操作的装置;
用于确定与所述存储器相关联的所述多个操作和与所述一个或多个功能单元相关联的所述多个操作之间的依赖关系的装置;
用于创建与所述存储器相关联的所述多个操作的第一排序的装置;以及
用于基于所述依赖关系和与所述存储器相关联的所述多个操作的所述第一排序,创建与所述一个或多个功能单元相关联的所述多个操作的第二排序的装置。
13.如权利要求12所述的设备,其特征在于,进一步包括如权利要求1-9中的任一项所述的主题。
14.一种系统,包括:
存储器设备以及其中包括存储器序列模块的处理器,其特征在于,所述处理器被配置成执行如权利要求1-9中的任一项所述的方法。
CN201510313396.XA 2014-07-09 2015-06-09 用于操作处理的方法、系统和设备 Expired - Fee Related CN105320494B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/327,109 US9875185B2 (en) 2014-07-09 2014-07-09 Memory sequencing with coherent and non-coherent sub-systems
US14/327,109 2014-07-09

Publications (2)

Publication Number Publication Date
CN105320494A true CN105320494A (zh) 2016-02-10
CN105320494B CN105320494B (zh) 2018-10-26

Family

ID=54867007

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510313396.XA Expired - Fee Related CN105320494B (zh) 2014-07-09 2015-06-09 用于操作处理的方法、系统和设备

Country Status (4)

Country Link
US (2) US9875185B2 (zh)
CN (1) CN105320494B (zh)
DE (1) DE102015007423A1 (zh)
TW (1) TWI567555B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918486A (zh) * 2020-07-07 2022-01-11 爱思开海力士有限公司 冗余资源比较器、总线结构、电路以及对应的比较方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
US9886934B2 (en) * 2014-12-24 2018-02-06 Intel Corporation Ordering mechanism for offload graphics scheduling

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1490730A (zh) * 2002-10-16 2004-04-21 国际商业机器公司 非均匀存储器访问计算机系统的可重构高速缓存控制器
CN1669011A (zh) * 2002-05-14 2005-09-14 微米技术有限公司 无序的动态随机存取存储器序列器
CN1728087A (zh) * 2004-07-30 2006-02-01 英特尔公司 用排序向量实施存储器排序模型的方法与设备
CN101916227A (zh) * 2010-08-13 2010-12-15 中兴通讯股份有限公司 一种rldram sio存储器访问控制方法和装置
US20130024630A1 (en) * 2011-07-19 2013-01-24 Arm Limited Terminating barriers in streams of access requests to a data store while maintaining data consistency
WO2013162594A1 (en) * 2012-04-27 2013-10-31 Hewlett-Packard Development Company, L.P. Shielding a memory device
US20130346698A1 (en) * 2012-06-26 2013-12-26 Arm Limited Data processing apparatus and method for reducing storage requirements for temporary storage of data

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317813B1 (en) * 1999-05-18 2001-11-13 Silicon Integrated Systems Corp. Method for arbitrating multiple memory access requests in a unified memory architecture via a non unified memory controller
US20080288178A1 (en) * 2001-08-24 2008-11-20 Applera Corporation Sequencing system with memory
DE102004031497A1 (de) * 2004-06-30 2006-05-18 Schaeffler Kg Profilschienenführung
US7623365B2 (en) * 2007-08-29 2009-11-24 Micron Technology, Inc. Memory device interface methods, apparatus, and systems
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US8086806B2 (en) * 2008-03-24 2011-12-27 Nvidia Corporation Systems and methods for coalescing memory accesses of parallel threads
US8352682B2 (en) * 2009-05-26 2013-01-08 Qualcomm Incorporated Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
US9453197B2 (en) * 2010-12-16 2016-09-27 General Electric Company Methods of making cell carrier
CN102834807B (zh) * 2011-04-18 2015-09-09 华为技术有限公司 多处理器系统负载均衡的方法和装置
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1669011A (zh) * 2002-05-14 2005-09-14 微米技术有限公司 无序的动态随机存取存储器序列器
CN1490730A (zh) * 2002-10-16 2004-04-21 国际商业机器公司 非均匀存储器访问计算机系统的可重构高速缓存控制器
CN1728087A (zh) * 2004-07-30 2006-02-01 英特尔公司 用排序向量实施存储器排序模型的方法与设备
CN101916227A (zh) * 2010-08-13 2010-12-15 中兴通讯股份有限公司 一种rldram sio存储器访问控制方法和装置
US20130024630A1 (en) * 2011-07-19 2013-01-24 Arm Limited Terminating barriers in streams of access requests to a data store while maintaining data consistency
WO2013162594A1 (en) * 2012-04-27 2013-10-31 Hewlett-Packard Development Company, L.P. Shielding a memory device
US20130346698A1 (en) * 2012-06-26 2013-12-26 Arm Limited Data processing apparatus and method for reducing storage requirements for temporary storage of data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918486A (zh) * 2020-07-07 2022-01-11 爱思开海力士有限公司 冗余资源比较器、总线结构、电路以及对应的比较方法

Also Published As

Publication number Publication date
CN105320494B (zh) 2018-10-26
US9875185B2 (en) 2018-01-23
TW201617889A (zh) 2016-05-16
TWI567555B (zh) 2017-01-21
DE102015007423A1 (de) 2016-01-14
US20180173628A1 (en) 2018-06-21
US20160011977A1 (en) 2016-01-14
US10261904B2 (en) 2019-04-16

Similar Documents

Publication Publication Date Title
TWI725077B (zh) 用於排序的處理器、系統和方法
US10534613B2 (en) Supporting learned branch predictors
TWI729019B (zh) 處理裝置、系統單晶片、非暫時性機器可讀儲存媒體及用於排序之方法
KR101923289B1 (ko) 스토어들을 소팅 및 리타이어링하기 위한 명령어와 로직
CN104049941A (zh) 跟踪指令的控制流程
US10635447B2 (en) Scatter reduction instruction
CN105793819A (zh) 包括混合处理器核的片上系统(soc)
TW201729078A (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
EP3394737B1 (en) Processing devices to perform a key value lookup instruction
CN104995599A (zh) 使用硬件与软件组合的路径概况分析
CN104049950A (zh) 带有旁路多个实例化表的移动消除的系统和方法
CN108351811A (zh) 调度高度并行的应用
CN108369517A (zh) 聚合分散指令
US10691454B2 (en) Conflict mask generation
US10261904B2 (en) Memory sequencing with coherent and non-coherent sub-systems
KR20160113677A (ko) 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법
RU2644528C2 (ru) Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности
CN108369508A (zh) 使用处理器指令前缀的二进制转换支持
US20170185413A1 (en) Processing devices to perform a conjugate permute instruction
CN108292219A (zh) 浮点(fp)加法低指令功能单元
TWI724066B (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181026