带有一致的和非一致的子系统的存储器排序的制作方法
【技术领域】
[0001] 此处所描述的各实施例一般涉及存储器排序,更具体而言,涉及带有一致的和非 一致的子系统的存储器排序。
【背景技术】
[0002] 处理设备可以基于包括存储器和功能单元的架构。处理设备的处理器核可以将处 理任务或功能指定到功能单元。例如,处理核可以将数据存储在存储器中,还可以在它被存 储在存储器中之后进一步向功能单元发出对数据执行操作的命令。
[0003] 附图简述
[0004] 图1是示出了根据一些实施例的实现存储器流模块以提供存储器定序或排序的 计算系统的框图。
[0005] 图2是根据本发明的一些实施例的存储器流模块的框图。
[0006] 图3是根据一些实施例的执行存储器操作和非一致的(NOCO)触发器的方法的流 程图。
[0007] 图4A示出了根据一些实施例的存储器操作和NOCO触发器的示例序列。
[0008] 图4B示出了根据一些实施例的存储器操作和NOCO触发器的另一示例序列。
[0009] 图4C示出了根据一些实施例的存储器操作和NOCO触发器的另一示例序列。
[0010] 图5示出了根据本发明的一些实施例的基于存储器操作的提升,将依赖关系添加 到存储器操作和NOCO触发器的序列的方法。
[0011] 图6示出了根据本发明的一些实施例的检测NOCO触发器的示例架构。
[0012] 图7示出了根据一实施例的包括管理与无序指令流水线相关联的检查点的逻辑 电路的处理器的微架构的框图。
[0013] 图8是根据一个实现的计算机系统的框图;
[0014] 图9为根据另一实现的的计算机系统的框图。
[0015] 图10是根据一实现的片上系统的框图。
[0016] 图11示出了计算系统的框图的另一实现。
[0017] 图12示出了计算系统的框图的另一实现。
【具体实施方式】
[0018] 本发明的各方面涉及带有一致的和非一致的子系统或部分的处理架构中的存储 器排序技术。存储器排序技术可以被用来改善处理器、处理设备或基于处理器的系统的性 能。例如,存储器排序技术可以被用来通过定义在处理设备的不同的部件之间的操作(例 如,存储器读取事务和存储器写入事务)之间实施的属性,来改善处理设备的性能。处理设 备可包括处理器核、多个功能单元以及存储器。处理器核可以卸载要由功能单元执行的任 务。例如,处理器核可以发出对应于将指令或命令和数据存储在存储器中的第一操作,并可 以基于存储在存储器中的指令或命令,发出对应于将命令(即,触发器)传输到功能单元以 对数据执行功能或操作的第二操作。处理设备可包括存储器流模块,该存储器流模块包括 功能块,功能块可以被用来基于与处理设备的存储器相关联的操作,定义与一个或多个功 能单元相关联的操作的依赖关系。
[0019] 处理设备可包括非一致的子系统或部分和一致的子系统或部分。例如,处理设备 的存储器可以是一致的子系统的一部分,而一个或多个功能单元可以是非一致的子系统的 一部分。这样的存储器可以被称为一致的存储器,而这样的功能单元可以被称为非一致的 (NOCO)功能单元。NOCO功能单元可以是在处理器核的外面的功能单元。例如,处理器核可 包括功能单元,NOCO功能单元可以在处理器核外部。NOCO功能单元也可以被称为加速器或 固定功能块。一致的和非一致的可以是指一致性模型。在某些实施例中,一致性模型可以 定义存储器操作的规则(例如,向存储器的写入事务和由功能单元从存储器检索数据的读 取事务)。例如,一致的存储器可以是指由一个或多个执行或功能单元或处理器读和/或写 的存储器,而非一致的功能单元可以是指存储和一致的存储器分离的数据的分离的副本或 与之相关联的功能单元。这样的功能单元也可以被称为加速器。如此,包括一致的存储器 和一个或多个非一致的功能单元两者的处理设备可以被称为一致的和非一致的系统。在某 些实施例中,与一致的存储器相关联的操作可以被称为存储器操作(例如,对于一致的存 储器的读取或写入事务),与非一致的功能单元相关联的操作可以被称为NOCO触发器。相 应地,由于NOCO功能单元和一致的存储器正在对相同数据的分开地存储的副本进行操作, 因此,使用数据执行的操作可能要求某些依赖关系,以便维护为操作定义的规则。
[0020] 现代的基于微处理器的产品,包括片上系统(SoC)、客户端、服务器以及硬件加速 器,可以使用包括一致的存储器和非一致的功能单元的处理架构。存储器排序模块可以被 用来定义与一致的存储器相关联的操作和与非一致的功能单元相关联的操作之间的交互。 在某些实施例中,存储器排序模块可以被用来定义对于NOCO功能单元的操作(例如,NOCO 触发器)和对于一致的存储器的操作(例如,存储器操作)之间的依赖关系。在某些实施 例中,NOCO触发器可以是NOCO功能单元检索存储在一致的存储器中的命令或指令的命令。 存储在一致的存储器中的这样的命令或指令可以被称为控制块(CB)。如此,来自处理器核 的第一操作(例如,存储器操作)可以对应于向一致的存储器写入或读取控制块,来自处理 器核的第二操作(例如,NOCO触发器)可以对应于从一致的存储器读取和检索控制块,以及 要由NOCO功能单元执行的随后的操作。如此,NOCO功能单元的NOCO触发器可以取决于一 致的存储器操作。在某些实施例中,这样的依赖关系可以是指NOCO功能单元的NOCO触发 器不由处理核执行或向NOCO功能单元传输,直到一致的存储器的特定存储器操作被完成。
[0021] 如下面进一步详细描述的,存储器流模块可以提供一致的存储器的存储器操作的 第一流或序列,和NOCO功能单元的NOCO触发器的第二流或序列。在某些实施例中,NOCO功 能单元的NOCO触发器的第二流或序列可以取决于一致的存储器的存储器操作的第一流或 序列。例如,在一致的存储器的较旧的存储器操作(例如,较早地发出的读取事务)被执行 完之前,NOCO功能单元的触发器可以被限制执行。
[0022] -致的存储器的存储器操作和NOCO功能单元的触发器之间的这样的排序可以改 善包括一致的子系统和非一致的子系统两者的处理设备的总体性能。例如,存储器流模块 所使用的一致性模型可以为一致的存储器创建第一流,其中,第一流可以允许操作的无序 执行(例如,特定事务可以在较早的事务之前执行),而让NOCO功能单元的另一流按比较连 续和有序方式执行,也部分地依赖于存储器操作。这样的一致性模型可以允许更快地执行 存储器操作,同时也使用NOCO功能单元。
[0023] 图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的更多 细节。
[0024] 根据此处所描述的各实施例,计算系统100包括诸如处理器102之类的组件来使 用包括执行用于处理数据的算法的逻辑的执行单元108。系统100代表基于可从美国加利 福尼亚州圣克拉拉市的英特尔公司获得的PENTIUM III?、PENTIUM 4?、Xeon?、Itanium、 XScale?和/或StrongARM ?微处理器的处理系统,不过也可使用其它系统(包括具有其它 微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本计算系统100可执行可从 美国华盛顿州雷蒙德市的微软公司买到的WINDOWS?操作系统的一个版本,不过也可使用 其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的各 实施例不限于硬件电路和软件的任何具体组合。
[0025] 实施例不限于计算机系统。本发明的替代实施例可用于其他设备,诸如手持式设 备和嵌入式应用。手持式设备的一些示例包括,但不仅限于:蜂窝电话、互联网协议设备、数 码相机、个人数字助理(PDA)、手持式PC。嵌入式应用可包括,但不仅限于:微控制器、数字 信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换 机、或可执行参照至少一个实施例的一个或多个指令的任何其他系统。
[0026] 在图1所示出的实施例中,处理器102包括实现将执行至少一个指令的算法的一 个或多个执行单元108。可在单处理器桌面或服务器系统的情境中描述一个实施例,但是可 将替代实施例包括在多处理器系统中。系统100是"中枢"系统架构的示例。计算机系统 100包括用于处理数据信号的处理器102。处理器102,作为一个说明性示例,包括,例如,复 杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW) 微处理器、实现多个指令集组合的处理器、基于无序的处理器、或任意其他处理器设备(例 如,数字信号处理器)。处理器102耦合到在处理器102及系统100中的其他组件(诸如 存储指令、数据,或其任何组合的主存储器120)之间传输数据信号的处理器总线110。系 统100的其他组件可包括,但不仅限于,图形加速器、存储器控制器中枢、I/O控制器中枢、 无线收发器、闪存BIOS、网络控制器、音频控制器、串行扩展端口,以及I/O控制器。这些要 素执行本领域所熟知的常规功能。
[0027] 在一个实施例中,处理器102包括第一级(LI)内部高速缓存存储器104。取决于 架构,处理器102可具有单个内部高速缓存存储器或多级内部高速缓存存储器(例如,Ll和 L2)。其他实施例包括内部高速缓存和外部高速缓存的组合,这取决于特定实现和需求。寄 存器组106将不同类型的数据存储在各种寄存器中,包括,但不限于,整数寄存器、浮点寄 存器、向量寄存器、分组寄存器、影子寄存器(shadow register)、检查点寄存器、状态寄存 器、配置寄存器,以及指令指针寄存器。
[0028] 执行单元108(包括用于执行整数和浮点操作的逻辑)也驻留在处理器102中。 应该指出的是,执行单元可以或可以不具有浮点单元。在一个实施例中,处理器102包括存 储微代码的微代码(μ code) R0M,该微代码在被执行时将执行某些宏指令的算法或处理复 杂情况。这里,微代码是潜在地可更新的,以为处理器102处理逻辑缺陷/修补。执行单元 108的替代实施例也可被用于微控制器、嵌入式处理器、图形设备、DSP以及其他类型的逻 辑电路。
[0029] 系统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设备、闪存设备、或其他大容量存储设备。
[0030] 对于系统的另一个实施例,存储器流模块107可以与片上系统一起使用。用于一 个这样的系统的存储器可以是闪存存储器。闪存存储器可位于与处理器和其他系统组件相 同的管芯上。此外,诸如存储器控制器或图形控制器之类的其他逻辑块也可位于芯片上系 统上。
[0031] 片上系统的一个实施例包括处理器核、一致的存储器(例如,存储器120)以及一 个或多个非一致的功能单元(例如,N0C0功能单元130)。在某些实施例中,处理器核可包括 控制存储器120的存储器操作以及N0C0功能单元130的N0C0触发器的存储器流模块107。 例如,在某些实施例中,处理器核可以将事务或操作传输到一致的存储器120和N0C0功能 单元130。在某些实施例中,处理器核可以将存储器操作(例如,读取或写入事务)传输到 一致的存储器。存储器操作可以是将指令和命令存储到存储器中。这样的指令和命令可以 被称为控制块(CB)。在某些实施例中,CB可以存储在一致的存储器120的预定义的和特定 区域。处理器核还可以进一步将N0C0触发器操作传输到N0C0功能单元130中的一个。例 如,N0C0触发器操作可以通过由处理器102的处理器核所发出的存储器