CN107667358B - 用于在多个拓扑结构中使用的装置及其方法 - Google Patents
用于在多个拓扑结构中使用的装置及其方法 Download PDFInfo
- Publication number
- CN107667358B CN107667358B CN201680030441.3A CN201680030441A CN107667358B CN 107667358 B CN107667358 B CN 107667358B CN 201680030441 A CN201680030441 A CN 201680030441A CN 107667358 B CN107667358 B CN 107667358B
- Authority
- CN
- China
- Prior art keywords
- memory
- fabric
- mode
- modes
- logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000015654 memory Effects 0.000 claims abstract description 229
- 239000004744 fabric Substances 0.000 claims abstract description 181
- 238000012545 processing Methods 0.000 claims abstract description 35
- 230000001427 coherent effect Effects 0.000 claims description 130
- 230000004044 response Effects 0.000 claims description 41
- 239000000872 buffer Substances 0.000 claims description 29
- 239000004065 semiconductor Substances 0.000 claims description 24
- 230000009471 action Effects 0.000 claims description 10
- 230000002123 temporal effect Effects 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 2
- 230000001960 triggered effect Effects 0.000 claims 1
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000014616 translation Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 101100452681 Arabidopsis thaliana INVD gene Proteins 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1048—Scalability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了具有支持多个拓扑结构的结构互连的装置和使用相同结构互连的方法。在一个实施例中,装置包括模式存储器,所述模式存储器用于存储指示多个模式中的一个模式的信息;以及第一结构,其在多个模式中可进行操作,其中,所述结构包括耦合至模式存储器的逻辑,所述逻辑用于根据由信息指示标识的模式来控制对由第一结构接收到的向存储器的读取请求和写入请求的处理。
Description
技术领域
本发明的实施例涉及计算系统的领域;较具体地,本发明的实施例涉及具有用于将多个设备耦合至存储器的结构的系统。
背景技术
当计算系统处于发展时,其中组件正变得愈加复杂。结果,用于在组件之间进行耦合和通信的互连架构的复杂度也在增加以确保带宽要求被满足用于最佳组件操作。此外,不同的市场区段需要互连架构的不同方面以适应市场的需求。
片上系统(SoC)包括用于将不同设备连接至系统存储器的结构互连。SoC利用不同的结构互连拓扑结构。这些结构是相干结构。所选择的SoC 拓扑结构的一个关键特性是存储器控制器的连接性。在一些拓扑结构中,存储器控制器直接连接至相干结构使得系统中的所有中央处理单元(CPU) 和知识产权核(IP)见到存储器的相干和一致的视图。在该拓扑结构中,高速缓存代理(例如,CPU中的高速缓存代理)中的硬件和相干结构中的硬件积极地管理高速缓存的状态使得SoC中的所有代理观察存储器的一致视图。
在其它拓扑结构中,存储器控制器连接至非相干结构或者直接连接至 IP,允许IP在不遍历相干结构的情况下来对存储器进行存取。在该拓扑结构中,软件根据指令集架构(英特尔架构(IA)指令集架构)使用排序同步、存储器围栏和高速缓存刷新操作来管理可高速缓存的数据何时以及如何变得对SoC中的所有代理可见。在该拓扑结构中,硬件也被添加至相干互连结构,其响应于软件启动的事务以确保这些软件启动的排序事务被适当地处理。
因此,这些SoC不同的拓扑结构使用专门的相干结构,一个结构针对每一拓扑结构。所需的用于支持多个不同类型的结构的成本和设定时间并非小数。
附图说明
根据以下所给的具体实施方式并且根据发明的各种实施例的附图,本发明将较充分地被理解,然而,这不应该被当作将发明限制于特定的实施例,而是仅用于解释和理解。
图1是具有多核处理器的计算系统的一个实施例的框图。
图2是相干结构的一个实施例的框图。
图3A-图3C示出了图2的相干结构支持的不同拓扑结构。
图4示出了针对相干结构的一个实施例的在操作的不同模式中执行的排序和相干性操作
图5示出了由相干结构的一个实施例支持的另一拓扑结构。
图6是用于支持多个拓扑结构的过程的一个实施例的流程图。
具体实施方式
在以下描述中,阐明了许多具体细节,例如,处理器和系统配置的具体类型、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线阶段和操作等的示例,以便提供对本发明的透彻理解。然而,将显而易见的是,对于本领域技术人员而言,不需要采用这些具体细节来实践本发明。在其它实例中,公知的组件或方法,例如,特定和替代的处理器架构、针对所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实施方式、代码中的算法的特定表达、特定断电和门控技术/逻辑、以及计算机系统的其它特定操作细节未被具体地描述,以便避免不必要地模糊本发明。
虽然以下实施例可以参照在诸如计算平台或微处理器中之类的具体集成电路中的节能和能源效率来进行描述,但是其它实施例可应用于其它类型的集成电路和逻辑设备。相似的技术和本文中所描述的实施例的教导可以应用于还可以受益于较好的能源效率和节能的其它类型的电路或半导体设备。例如,所公开的实施例不限于桌上型计算机系统或超极本TM并且还可以在诸如手持设备、平板、其它薄笔记本、片上系统(SOC)设备以及嵌入式应用之类的其它设备中使用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(PDA)以及手持PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中心、广域网(WAN)交换机、或者可以执行以下所教导的功能和操作的任意其它系统。
图1是包括多核处理器的计算系统的一个实施例的框图。处理器100 包括任意处理器或处理设备,例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)、或用于执行代码的其它设备。在一个实施例中,处理器100 包括至少两个核--核101和102,所述核可以包括非对称核或对称核(所示出的实施例)。然而,处理器100可以包括任意数量的可以是对称或非对称的处理元件。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持处理器的状态(诸如执行状态或架构状态)的任意其它元件。换言之,在一个实施例中,处理元件指的是能够独立地与诸如软件线程、操作系统、应用或其它代码之类的代码相关联的任意硬件。物理处理器(或处理器套接字)典型地指的是集成电路,所述集成电路可能包括任意数量的诸如核或硬件线程之类的其它处理元件。
核经常指的是位于能够维持独立架构状态的集成电路上的逻辑,其中,每个独立维持的架构状态与至少一些专用的执行资源相关联。相比于核,硬件线程典型地指的是位于能够维持独立架构状态的集成电路上的任意逻辑,其中,独立维持的架构状态共享对执行资源的存取。如可见的,当某些资源被共享并且其它专用于架构状态时,硬件线程与核的命名法之间的界线重叠。而经常,核和硬件线程由操作系统视为单独的逻辑处理器,在所述逻辑处理器中操作系统能够单独地调度每个逻辑处理器上的操作。
如图1中所示,物理处理器100包括两个核--核101和102。此处,核 101和102被认为是对称核,即,具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核101包括乱序处理器核,而核102包括有序处理器核。然而,可以从任意类型的核中单独地选择核101和102,所述核例如为本机核、软件管理的核、适于执行本机指令集架构(ISA)的核、适于执行翻译的指令集架构(ISA)的核、协同设计的核、或者其它已知的核。在异构核环境(即,非对称核)中,诸如二进制翻译之类的翻译的一些形式可以用于调度或执行一个或两个核上的代码。而对于进一步讨论而言,以下进一步具体地描述了核101中所示的功能单元,而核102中的单元在所描述的实施例中以相似的方式进行操作。
如所描述的,核101包括两个硬件线程101a和101b,所述硬件线程还可以被称为硬件线程槽101a和101b。因此,在一个实施例中,诸如操作系统之类的软件实体可能将处理器100当作四个分离的处理器,即,能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如以上所提及的,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b 相关联,第三线程可以与架构状态寄存器102a相关联,并且第四线程可以与架构状态寄存器102b相关联。此处,架构状态寄存器(101a、101b、102a 和102b)中的每个可以被称为处理元件、线程槽或线程单元,如以上所描述的。如所示的,架构状态寄存器101a被复制到架构状态寄存器101b中,所以单独的架构状态/上下文能够被存储用于逻辑处理器101a和逻辑处理器101b。在核101中,其它较小的资源(例如,分配器和重命名器块130 中的指令指针和重命名逻辑)还可以被复制用于线程101a和101b。一些资源(例如,重排器/引退单元135中的重排缓冲器、ILTB 120、加载/存储缓冲器以及队列)可以通过分区被共享。其它资源(例如,通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据-TLB 115、执行单元140、以及引退 单元135的部分)可能被充分地共享。
处理器100经常包括其它资源,所述资源可以被充分地共享,通过分区来共享或者由处理元件专用/专用于处理元件。在图1中,示出了具有处理器的示出性逻辑单元/资源的纯粹示例性处理器的实施例。要注意的是,处理器可以包括或省略这些功能单元中的任意项,以及包括未描述的任意其它已知的功能单元、逻辑或固件。如所示的,核101包括简化的、代表性的乱序(OOO)处理器核。但是有序处理器可以在不同的实施例中被利用。OOO核包括用于预测将被执行/采用的分支的分支目标缓冲器120,以及用于存储指令的地址翻译条目的指令翻译缓冲器(I-TLB)120。
核101进一步包括解码模块125,其耦合至取指单元120以用于对所取指的元素进行解码。在一个实施例中,取指逻辑包括分别与线程槽101a、 101b相关联的单独的定序器。通常,核101与第一ISA相关联,所述ISA 定义/指定了在处理器100上可执行的指令。经常,作为第一ISA的一部分的机器代码指令包括指令的部分(被称为操作码),所述指令的部分引用/ 指定将执行的指令或操作。解码逻辑125包括如下电路:从这些指令的操作码中识别这些指令并且将解码的指令传递到底流水线中以用于如第一 ISA所定义的处理。例如,如以下较具体地讨论的,在一个实施例中,解码器125包括被设计或者适用于特定的指令(例如,事务指令)的逻辑。作为由解码器125识别的结果,架构或核101采取特定、预先定义的动作来执行与合适的指令相关联的任务。重点要注意的是,本文中所描述的任务、块、操作和方法中的任意项可以响应于单个或多个指令而被执行;所述指令中的一些可以是新或旧的指令。要注意的是,在一个实施例中,解码器 126识别相同的ISA(或者其子集)。替代地,在异构核环境中,解码器126 识别第二ISA(第一ISA的子集或不同的ISA)。
在一个示例中,分配器和重命名器块130包括用于保持资源的分配器,例如,用于存储指令处理结果的寄存器文件。然而,线程101a和101b可能能够乱序地执行,其中,分配器和重命名器块130还保持其它资源,例如,用于追踪指令结果的记录器缓冲器。单元130还可以包括寄存器重命名器,所述寄存器重命名器用于将程序/指令参考寄存器重命名为处理器 100内部的其它寄存器。记录器/引退单元135包括用于支持乱序执行和随后被乱序执行的指令的有序引退的组件,诸如,以上提及的记录器缓冲器、加载缓冲器和存储缓冲器。
在一个实施例中,调度器和执行单元块140包括用于调度执行单元上的指令/操作的调度器单元。例如,浮点数指令在执行单元中的具有可用的浮点数执行单元的端口上被调度。还包括与执行单元相关联的寄存器文件以用于存储信息指令处理结果。示例性执行单元包括浮点数执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其它已知的执行单元。
较低级数据高速缓存和数据翻译缓冲器(D-TLB)150耦合至执行单元 140。数据高速缓存用于存储最近被使用/被操作的元素,例如,数据操作数,其可能被保持在存储器相干性状态中。D-TLB用于存储最近虚拟/线性的对物理地址的翻译。作为具体的示例,处理器可以包括用于将物理存储器分成多个虚拟页的页表结构。
此处,核101和102共享对较高级或较远离的高速缓存(例如,与片上接口110相关联的第二级高速缓存)的存取。要注意的是,较高级或较远离指的是从执行单元增加或远离执行单元的高速缓存等级。在一个实施例中,较高级高速缓存是最后一级数据高速缓存--处理器100上的存储器层级结构中的最后的高速缓存--例如,第二或第三级数据高速缓存。然而,较高级高速缓存并非如此被限制,因为其可以与指令高速缓存相关联或者包括指令高速缓存。追踪式高速缓存—一种类型的指令高速缓存—在解码器 125之后可以替代地被耦合来存储最近被解码的踪迹。此处,指令可能指的是宏指令(即,由解码器识别的一般指令),所述宏指令可以解码成许多微指令(微操作)。
在所描述的配置中,处理器100还包括片上接口模块110。在一个实施例中,片上接口110是共享的存储器或相干结构。该相干结构可以用作一个模式中的共享的存储器相干结构或不同模式中的非共享的存储器子系统的一部分,如以下较具体地描述的。以往,以下较具体地描述的存储器控制器已被包括在处理器100外部的计算系统中。在该情境中,片上接口11 用于与处理器100外部的设备进行通信,所述设备例如为系统存储器175、芯片组(经常包括用于连接至存储器175的存储器控制器中心、以及用于连接外围设备的I/O控制器中心)、存储器控制器中心、北桥、或其它集成电路。并且在该情景中,总线105可以包括任意已知的互连,例如,多点总线、点对点互连、串行互连、并行总线、相干(例如,高速缓存相干) 总线、分层的协议架构、差分总线和GTL总线。
存储器175可以专用于处理器100或者被系统中的其它设备共享。存储器175的类型的普通示例包括DRAM、SRAM、非易失性存储器(NV存储器)、以及其它已知的存储设备。要注意的是,设备180可以包括图形加速度计、耦合至存储器控制器中心的处理器或卡、耦合至I/O控制器中心的数据存储装置、无线收发机、闪存设备、音频控制器、网络控制器或其它已知设备。
然而,最近,随着较多的逻辑和设备被集成在诸如SOC之类的单个管芯上时,这些设备中的每个可以被并入在处理器100上。例如,在一个实施例中,存储器控制器中心在与处理器100相同的封装和/或管芯上。在一个实施例中,核的部分(核上部分)110包括用于与诸如存储器175或图形设备180之类的其它设备进行接口的一个或多个控制器。包括用于与这样的设备进行接合的互连和控制器的配置经常被称为非核(或非核配置)。作为示例,片上接口110包括用于片上通信的环形互连和用于片外通信的高速串行点对点链接105。而在SOC环境中,甚至较多的设备可以被集成在单个管芯或集成电路上以提供具有高功能性和低能耗的小形状因数,所述设备例如为网路接口、协处理器、存储器175、图形处理器180和任意其它已知的计算机设备/接口。
在一个实施例中,处理器100能够执行编译器、优化和/或翻译器代码 177来对应用代码176进行编译、翻译和/或优化以支持本文中所描述的装置和方法或者与其进行接合。编译器经常包括用于将源文本/代码翻译成目标文本/代码的程序或程序的集合。通常,在多个阶段和遍数中完成使用编译器来对程序/应用代码的编译以将高级编程语言代码转换成低级机器或汇编语言代码。而单遍编译器还可以用于简单编译。编译器可以利用任意已知的编译技术并且执行任意已知的编译器操作,例如,词汇分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。
较大的编译器经常包括多个阶段,但是最经常地,这些阶段被包括在两个一般阶段内:(1)前端,即,通常语法处理、语义处理和一些转换/优化可以发生在其中,以及(2)后端,即,通常分析、转换、优化和代码生成发生在其中。一些编译器指的是中间阶段,其示出了对编译器的前端与后端之间的描绘的模糊。结果,对插入、关联、生成或编译器的其它操作的引用可以发生在任意前述提及的阶段或遍数以及编译器的任意其它已知的阶段或遍数中。作为示出性的示例,编译器可能在编译的一个或多个阶段中插入操作、调用、功能等,例如,在编译的前端阶段中插入调用/操作,并且然后在转换阶段期间将调用/操作转换成较低级代码。要注意的是,在动态编译期间,编译器代码或动态优化代码可以插入这样的操作/调用,以及优化用于在运行时期间执行的代码。作为具体的示出性示例,二进制代码(已被编译的代码)可以在运行时期间动态地被优化。此处,程序代码可以包括动态优化代码、二进制代码或其组合。
与编译器相似,诸如二进制翻译器之类的翻译器静态或动态地对代码进行翻译使得对代码进行优化和/或翻译。因此,对代码、应用代码、程序代码或其它软件环境的执行的引用可以指的是:(1)动态或静态地执行编译器程序、优化代码优化器或翻译器,以用于编译程序代码、维持软件结构、执行其它操作、优化代码或翻译代码;(2)执行包括操作/调用的主程序代码,诸如已被优化或编译的应用代码;(3)执行与主程序代码相关联的其它程序代码,诸如库,以用于维持软件结构、执行其它软件相关的操作或优化代码;或者(4)其组合。
在各种实施例中,共享的存储器结构将多个独立的设备耦合至共享的存储器(例如,经由干预存储器控制器),所述设备在本文中也被称为代理。在一个实施例中,共享的存储器结构是包括不同类型的知识产权(IP)逻辑块的单个管芯半导体设备的互连结构,所述逻辑块例如为北复合体、南复合体、多媒体逻辑或特定的IP逻辑。在一个实施例中,半导体设备包括一个或多个核或中央处理单元(CPU)以及其相关联的高速缓存存储器。在一个实施例中,这些核或IP逻辑块共享一个或多个等级的高速缓存存储器。
在一个实施例中,相干结构能够支持具有单个相干结构的多个拓扑结构。图2是相干结构200的一个实施例的框图。参考图2,相干结构包括模式存储器、或存储装置(例如,寄存器)201、排序和相干性逻辑202和数据缓冲器203。相干结构200包括一个或多个接口。在一个实施例中,相干结构200还包括一个或多个CPU请求接口210、一个或多个CPU响应接口220、一个或多个存储器接口211、一个或多个响应接口221、存储器映射输入/输出(MMIO)接口212以及一个或多个IP请求接口213。
模式存储器201包括指示相干结构200将在其中进行操作的模式的信息。基于相干结构200将在其中进行操作的拓扑结构来设置信息。在一个实施例中,根据相干结构驻留(或者将驻留)其中的SOC拓扑结构来对模式存储器201进行编程,并且不同的SOC拓扑结构中的每个具有通往存储器的不同的路径。
在一个实施例中,由基本输入/输出系统(BIOS)对模式存储器201进行编程。在另一实施例中,模式存储器201由固件进行编程。而在其它实施例中,模式在模式存储器201中由带或熔丝进行设置。在一个实施例中,在设计实施方式期间选择存储在模式存储器201中的初始值使得半导体设备(例如,SoC处理器)可以在特定模式中开始操作。在另一实施例中,存在2个或更多个模式存储器(例如,寄存器),以用于定义针对存储器中的2个或更多个区域的操作的模式。
排序和相干性逻辑202能够处理排序并且维持针对不同的拓扑结构的存储器相干性。在一个实施例中,根据模式存储器201中指定的模式,排序和相干性逻辑202控制相干结构如何处理向存储器的写入和读取请求和/ 或来自CPU或其它IP和系统中的代理的IO。较具体地,在一个实施例中,排序和相干性逻辑202控制高速缓存存储器和数据缓冲器的状态、编排存储器和MMIO接口上的请求的类型和定时、并且编排每操作的模式CPU响应的定时。如此,排序和相干性逻辑202确保半导体设备(例如,SoC)中的所有代理将存储器的一致视图视为充分共享的相干存储器系统或者软件管理的共享的存储器系统。
例如,排序和相干性逻辑202基于其操作的模式确定是否允许对存储器操作重排。排序和相干性逻辑202管理可高速缓存的数据、以及数据何时并且如何对半导体设备中的代理变得可见。排序和相干性逻辑202还响应于软件启动的事务以确保软件启动的高速缓存控制和排序事件适当地被处理。
在一个实施例中,相干结构200可在三个不同的模式中进行操作,每个模式对应于不同的拓扑结构(例如,SoC拓扑结构)。图3A-图3C示出了相干结构200支持的三个拓扑结构。参考图303A,CPU 300,包括其高速缓存,经由CPU请求接口210耦合至相干结构200。相干结构200的存储器接口211耦合至存储器控制器301(其耦合至系统存储器(例如,动态随机存取存储器(DRAM)))。存储器接口212和IP请求接口213耦合至 IP结构框302。在该配置中,对存储器的所有存取是通过相干结构200的。在这样的情况中,相干结构200的数据缓冲器可以用作高速缓存。
图3B示出了相干结构200所支持的另一拓扑结构。参考图3B,如在第一模式中CPU300耦合至相干结构200,然而,3B的拓扑结构包括非相干结构310,所述非相干结构经由MMIO接口212和存储器接口211耦合至相干结构200。非相干结构310还耦合至存储器控制器301。在该拓扑结构中,IP和结构块312经由IP请求接口213和MMIO接口314耦合至非相干结构310。因此,在该拓扑结构中,存储器控制器连接至非相干结构,并且允许IP在不遍历相干结构200的情况下对存储器进行存取,而来自CPU 300的存储器请求(例如,存储器读取操作和写入操作)通过存储器接口 211通过非相干结构310被发送至存储器。因此,在该情况中,因为存储器请求不穿过相干结构200,所以相干结构200未意识到由IP对存储器进行的存取。
最后,当第三拓扑结构在第三模式中进行操作时,第三拓扑结构由相干结构200支持。该拓扑结构与图3B中阐明的拓扑结构相似,因为该拓扑结构包括耦合至存储器控制器的非相干结构。然而,在该情况中,来自IP 和结构块322的IP请求接口213沿非相干结构320直接耦合至存储器控制器301。因此,在该拓扑结构中,相干结构200和非相干结构320两者不知道IPS和结构块322何时对存储器进行存取。
返回参考图2,基于模式存储器201中所识别的模式,排序和相干性逻辑202操作和执行排序和相干性算法。在图4中阐明了相干性算法中的那些排序的一个实施例。参考图4,基于存储在模式存储器201中的信息,排序和相干性逻辑202初始地确定其是否处于共享的相干存储器模式中。在共享的相干存储器模式中,存储器控制器直接附接至相干结构,如图3A中所示。如果排序和相干性逻辑202确定共享的相干存储器模式是使能的,则排序和相干性逻辑202允许所有存储器存取被高速缓存在相干结构的数据缓冲器203中(401)并且如果期望的话,则允许指向存储器控制器的写入操作可以被重排(402)。存在引起重排的多个情况。在最基本的示例中,数据缓冲器203用作高速缓存。当数据缓冲器需要释放线路时,其需要释放条目。在一个实施例中,用于释放条目的逻辑和/或处理可能与排序逻辑不相同并且未意识到写入操作发生的顺序。在较复杂的示例中,集成到逻辑中的存储器调度器将具有其自己的用于对存储器请求进行选择和重排的处理。排序和相干性逻辑202在一些情况下阻止那些算法实施排序,由此限制其它处理。在该情况中,将数据缓冲器203作为高速缓存存储器来对待,因为数据可以被存储在数据缓冲器203中并且从不被发送至存储器(与其中这样的数据被刷新至存储器以避免相干性问题的其它拓扑结构不同)。通过允许指向存储器控制器的写入操作被重排,相干结构200能够执行对存储器请求的调度,并且使写入操作以不同于当相干结构200接收它们时的顺序被执行。
此外,在相干结构模式中,排序和相干性逻辑202运行得好像在没有来自存储器控制器的针对完成响应的请求的情况下发布对存储器控制器的写入(403)。此外,在共享的相干存储器模式中,排序和相干性逻辑202 阻止向MMIO的未高速缓存的写入绕过之前的向MMIO的流写组合写入或者非临时写入(404)。因此,基于存储器接口返回完成响应,相干结构不需要编排、延迟或触发任意随后的事件或事务事件。在相干结构模式中,存储器围栏(fencing)的操作(例如,Mfence和Sfence)不通过相干结构来触发任意特别的动作(405)。事实上,CPU(例如,CPU 300)不需要将任意存储器提取请求转移至相干结构,或者相干结构可以将这样的存储器提取请求作为无操作事务来对待。相似地,在相干结构模式中,高速缓存无效指令(例如,WBINVD或INVD)不通过相干结构来触发任意特别的动作(406)。
如果排序和相干性逻辑202确定共享的相干存储器模式是不被使能的,则排序和相干性逻辑202基于模式存储器201中的信息来确定相干结构是否在两个其它模式中的任意一个中进行操作。所述模式中的第一模式在本文中被称为非相干结构模式,在该模式中,存储器控制器附接至非相干IO 结构,所述非相干IO结构附接至相干结构200。所述模式中的第二模式被称为非相干结构存储器控制器模式,在该模式中,相干结构支持直接附接至存储器控制器的IP。要注意的是,如果相干结构200不在两个非相干模式中的一个模式中进行操作,则模式存储器201中的信息指定无支持模式。
非相干结构模式与非相干存储器控制器模式之间的主要差异包含向存储器控制器的写入操作以及写入操作是否被发布。在非相干结构模式中,其中所有存储器存取通过非相干结构来向存储器控制器进行,向存储器控制器的写入操作作为发布的与针对来自IO或非相干结构的完成响应的请求一起被发送。在这样的情况中,一旦写入操作被接受并且由IO结构对其进行排序,则IO结构返回完成响应。相干结构保持写入请求有效并且阻塞对与写入相关联的存储器范围的未来存取,直至完成响应被返回(410)。换言之,地址范围仍然是被阻塞的直至完成响应被返回。在一个实施例中,地址范围是64B范围。
在非相干存储器控制器模式的情况中,向存储器控制器的写入操作作为未发布的与针对完成响应的请求一起被发送。在这样的情况中,一旦写入被接受并且由存储器控制器对其进行排序,则存储器控制器返回完成响应,并且相干结构保持写入请求有效并且阻塞对与写入操作相关联的存储器范围的未来存取,直至完成响应被返回(430)。换言之,地址范围仍然是被阻塞的直至完成响应被返回。在一个实施例中,地址范围是64B范围。
除了处理向存储器控制器的写入操作的方式之外,排序和相干性逻辑 200在非相干结构模式和非相干存储器控制器模式两者期间以相同的方式执行许多操作。特别地,针对两个模式,排序和相干性逻辑202 允许高速缓存读取和高速缓存写入被高速缓存在相干结构数据缓冲器中(411)并且不可高速缓存读取常常强制到相干结构数据缓冲器中的对数据的存储器读取(412)。在两个模式中,可以重排向存储器控制器的高速缓存的写入(例如,回收和监听的隐式写回)(413)。在该情况中,在一个实施例中,相干结构在有限的时间将脏线从数据缓冲器中逐出。因此,不存在对数据缓冲器进行刷新的需求。要注意的是,写入离开数据缓冲器的顺序可能与写入以程序顺序出现的顺序不相同。
此外,在两个模式中,排序和相干性逻辑200通过延迟对CPU的响应直至完成响应已从存储器接口被返回,使来自每个CPU的向存储器控制器的未高速缓存的写入以串行化的方式被执行(414),并且常常将来自CPU 的未高速缓存的写入从相干结构中发送至存储器(415)。此外,在两个模式中,排序和相干性逻辑200阻止向MMIO的未高速缓存的写入绕过之前的向MMIO的流写组合或者非临时写入(416),并且阻止向MMIO或存储器的未高速缓存的写入绕过之前的向存储器的流写组合或者非临时写入。排序和相干性逻辑200延迟向MMIO的未高速缓存的写入并且不将其发送至IO结构,直至所有之前的向存储器的写组合和非临时写入已在存储器接口上接收到完成响应。
在两个模式中,存储器围栏操作(例如,Mfence和Sfence)被发送至相干结构。排序和相干性逻辑200不将围栏完成响应返回至CPU,直至所有之前的向存储器的写组合写入、非临时写入以及高速缓存行刷新操作 (CLflush)已从存储器接口接收到它们的完成响应(418)。排序和相干性逻辑200负责完成存储器围栏操作。此外,排序和相干性逻辑200延迟高速缓存写回和无效指令(WBINVD)直至向存储器的所有之前的写入(高速缓存的和未高速缓存的)已从存储器接口接收到完成响应(419)。在两个模式中,高速缓存的无效指令(例如,WBINVD或INVD)使得在相干结构数据缓冲器203中分配的所有之前的行无效(420)。最后,在两个模式中,对地址的刷新(例如,CLflush)使得相干结构数据缓冲器203中的高速缓存行(例如,64B高速缓存行)无效并且所有随后的对该高速缓存行的读取将强制到相干结构数据缓冲器203中进行对数据的存储器读取 (421)。
因此,使用图4中指定的排序和相干性操作,单个结构能够支持三个不同的SoC拓扑结构。
在一个实施例中,半导体设备包括两个或更多个结构,并且每个可以在多个模式中进行操作。其中每个结构处于操作的模式不必相同。例如,一个结构可以在以上所描述的相干结构模式中进行操作,而另一结构在非相干IO结构模式中进行操作。在一个实施例中,通过添加由BIOS、固件、带或熔丝控制的额外路由和多路复用逻辑来选择来自IP和结构的存储器请求是直接路由至存储器控制器,还是通过非相干结构,还是通过相干结构,模式的所有组合是有可能的。
图5示出了这样的拓扑结构的示例。参考图5,拓扑结构与包括非相干结构310的图3B和3C的那些相似。然而,差异包括存储器控制器301从相干结构200、非相干结构300和IP/结构312中接收请求。另一差异是来自IP/结构312的IP请求接口213用于非相干结构310和相干结构200两者。此外,存储器响应接口221将响应递送至相干结构200和非相干结构310两者。
此外,如以上所提及的,在其它实施例中,可以存在模式存储器(例如,寄存器)的两个或者更多个拷贝以定义针对存储器的两个或者更多个地址区域的操作的不同模式。
图6是由相干结构执行的用于支持不同拓扑结构的过程的流程图。过程由处理逻辑执行,所述处理逻辑可以包括硬件(电路、专用逻辑等)、软件(例如,在通用计算机系统或专用机器上运行的)、或者两者的组合。
参考图6,过程通过对模式存储器进行编程来开始,所述模式存储器具有结构将在其中进行操作的模式(处理框601)。然后,处理逻辑对模式存储器进行读取以确定结构将在其中运行的模式(处理框602)。在一个实施例中,结构能够运行这些模式中的一个,所述模式包括其中存储器控制器连接至结构的第一模式;其中存储器控制器连接至非相干输入/输出(I/O) 结构的第二模式,所述非相干输入/输出(I/O)结构连接至该结构;以及其中知识产权(IP)核连接至存储器控制器的第三模式,所述存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出(I/O)结构连接至该结构。
在确定模式之后,处理逻辑处理针对由结构接收到的读取操作和写入操作的排序和相干性(处理框602)。
在第一示例实施例中,半导体设备包括模式存储器,所述模式存储器用于存储指示多个模式中的一个的信息;以及第一结构,其在多个模式中可进行操作,其中,所述结构包括耦合至模式存储器的逻辑,所述逻辑用于根据由信息指示识别的模式来控制对由第一结构接收到的向存储器的读取请求和写入请求的处理。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括所述逻辑控制一个或多个高速缓存存储器和至少一个数据缓冲器的状态以及存储器上的请求的类型和定时,并且控制对请求的响应的定时。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括所述逻辑响应于软件启动的事务以确保软件启动的高速缓存控制和排序事件被处理。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括所述多个模式包括:第一模式,其中,存储器控制器连接至第一结构;第二模式,其中,存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出结构连接至第一结构;以及第三模式,其中知识产权(IP)核连接至存储器控制器,所述存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出结构连接至第一结构。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括所述逻辑使得向存储器的所有写入操作被发布而不等待在多个模式中的第一模式中的完成响应,并且使的写入作为被发布或未被发布的与多个模式中的一个或多个其它模式中所要求的完成响应一起被发送。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括所述逻辑允许向存储器的高速缓存和未高速缓存的写入操作在多个模式中的第一模式中被重排,并且仅允许高速缓存的写入操作在多个模式中的第二模式中被重排。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括所述逻辑不完成围栏或高速缓存无效操作中的一个或多个操作,直至向存储器的一个或多个之前的写组合写入操作、非临时写入操作或高速缓存行刷新操作在多个模式中的一个或多个模式中已接收到它们的完成响应,并且不在多个模式中的另一模式中通过结构来触发任意动作。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括所述逻辑不将未高速缓存的写入操作转发至存储器或输入/输出(I/O)结构中的任意一个,直至一个或多个之前的向存储器的写组合写入操作或非临时写入操作在多个模式中的一个或多个模式中已接收到它们的完成响应,并且不在多个模式中的另一模式中通过结构来触发任意动作。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括模式存储器位于第一结构中。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括模式存储器经由BIOS、固件、带、熔丝或软件被设置。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括模式是基于由结构接收到的存储器请求的地址被设置的。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括其中,模式是基于处理单元的模式被设置的。
在另一示例实施例中,第一示例实施例的主题可以选择性地包括模式是基于虚拟机标识符(ID)被设置的。
在第二示例实施例中,系统包括:半导体设备,其具有模式存储器,所述模式存储器用于存储指示多个模式中的一个模式的信息;以及第一结构,其在多个模式中可进行操作,结构包括耦合至模式存储器的逻辑,所述逻辑用于根据由指示多个模式中的一个模式的信息标识的模式来控制对由第一结构接收到的向存储器的读取请求和写入请求的处理;至少一个存储器控制器,其耦合至半导体设备;以及至少一个存储器,其耦合至至少一个存储器控制器。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括所述逻辑控制一个或多个高速缓存存储器和至少一个数据缓冲器的状态以及存储器上的请求的类型和定时,并且控制针对所述请求的响应的定时。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括所述逻辑响应于软件启动的事务以确保软件启动的高速缓存控制和排序事件被处理。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括多个模式包括:第一模式,其中,存储器控制器连接至第一结构;第二模式,其中,存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入 /输出结构连接至所述第一结构;以及第三模式,其中知识产权(IP)核连接至存储器控制器,所述存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出结构连接至第一结构。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括至少一个存储器包括动态随机存取存储器(DRAM)、静态RAM(SRAM)、或 DRAM和SRAM两者。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括所述逻辑使得向存储器的所有写入操作被发布而不等待在多个模式中的第一模式中的完成响应,并且使得写入操作作为被发布或未被发布的与多个模式中的一个或多个其它模式中所要求的完成响应一起被发送。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括所述逻辑允许向存储器的高速缓存和未高速缓存的写入操作在多个模式中的第一模式中被重排,并且仅允许高速缓存的写入操作在多个模式中的第二模式中被重排。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括所述逻辑不完成围栏或高速缓存无效操作中的一个或多个操作,直至向存储器的一个或多个之前的写组合写入操作、非临时写入操作或高速缓存行刷新操作在多个模式中的一个或多个模式中已接收到它们的完成响应,并且不在多个模式中的另一模式中通过结构来触发任意动作。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括所述逻辑不将未高速缓存的写入操作转发至存储器或输入/输出IO结构中的任意一个,直至向存储器的一个或多个之前的写组合写入操作或非临时写入操作在多个模式中的一个或多个模式中已接收到它们的完成响应,并且不在多个模式中的另一模式中通过结构来触发任意动作。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括模式存储器位于第一结构中。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括模式存储器是经由BIOS、固件、带、熔丝或软件被设置的。
在第三示例实施例中,方法包括读取模式存储器来确定半导体设备的第一结构将在其中运行的模式;并且基于通过读取模式存储器识别的模式来处理针对由结构接收到的读取操作和写入操作的排序和相干性。
在另一示例实施例中,第三示例实施例的主题可以选择性地包括多个模式包括:第一模式,其中,存储器控制器连接至第一结构;第二模式,其中,存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入 /输出结构连接至第一结构;以及第三模式,其中知识产权(IP)核连接至存储器控制器,所述存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出结构连接至第一结构。
在另一示例实施例中,第二示例实施例的主题可以选择性地包括对模式存储器进行编程。
鉴于在已读前述描述之后,本发明的许多替代和修改将毫无疑问地对本领域技术人员而言变得显而易见,应该理解的是,通过示出所示和所描述的任意特定的实施例完全不旨在被认为是限制性的。因此,对各种实施例的细节的引用不旨在限制权利要求的范围,所述权利要求在其本身中仅叙述了被当作对发明而言必要的那些特征。
Claims (17)
1.一种在计算系统中使用的半导体设备,所述半导体设备包括:
模式存储器,其用于存储指示多个模式中的一个模式的信息;以及
第一结构,其在所述多个模式中可操作,所述结构包括:
耦合至所述模式存储器的逻辑,所述逻辑用于根据由所述信息指示所标识的模式来控制对由所述第一结构接收到的向存储器的读取请求和写入请求的处理,
其中,所述多个模式包括:
第一模式,其中,存储器控制器连接至所述第一结构;
第二模式,其中,存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出结构连接至所述第一结构;以及
第三模式,其中,知识产权(IP)核连接至存储器控制器,所述存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出结构连接至所述第一结构。
2.根据权利要求1所述的半导体设备,其中,所述逻辑控制一个或多个高速缓存存储器的状态、至少一个数据缓冲器的状态以及存储器请求的类型和定时,并且控制对所述请求的响应的定时。
3.根据权利要求2所述的半导体设备,其中,所述逻辑响应于软件启动的事务以确保软件启动的高速缓存控制和排序事件被处理。
4.根据权利要求1所述的半导体设备,其中,所述逻辑使得向存储器的所有写入操作被发布而不等待在所述多个模式中的一个模式中的完成响应,并且使写入作为被发布的写入或未被发布的写入与所述多个模式中的一个或多个其它模式中所要求的完成响应一起被发送。
5.根据权利要求1所述的半导体设备,其中,所述逻辑允许向存储器的高速缓存的写入操作和未高速缓存的写入操作在所述多个模式中的一个模式中被重排,并且仅允许高速缓存的写入操作在所述多个模式中的另一模式中被重排。
6.根据权利要求1所述的半导体设备,其中,所述逻辑不完成围栏或高速缓存无效操作中的一个或多个,直至向存储器的一个或多个之前的写组合写入操作、非临时写入操作或高速缓存行刷新操作在所述多个模式中的一个或多个模式中已接收到它们的完成响应,并且不在所述多个模式中的另一模式中通过所述结构来触发任意动作。
7.根据权利要求1所述的半导体设备,其中,所述逻辑不将未高速缓存的写入操作转发至存储器或输入/输出(I/O)结构中的任意一个,直至向存储器的一个或多个之前的写组合写入操作或非临时写入操作在所述多个模式中的一个或多个模式中已接收到它们的完成响应,并且不在所述多个模式中的另一模式中通过所述结构来触发任意动作。
8.根据权利要求1所述的半导体设备,其中,所述模式存储器位于所述第一结构中。
9.根据权利要求1所述的半导体设备,其中,所述模式存储器是经由BIOS、固件、带、熔丝或软件来进行设置的。
10.一种用于处理信息的计算系统,所述计算系统包括:
半导体设备,其具有
模式存储器,其用于存储指示多个模式中的一个模式的信息;
第一结构,其在所述多个模式中可操作,所述结构包括耦合至所述模式存储器的逻辑,所述逻辑用于根据由指示所述多个模式中的一个模式的所述信息标识的模式来控制对由所述第一结构接收到的向存储器的读取请求和写入请求的处理;以及
至少一个存储器控制器,其耦合至所述半导体设备;以及
至少一个存储器,其耦合至所述至少一个存储器控制器,
其中,所述多个模式包括:
第一模式,其中,存储器控制器连接至所述第一结构;
第二模式,其中,存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出结构连接至所述第一结构;以及
第三模式,其中,知识产权(IP)核连接至存储器控制器,所述存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出结构连接至所述第一结构。
11.根据权利要求10所述的系统,其中,所述逻辑控制一个或多个高速缓存存储器的状态、至少一个数据缓冲器的状态以及存储器请求的类型和定时,并且控制对所述请求的响应的定时,并且进一步其中,所述逻辑响应于软件启动的事务以确保软件启动的高速缓存控制和排序事件被处理。
12.根据权利要求10所述的系统,其中,所述至少一个存储器包括动态随机存取存储器(DRAM)、静态RAM(SRAM)、或DRAM和SRAM两者。
13.根据权利要求10所述的系统,其中,所述逻辑使得向存储器的所有写入操作被发布而不等待所述多个模式中的一个模式中的完成响应,并且使得写入操作作为被发布的写入操作或未被发布的写入操作与所述多个模式中的一个或多个其它模式中所要求的完成响应一起被发送。
14.根据权利要求12所述的系统,其中,所述逻辑不完成围栏或高速缓存无效操作中的一个或多个,并且不将未高速缓存的写入操作转发至存储器或输入/输出(I/O)结构中的任意一个,直至向存储器的一个或多个之前的写组合写入操作、非临时写入操作或高速缓存行刷新操作在所述多个模式中的一个或多个模式中已接收到它们的完成响应,并且不在所述多个模式中的另一模式中通过所述结构来触发任意动作。
15.根据权利要求12所述的系统,其中,所述模式存储器是经由BIOS、固件、带、熔丝或软件而被设置的。
16.一种用于处理存储器操作以及输入/输出(I/O)操作中的至少一个的排序和相干性的方法,所述方法包括:
读取模式存储器来从多个模式中确定半导体设备的第一结构在其中运行的模式;并且
基于通过读取所述模式存储器所标识的所述模式来处理针对由所述结构接收到的读取操作和写入操作的排序和相干性,
其中,所述多个模式包括:
第一模式,其中,存储器控制器连接至所述第一结构;
第二模式,其中,存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出结构连接至所述第一结构;以及
第三模式,其中,知识产权(IP)核连接至存储器控制器,所述存储器控制器连接至非相干输入/输出(I/O)结构,所述非相干输入/输出结构连接至所述第一结构。
17.根据权利要求16所述的方法,其进一步包括对所述模式存储器进行编程。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/751,899 US9996487B2 (en) | 2015-06-26 | 2015-06-26 | Coherent fabric interconnect for use in multiple topologies |
US14/751,899 | 2015-06-26 | ||
PCT/US2016/034190 WO2016209519A1 (en) | 2015-06-26 | 2016-05-25 | Coherent fabric interconnect for use in multiple topologies |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107667358A CN107667358A (zh) | 2018-02-06 |
CN107667358B true CN107667358B (zh) | 2021-07-13 |
Family
ID=57586077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680030441.3A Active CN107667358B (zh) | 2015-06-26 | 2016-05-25 | 用于在多个拓扑结构中使用的装置及其方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9996487B2 (zh) |
EP (1) | EP3314445B1 (zh) |
CN (1) | CN107667358B (zh) |
WO (1) | WO2016209519A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10846126B2 (en) * | 2016-12-28 | 2020-11-24 | Intel Corporation | Method, apparatus and system for handling non-posted memory write transactions in a fabric |
US10776145B2 (en) | 2017-04-21 | 2020-09-15 | Dell Products L.P. | Systems and methods for traffic monitoring in a virtualized software defined storage architecture |
US10296369B2 (en) | 2017-04-27 | 2019-05-21 | Dell Products L.P. | Systems and methods for protocol termination in a host system driver in a virtualized software defined storage architecture |
US20180336158A1 (en) * | 2017-05-16 | 2018-11-22 | Dell Products L.P. | Systems and methods for data transfer with coherent and non-coherent bus topologies and attached external memory |
US10936353B2 (en) | 2017-05-16 | 2021-03-02 | Dell Products L.P. | Systems and methods for hypervisor-assisted hardware accelerator offloads in a virtualized information handling system environment |
NO344681B1 (en) * | 2017-09-05 | 2020-03-02 | Numascale As | Coherent Node Controller |
US10838773B2 (en) * | 2018-03-30 | 2020-11-17 | Intel Corporation | Techniques for dynamic resource allocation among cryptographic domains |
US11080210B2 (en) * | 2018-09-06 | 2021-08-03 | Micron Technology, Inc. | Memory sub-system including an in package sequencer separate from a controller |
US11061751B2 (en) | 2018-09-06 | 2021-07-13 | Micron Technology, Inc. | Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller |
US11455251B2 (en) * | 2020-11-11 | 2022-09-27 | Advanced Micro Devices, Inc. | Enhanced durability for systems on chip (SOCs) |
US12112113B2 (en) | 2021-03-05 | 2024-10-08 | Apple Inc. | Complementary die-to-die interface |
US11675722B2 (en) * | 2021-04-16 | 2023-06-13 | Apple Inc. | Multiple independent on-chip interconnect |
US11966335B2 (en) * | 2021-08-10 | 2024-04-23 | Google Llc | Hardware interconnect with memory coherence |
US11934313B2 (en) | 2021-08-23 | 2024-03-19 | Apple Inc. | Scalable system on a chip |
US11947459B2 (en) * | 2021-09-30 | 2024-04-02 | Xilinx, Inc. | Multipath memory with static or dynamic mapping to coherent or MMIO space |
US11966339B1 (en) * | 2022-09-30 | 2024-04-23 | Advanced Micro Devices, Inc. | Selecting between basic and global persistent flush modes |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103119912A (zh) * | 2010-09-20 | 2013-05-22 | 高通股份有限公司 | 多处理器计算平台中的处理器间通信技术 |
US8643519B1 (en) * | 2009-05-10 | 2014-02-04 | Cypress Semiconductor Corporation | On-chip calibration method |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085897B2 (en) * | 2003-05-12 | 2006-08-01 | International Business Machines Corporation | Memory management for a symmetric multiprocessor computer system |
WO2013105978A1 (en) * | 2012-01-13 | 2013-07-18 | Intel Corporation | Allocation of flow control credits for high performance devices |
US9524261B2 (en) | 2012-12-21 | 2016-12-20 | Apple Inc. | Credit lookahead mechanism |
US9164938B2 (en) | 2013-01-02 | 2015-10-20 | Intel Corporation | Method to integrate ARM ecosystem IPs into PCI-based interconnect |
US8867533B2 (en) | 2013-01-08 | 2014-10-21 | Apple Inc. | Multi-tier switch interface unit arbiter |
US9075952B2 (en) | 2013-01-17 | 2015-07-07 | Intel Corporation | Controlling bandwidth allocations in a system on a chip (SoC) |
US8959576B2 (en) * | 2013-03-14 | 2015-02-17 | Intel Corporation | Method, apparatus, system for qualifying CPU transactions with security attributes |
KR101814412B1 (ko) * | 2013-03-15 | 2018-01-03 | 인텔 코포레이션 | 데이터 버퍼와 연관된 스누프 필터링의 제공 |
WO2014203036A1 (en) * | 2013-06-18 | 2014-12-24 | Freescale Semiconductor, Inc. | Method and apparatus for offloading functional data from an interconnect component |
US9921989B2 (en) * | 2014-07-14 | 2018-03-20 | Intel Corporation | Method, apparatus and system for modular on-die coherent interconnect for packetized communication |
-
2015
- 2015-06-26 US US14/751,899 patent/US9996487B2/en not_active Expired - Fee Related
-
2016
- 2016-05-25 WO PCT/US2016/034190 patent/WO2016209519A1/en active Application Filing
- 2016-05-25 CN CN201680030441.3A patent/CN107667358B/zh active Active
- 2016-05-25 EP EP16814969.8A patent/EP3314445B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8643519B1 (en) * | 2009-05-10 | 2014-02-04 | Cypress Semiconductor Corporation | On-chip calibration method |
CN103119912A (zh) * | 2010-09-20 | 2013-05-22 | 高通股份有限公司 | 多处理器计算平台中的处理器间通信技术 |
Also Published As
Publication number | Publication date |
---|---|
EP3314445A1 (en) | 2018-05-02 |
US9996487B2 (en) | 2018-06-12 |
CN107667358A (zh) | 2018-02-06 |
US20160378701A1 (en) | 2016-12-29 |
WO2016209519A1 (en) | 2016-12-29 |
EP3314445B1 (en) | 2019-12-25 |
EP3314445A4 (en) | 2019-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107667358B (zh) | 用于在多个拓扑结构中使用的装置及其方法 | |
US10409612B2 (en) | Apparatus and method for transactional memory and lock elision including an abort instruction to abort speculative execution | |
KR101814412B1 (ko) | 데이터 버퍼와 연관된 스누프 필터링의 제공 | |
EP2619655B1 (en) | Apparatus, method, and system for dynamically optimizing code utilizing adjustable transaction sizes based on hardware limitations | |
EP2619654B1 (en) | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
CN108268385B (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
US9405687B2 (en) | Method, apparatus and system for handling cache misses in a processor | |
US20140379996A1 (en) | Method, apparatus, and system for transactional speculation control instructions | |
TW201337585A (zh) | 用以於交易執行期間有效率地處理多個虛擬位址映射的方法、裝置及系統 | |
CN109661656B (zh) | 用于利用条件所有权请求的智能存储操作的方法和装置 | |
EP3274860B1 (en) | A method, apparatus and system for optimizing cache memory transaction handling in a processor | |
US20140173203A1 (en) | Block Memory Engine | |
US20170286301A1 (en) | Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga | |
US20150186191A1 (en) | Deadlock prevention in a processor | |
US20140281276A1 (en) | Method, apparatus, and system for low latency communication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210630 Address after: California, USA Applicant after: INTEL Corp. Address before: California, USA Applicant before: INTEL IP Corp. |
|
TA01 | Transfer of patent application right |