CN116472512A - 片上系统(soc)的增强的耐久性 - Google Patents
片上系统(soc)的增强的耐久性 Download PDFInfo
- Publication number
- CN116472512A CN116472512A CN202180076143.9A CN202180076143A CN116472512A CN 116472512 A CN116472512 A CN 116472512A CN 202180076143 A CN202180076143 A CN 202180076143A CN 116472512 A CN116472512 A CN 116472512A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- external memory
- trigger signal
- response
- 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.)
- Pending
Links
- 230000004044 response Effects 0.000 claims abstract description 49
- 230000002688 persistence Effects 0.000 claims abstract description 25
- 238000012546 transfer Methods 0.000 claims abstract description 4
- 238000012545 processing Methods 0.000 claims description 42
- 239000004744 fabric Substances 0.000 claims description 34
- 238000000034 method Methods 0.000 claims description 26
- 230000002085 persistent effect Effects 0.000 claims description 24
- 230000005540 biological transmission Effects 0.000 claims description 12
- 239000000872 buffer Substances 0.000 claims description 8
- 230000001427 coherent effect Effects 0.000 claims description 7
- 238000011010 flushing procedure Methods 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 3
- 230000008520 organization Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 17
- 238000011156 evaluation Methods 0.000 description 12
- 238000011144 upstream manufacturing Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000004606 Fillers/Extenders Substances 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007781 signaling event Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- 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
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种具有运行时全局推送到持久性的片上系统包括具有高速缓存的数据处理器、外部存储器接口和微序列器。该外部存储器接口耦接到该高速缓存并且适于耦接到外部存储器。该高速缓存向该外部存储器接口提供数据以供存储在该外部存储器中。该微序列器耦接到该数据处理器。响应于触发信号,该微序列器致使该高速缓存通过将该数据发送到该外部存储器接口以供传输到该外部存储器来刷新该数据。
Description
背景技术
计算机系统易受偶然事件的影响,这些偶然事件导致计算机系统被暂时关机或断电。例如,计算机系统运行所在的建筑物或家庭的电力可能由于限电、停电或自然灾害而遭受电力损失。此外,计算机系统本身的电源可能出现故障。导致计算机系统关机的另一类事件是应用程序或操作系统故障,该故障“锁定”计算机系统并要求用户将其手动复位。有时,需要计算机关机的条件是可预期的,并且关键数据可在关机之前进行保存。然而,任何被修改但尚未保存在持久性存储器(例如,非易失性存储器、电池备份存储器、硬盘驱动器等)中的数据将由于电力损失或复位而丢失。为了防止此类意外的数据损失,应用程序有时周期性地将数据文件保存到持久性存储器,并且操作系统可在检测到这些事件中的一个事件之后进行干预,以便在计算机关机之前保存重要数据。
现代数据处理器通常使用高速缓存(即,紧密耦接到数据处理器的高速存储器诸如静态随机存取存储器(SRAM))来允许对频繁使用的数据进行快速访问,并由此提高计算机系统性能。当应用程序修改已分配给高速缓存的数据时,数据处理器通常将副本以修改的(“脏”)形式保持在其高速缓存中,直到高速缓存需要为其他数据腾出空间并将更新后的副本写回到存储器为止。如果遇到需要关机的事件并且在关机之前有足够的时间,则应用程序或操作系统可将任何脏数据从高速缓存“刷新”(即,写回)到持久性存储器,从而允许对关键数据的更新进行保存并且是全局可观察的,使得当计算机系统稍后重新启动时可以没有损失地恢复用户的工作。
片上系统(SOC)将各种数据处理器、高速缓存、队列、多层互连电路以及输入/输出外围设备组合在单个集成电路芯片上。随着深亚微米半导体制造工艺技术的出现,SOC已经变得越来越复杂,并且可包含若干数据处理器核、多层高速缓存以及高度缓冲的互连织构,使得在这些SOC上运行的应用程序和操作系统难以在无须重写应用软件或操作系统来了解SOC的细节的情况下确保它们的内部数据是耐久的。
附图说明
图1以框图形式示出了现有技术中已知的数据处理系统;
图2以框图形式示出了根据一些实施方案的具有运行时全局推送到持久性的数据处理系统的高级抽象图;
图3以框图形式示出了根据一些实施方案的具有带有运行时全局推送到持久性的示例性片上系统(SOC)的数据处理系统;
图4以框图形式示出了根据一些实施方案的具有带有运行时全局推送到持久性的SOC的另一个数据处理系统;
图5示出了根据一些实施方案的SOC中可用的运行时过程的流程图;
图6以框图形式示出了根据一些实施方案的数据处理系统,其示出了图4的SOC执行图5的运行时全局推送到持久性过程;
图7以框图形式示出了根据一些实施方案的具有带有运行时全局推送到持久性的SOC的另一个数据处理系统;
图8以框图形式示出了图4和图7的SOC中可用的终端事件触发器生成电路;并且
图9以框图形式示出了图4和图7的SOC中可用的非终端事件触发器生成电路。
在以下描述中,在不同附图中使用相同的附图标号指示类似或相同的项。除非另有说明,否则字词“耦接”及其相关联的动词形式包括直接连接和通过本领域已知的方式的间接电连接两者,并且除非另有说明,否则对直接连接的任何描述也意味着使用合适形式的间接电连接的另选实施方案。
具体实施方式
如下文将详细描述的,具有运行时全局推送到持久性的片上系统包括具有高速缓存的数据处理器、外部存储器接口和微序列器。外部存储器接口耦接到高速缓存并且适于耦接到外部存储器。高速缓存向外部存储器接口提供数据以供存储在外部存储器中。微序列器耦接到数据处理器。响应于触发信号,微序列器致使高速缓存通过将数据发送到外部存储器接口以供传输到外部存储器来刷新数据。
具有运行时全局推送到持久性的数据处理系统包括片上系统和耦接到所述片上系统的外部存储器。片上系统包括具有高速缓存的数据处理器、外部存储器接口和微序列器。数据处理器响应于执行指令而选择性地修改高速缓存中的数据。外部存储器接口耦接到高速缓存并且适于耦接到外部存储器。高速缓存选择性地将已修改数据提供到外部存储器接口以供存储在外部存储器中。微序列器耦接到数据处理器和高速缓存,并且响应于触发信号,微序列器致使高速缓存通过将已修改数据发送到外部存储器接口以传输到外部存储器来刷新已修改数据。
一种用于在包括通过数据织构耦接到外部存储器接口的具有高速缓存的数据处理器的片上系统中提供运行时全局推送到持久性的方法包括接收触发信号。响应于接收到所述触发信号,停止数据处理器。通过将对应的第一写入请求发送到数据织构,从高速缓存刷新脏数据。通过将所有待决写入请求发送到外部持久性存储器,从数据织构刷新所述待决写入请求。在数据处理器和所述外部持久性存储器之间提供握手,从而建立运行时全局推送到持久性。
图1以框图形式示出了现有技术中已知的数据处理系统100。数据处理系统100通常包括数据处理器110和外部存储器120。数据处理器110包括标记为“IFU”的指令取出单元111、标记为“EU”的执行单元112、高速缓存113、标记为“MC”的存储器控制器115以及物理接口电路(“PHY”)116。外部存储器120通常包括用于存储包括FLUSH指令122的应用程序121的第一部分,以及标记为“NVM”的非易失性存储器123。
数据处理器110包括其操作是公知的部件,这些操作对于理解本公开的相关操作并不重要,并且将不进一步讨论。数据处理器的部件连接在一起以交换各种信号,但是图1仅示出了与理解已知数据处理器的问题相关的一组信号流。
高速缓存113包括被分成标签部分、数据部分和状况部分的一组行。标签部分使用存储器地址的位的子集帮助高速缓存113从其高速缓存行中快速索引并找到所访问的高速缓存行。数据字段存储对应于由TAG指示的高速缓存行的数据。STATUS字段存储关于高速缓存中的行状态的信息,该信息允许系统在还包括多个处理器及除不同形式的主存储器之外它们相关联的高速缓存的复杂数据处理环境中维持数据一致。存在若干已知的高速缓存一致协议,但是高速缓存113实现所谓的“MOESI”协议,该协议存储分别指示高速缓存行是修改、拥有、独占、共享和/或无效的M、O、E、S和I状态位。如图1所示,指示脏数据的状态是其中I=0且M=1的状态,如针对图1中的高速缓存行114所示。
数据处理系统100实现用于确保数据耐久的已知技术。在应用程序121的执行期间,指令取出单元111从应用程序121取出“FLUSH”命令。指令取出单元111最终将FLUSH命令传递给执行单元112以供执行。响应于FLUSH命令,执行单元112致使高速缓存113将其所有脏数据刷新到外部存储器120。它可通过具有循环遍历有效高速缓存行并将它们写入到非易失性存储器123的内部状态机来进行,或执行单元112自身可检查所有高速缓存行并将脏高速缓存行的内容写入到非易失性存储器123。使用任一种技术,高速缓存113将具有数据的更新副本的高速缓存行信息提供到存储器控制器115,该存储器控制器最终通过PHY 116将数据提供到外部数据总线到非易失性存储器123。
图1所示的技术存在若干问题或限制。首先,该技术依赖应用程序来发起FLUSH操作,并且应用程序必须知道数据处理器110的硬件能力。此外,如果数据处理系统100实现多个处理器,其中使用形成一个存储器池的分布式存储器在多个处理器之间交换数据,则所有处理器必须刷新它们的高速缓存并强制不同应用线程之间的串行化以确保可靠的备份和恢复点,这可能导致软件操作的实质中断。在更大更复杂的系统诸如具有用于不同处理元件之间的通信的复杂数据织构的片上系统(SOC)中,变得难以预测系统中的所有写入传播到可见存储器所花费的时间的量。因此,这种已知系统似乎不足以在需要时确保系统中的数据可见性和耐久性。
图2以框图形式示出了根据一些实施方案的具有运行时全局推送到持久性的数据处理系统200的高级抽象图。如图2所示,数据处理系统200包括处理器210和220、附接的加速器230以及存储器系统240。处理器210具有相关联的高速缓存211并且连接到处理器220、加速器230和存储器系统240。存储器系统240包括两个存储器层级,包括第一层级或“层级0”存储器241和第二层级或“层级1”存储器242。在一个示例中,层级0存储器241是持久性存储器诸如非易失性存储器,并且层级1存储器242是易失性存储器诸如高速动态随机存取存储器(DRAM)。在某些情况下,期望数据处理系统200执行运行时全局推送到持久性操作,在该操作中高速缓存211和222以及加速器230中的脏数据被移动到存储器系统240中并且因此变得全局可见。如将在下文更详细地解释的,响应于指示对运行时全局推送到持久性的需要的事件,处理器210和220分别致使它们的高速缓存211和221中的脏数据被推出到存储器系统240。如图2所示,高速缓存211分别经由路径212和213将脏数据推送到存储器241和存储器242,高速缓存221分别经由路径222和223将脏数据推送到存储器241和存储器242,并且加速器230将分别经由路径232和233将脏数据间接地通过处理器210推送到存储器241和存储器242。此外,数据通信织构、缓冲器、存储器控制器等中的所有“运行中”存储器操作都作为运行时全局推送到持久性的一部分来完成以实现整个系统的数据耐久性。
图3以框图形式示出了根据一些实施方案的具有带有运行时全局推送到持久性的示例性片上系统(SOC)310的数据处理系统300。数据处理系统300通常包括SOC 210和存储器系统380。SOC 310包括CPU复合体320、织构330、一组输入/输出(I/O)控制器340、统一存储器控制器(UMC)350、一致性网络层接口(CNLI)360和全局存储器接口(GMI)控制器370。CPU复合体310包括一个或多个CPU核,每个CPU核具有一个或多个专用内部高速缓存,其中共享高速缓存在所有CPU核之间共享。织构330包括一致性主块331、输入/输出存储器从块(IOMS)333、电源/中断控制器334、一致AMD套接字扩展器(CAKE)335、一致性从块336、ACM337和一致性从块338,所有这些都通过织构传送层332互连。I/O控制器340包括用于诸如外围部件高速互连(PCIe)等协议的各种控制器及其物理层接口电路。UMC 350执行命令缓冲、重新排序和定时合格性实施,以便有效利用到外部存储器诸如双倍数据速率(DDR)存储器和/或具有持久性存储的非易失性双列直插内存模块(“NVDIMM-P”)存储器的总线。CNLI360将流量路由到外部一致性存储器设备。GMI控制器370执行到其他SOC的芯片间通信,这些其他SOC具有它们自己的对存储器映射中的所有处理器可见的附接存储装置。存储器系统380包括连接到UMC 350的DDR/NVDIMM-P存储器381和连接到CNLI 360的计算机高速链接(CXL)设备382。
SOC 310是示出用于将各种数据处理器、存储器和I/O部件与各种存储点连接以用于进程中写入事务的织构330的复杂性的示例性SOC。例如,一致性从块336和338支持各种存储器通道,并且实施一致和事务排序以及如稍后将描述的运行时全局推送到持久性。在示例性实施方案中,这些一致性从块跟踪一致和地址冲突并且支持例如256个未完成的事务。
图4以框图形式示出了根据一些实施方案的具有带有运行时全局推送到持久性的SOC 410的另一个数据处理系统400。数据处理系统400包括SOC 410和存储器系统490。SOC410通常包括处理器层420、互连织构430、一致性网络层接口(CNLI)电路440、统一存储器控制器(UMC)450、数据输入/输出块460、物理接口层470、微序列器480和存储器系统490。
处理器层420包括CPU复合体421、标记为“CCM”的高速缓存一致性存储器422、以及电源/中断控制器423。CPU复合体421包括一个或多个CPU核,每个CPU核将通常具有其自己的专用内部高速缓存。在一些实施方案中,专用内部高速缓存包括第一级1(L1)高速缓存和连接到L1高速缓存的第二级(L2)高速缓存两者。CPU复合体421中的每个处理器核或多个处理器核的最低级高速缓存具有到CCM 422的接口。在其中每个CPU核具有专用内部L1高速缓存和L2高速缓存的一些实施方案中,CCM 422是在CPU复合体421中的所有处理器之间共享的第三级(L3)高速缓存。电源/中断控制器423具有用于接收寄存器值和设置以及向SOC410中的电路发信号通知诸如中断和复位的事件的双向连接,并且还可通过专用或特用总线直接连接到SOC 410中的其他元件。
互连织构430包括织构传送层431、标记为“IOMS”的输入/输出(I/O)主/从控制器432、标记为“IOHUB”的I/O集线器433、外围部件高速互连(PCIe)控制器434、标记为“ACM”的加速器高速缓存一致性互连控制器435,以及各自标记为“CS”的一致性从电路436和437。织构传送层431包括连接到CCM 422的下游端口的上游端口、连接到电源/中断控制器423的上游端口,以及四个下游端口。IOMS 432具有连接到织构传送层431的第一下游端口的上游端口,以及下游端口。I/O集线器433具有连接到IOMS432的下游端口的上游端口,以及下游端口。PCIe控制器434具有连接到IOHUB 433的下游端口的上游端口,以及下游端口。ACM 435具有连接到织构传送层431的第二下游端口的上游端口,以及用于传达标记为“CXL.cache”的CXL高速缓存事务的下游端口。CS 436具有连接到织构传送层431的第三下游端口的上游端口,以及用于传达标记为“CXL.mem”的CXL存储器事务的下游端口。CS 437具有连接到织构传送层431的第四下游端口的上游端口,以及下游端口。IOMS 432是用于输入/输出设备访问的高级控制器,并且可包括用于将存储器地址重新映射到I/O设备的输入/输出存储器管理单元(IOMMU)。IOHUB 433是用于I/O访问的存储设备。PCIe控制器434根据PCIe协议执行I/O访问,并且允许深度PCIe织构中的PCIe交换机、桥接器和设备的深度分级结构。PCIe控制器434结合在CPU复合体421中的一个或多个处理器上运行的固件可形成PCIe根复合体。ACM控制器435通过通信链路接收并履行来自一个或多个外部处理加速器的高速缓存一致请求。ACM控制器435实例化完整CXL主代理,该完整CXL主代理具有使用完整的一组CXL协议存储器事务类型(见图6)来进行和履行对附接到SOC 410或其他加速器的存储器的存储器访问请求的能力。CS 436和437路由从CPU复合体421发起的其他存储器访问请求,其中CS436路由CXL流量并且CS 437路由本地存储器流量。
CNLI电路440具有连接到ACM 435的下游端口的第一上游端口、连接到CS 436的下游端口的第二上游端口,以及下游端口。CNLI电路440执行针对CXL织构的网络层协议活动。
UMC 450具有连接到CS 437的下游端口的上游端口,以及用于通过物理接口电路连接到外部存储器的下游端口,图4中未示出。UMC 450执行命令缓冲、重新排序和定时合格性实施,以便有效利用UMC 450的下游端口和DDR存储器和/或NVDIMM-P存储器之间的总线。
数据输入/输出块460包括互连块461和标记为462至466的一组数字I/O(“DXIO”)控制器。DXIO控制器462至466执行与PCIe或CXL事务相关联的数据链路层协议功能,视情况而定。DXIO控制器462与PCIe链路相关联,并且在其输出和PCIe链路之间具有独立的PCIe相容物理接口电路(图4中未示出)。
物理接口电路(PHY)470包括四个单独的PHY电路471至474,每个PHY电路连接在相应的DXIO控制器和SOC 410的相应的I/O端口之间,并且适于连接到不同的外部CXL设备。PHY 471至474根据CXL通信协议来执行物理层接口功能。
微序列器480具有用于接收标记为“终端事件触发器”的信号的第一输入、用于接收标记为“非终端事件触发器”的信号的第二输入,以及连接到SOC 410中的各种电路以用于提供将在下面进一步描述的控制信号的多信号输出端口。SOC 410包括生成终端事件触发信号和非终端事件触发信号的电路。这些电路未在图4中示出,但将在下文进一步描述。
存储器系统490包括连接到PHY 471的下游端口的作为CXL MEM设备0操作的存储器491、连接到PHY 471的下游端口的作为CXL MEM设备1操作的存储器492、连接到PHY 473的下游端口的CXL加速器一致性主控制器(ACM)493、连接到PHY 474的下游端口的CXL ACM494,以及连接到UMC 450的下游端口的呈双倍数据速率(DDR)DRAM/NVDIMM-P存储器495形式的存储类存储器。
显然,像SOC 410这样的当代SOC的数据接口和分布式存储器分级结构是极其复杂、分层和分布式的。这种复杂的互连织构对支持数据处理系统中的运行时全局推送到持久性提出了挑战,这些挑战通过本文所述的技术来解决。
微序列器480是硬件控制器,其将应用软件、操作系统或系统固件从识别和响应运行时全局推送到持久性要求的任务中卸下负担。首先,微序列器致使SOC 410中的所有高速缓存通过将更新后的内容写入存储器来刷新它们的脏数据。刷新可通过以下两种方式完成:通过在微序列器480上运行的固件,该固件检查SOC 410中的每个高速缓存中的每个行的状态,并且选择性地致使脏高速缓存行被写入到存储器;或者优选地通过到高速缓存中的每个高速缓存的显式硬件信号,该显式硬件信号致使这些高速缓存通过检查所有高速缓存行并将包含脏数据的高速缓存行写入到主存储器来自动刷新脏数据。每高速缓存路脏指示可加速高速缓存刷新的过程。脏指示被清除的那些高速缓存路可被高速缓存刷新过程跳过。
其次,微序列器480致使存在于互连织构430或其他接口电路中某处的每个运行中存储器写入事务完成,并通过互连织构中的任何缓冲器点排出到外部持久性存储器。在一个示例中,织构传送层431可具有存储对存储器系统的读取和写入命令的缓冲器。响应于触发信号,微序列器480致使织构传送层431将所有写入推出到存储器系统并且允许这些写入越过任何读取。在另一个示例中,UMC 450将DRAM写入存储在其内部命令队列中。响应于运行时推送到持久性触发,微序列器480致使UMC 450在继续遵循诸如优先将写入组合到打开页而不是将写入组合到关闭页的效率协议的情况下,将所有写入发送到存储器而不作用于任何待决读取。
微序列器480对两种类型的触发器作出不同响应。第一类型的触发器是终端事件触发器。终端事件触发是如危险复位请求、即将发生的电力故障、热过载或“跳闸”条件或指示需要立即终止数据处理系统400的操作的任何其他条件的事件。响应于终端事件触发器条件,微序列器480执行两个动作。首先,微序列器停止所有数据处理器的操作。然后,微序列器命令所有高速缓存和数据织构中的缓冲器将所有待决存储器事务刷新到持久性存储器。以此方式,微序列器480将速度优先于低功率消耗,因为需要尽可能快地将数据推送到持久性非易失性存储器。
第二类型的触发器是非终端事件触发器。非终端事件触发器是非关键事件,如遇到某个地址、检测到低处理器利用率、遇到某个日时、检测到自先前运行时全局推送至持久性操作以来的某个实耗时间,或检测到一个或多个高速缓存中的某个水平的“脏度”。非终端事件触发器允许系统周期性地将非常重要的数据诸如日志记录、影子分页等推送到外部持久性存储器。在非终端事件触发器的情况下,微序列器480不停止任何数据处理器核,而是致使高速缓存在不停止数据处理器的情况下将任何高速缓存中的所有脏数据发送到存储器接口,允许数据织构自然地推出数据,并且在没有复位的情况下重启操作。因此,响应于非终端触发事件,微序列器480在仅需要低功率消耗的情况下实施运行时全局推送到持久性。
响应于持久损失(这可由平台通过在非易失性存储器中设置“损失”标志来标识),应用软件在最后已知可信的状态处重新启动,即,应用软件执行检查点回滚和重放。例如,在一些配置中,“持久损失”错误被记录,并且在启动时,系统基本输入-输出系统(BIOS)固件识别持久损失并通过高级配置和电源接口(ACPI)“NFIT”对象进行报告。在其他实施方案中,“持续损失”被捕获在日志中,以便操作系统可直接了解该事件。
图5示出了根据一些实施方案的SOC中可用的运行时全局推送到持久性过程500的流程图。运行时全局推送到持久性过程500例如响应于由SOC接收接收到触发信号所指示的触发事件而发起。在动作框510中,如果触发器是终端事件触发器,则通过例如停止一组CPU核中的每个CPU核来停止数据处理器。在动作框520中,通过向数据织构发送对脏数据的写入请求来从高速缓存子系统刷新脏数据。接下来,在动作框530中,从附接到外部存储器接口的一致性存储器刷新来自任何CXL ACM控制器的脏数据。该动作包括将脏数据从外部CXL存储器设备读取到片上数据织构中。在该操作完成之后,在动作框540中,运行时全局推送到持久性过程通过向外部持久性存储器发送写入请求来刷新数据织构中的所有待决写入请求。外部持久性存储器可以是例如CXL类型3存储器设备(没有加速器的CXL存储器)或NVDIMM-P。然后在动作框550处,系统提供与CXL类型3存储器设备的握手。
图6以框图形式示出了根据一些实施方案的数据处理系统600,其示出了图4的SOC410执行图5的运行时全局推送到持久性过程500。图6中未示出数据处理系统400的各个块的参考标号。在虚线圆610所示的第一步骤中,停止CPU复合体421中的所有处理器。在虚线箭头620所示的第二步骤中,通过向数据织构发送带有脏数据的写入请求,从CPU复合体421中的每个处理器的高速缓存子系统刷新脏数据。这些请求流经织构传送层431并且被存储在CS 436(如果存储器被映射到CXL存储器设备491或492)或CS 437(如果存储器被映射到NVDIMM-P 495)中。在第三步骤中,来自ACM高速缓存(如果存在)的脏数据被刷新,并且该数据通过数据织构被发送到CS 436或CS 437,如箭头630所示。在第四步骤中,通过将数据发送到CXL存储器设备491或492或者发送到NVDIMM-P 495来刷新数据织构,如箭头640所示。最后,SOC 410根据CXL协议提供与CXL存储器设备491和492的握手。
图7以框图形式示出了根据一些实施方案的具有带有运行时全局推送到持久性的SOC 710的另一个数据处理系统700。SOC 710比图4的SOC 410更高度集成,并且被组织成分别标记为“象限0”、“象限1”、“象限2”和“象限3”的四个相当自主的象限720、730、740和750。象限720、730、740和750具有相应DDR存储器接口722、732、742及752,以及到外部高速缓存一致性设备(CCD)760、770、780和790的接口。然而,SOC 710具有标记为“P0”、“P1”、“P2”和“P3”的一组共享端口,用于连接到外部CXL设备诸如CXL类型3附接存储器,CXL类型3附接存储器将是非易失性的并且能够存储数据以保持耐久性。此外,因为至少一些触发事件,诸如即将发生的芯片范围功率损失或危险复位,需要刷新所有象限,所以公共微序列器760方便地提供控制信号以通过从象限专用资源和共享资源诸如公共芯片范围数据织构两者刷新脏数据来强制运行时全局推送到持久性。
图8以框图形式示出了图4的SOC 410中可用的终端事件触发器生成电路800。终端事件触发器生成电路800包括或门810、反相器820、或门822、温度传感器830、比较器832和与门834。或门810是3输入或门,该3输入或门具有用于接收标记为“复位”的复位信号的第一输入、用于接收标记为“电源故障”的信号的第二输入、用于接收标记为“热跳闸”的信号的第三输入,以及用于提供终端事件触发信号的输出。反相器820具有用于接收标记为“POWER_GOOD”的信号的输入,以及输出。或门822具有连接到反相器820的输出的第一输入、用于接收标记为“DROOP_DETECTED”的信号的第二输入,以及连接到或门810的第二输入以用于向其提供电源故障信号的输出。温度传感器830具有用于提供测量的温度感测信号的输出。比较器832具有连接到温度传感器830的输出的非反相输入、用于接收标记为“温度跳闸阈值”的值的反相输入,以及输出。与门834是2输入与门,该2输入与门具有连接到比较器832的输出的第一输入、用于接收标记为“热跳闸启用”的信号的第二输入,以及连接到或门810的第三输入以用于向其提供热跳闸信号的输出。
终端事件触发器生成电路800响应于复位条件、电力损失条件或热跳闸条件而提供终端事件触发信号。复位条件由复位信号的激活指示,复位信号可由例如软件复位或由例如用户敲击复位按钮引起的硬件复位生成。功率损失条件由系统功率信号的激活指示,如图8所示,由来自母板或系统主板的POWER_GOOD信号的去激活指示,或者由诸如检测到功率源中的下降的片上条件指示。热跳闸条件在被启用时由片上温度传感器830检测到,该片上温度传感器指示SOC的温度超过终端热跳闸阈值。在任何情况下,终端事件触发器生成电路800响应于其中将发生或可能发生整个系统关闭的严重系统条件而提供终端事件触发信号。在这种情况下,终端事件触发信号的激活将通知微序列器应当尽可能快地进行数据保存以避免损失系统状态。
显然,终端事件触发器生成电路800示出了构成终端事件的代表性的一组条件,但是其他实施方案将仅检测这些条件中的一些条件,而另一些实施方案中将检测指示终端事件的其他条件。
图9以框图形式示出了在图4的SOC 410和图7的SOC 700中可用的非终端事件触发器生成电路900。非终端事件触发器生成电路900通常包括评估电路910、地址触发电路920、活动触发电路930、日时触发电路940、实耗时间触发电路950,以及高速缓存脏度触发电路960。
评估电路910包括用于接收触发信号的一组输入和用于提供非终端事件触发信号的输出。评估电路910通常在输入之间实现逻辑或运算,其中评估电路响应于这些输入中的任一个输入的激活而激活非终端事件触发信号。取决于设计,评估电路还可具有可复位的钟控锁存器,使得非终端事件触发信号仅在时钟信号的某个边沿被激活,并且响应于例如指示运行时全局推送到持久性操作的完成的握手信号而被复位。
地址触发电路920包括触发地址寄存器921和比较器922。触发地址寄存器921在特权执行状态下是可编程的,并且具有用于提供存储的触发地址的输出。比较器922是多位数字比较器,该多位数字比较器具有用于接收标记为“地址”的地址信号的第一输入、连接到触发地址寄存器921的输出的第二输入,以及用于向评估电路910的第一输入提供标记为“地址触发”的信号的输出。地址触发电路920是允许应用程序或操作系统通过访问某个地址来触发运行时全局推送到持久性操作的触发电路的简单示例。在具有多个CPU核和多线程操作系统的数据处理系统中,将针对每个CPU核复制地址触发电路920中的示例性电路。
活动触发电路930包括一组性能计数器931和逻辑电路932。性能计数器931响应于表示CPU核的活动的一组活动信号,并且使用相应的计数器来聚集各个事件。性能计数器931具有用于提供计数器的状态的输出。逻辑电路932具有连接到性能计数器931的输出的输入,以及用于向评估电路910的第二输入提供标记为“低利用率”的信号的输出。在图9所示的示例中,逻辑电路932可确定哪些活动构成重要事件。在低利用率信号的情况下,逻辑电路932可对每单位时间执行的指令进行计数,并且响应于检测到每单位时间执行的指令小于阈值而激活低利用率信号。如同地址触发电路920的情况一样,将针对多核系统中的每个CPU核复制示范性电路930。
日时触发电路940包括标记为“RTC”的实时时钟电路941、日时寄存器942和比较器943。RTC 941具有用于提供表示当前时刻的数字计数值的输出。寄存器942具有用于提供所选择的时刻例如上午4:00的输出。比较器943具有连接到实时时钟941的输出的第一输入、连接到寄存器942的输出的第二输入,以及用于向评估电路910的第三输入提供标记为“TOD”的时刻匹配符号的输出。日时触发电路940是不需要针对多CPU核系统中的每个CPU核被复制的非终端事件的示例。
实耗时间触发电路950包括定时器951。定时器951具有用于接收标记为“上一次触发”的信号的复位输入、用于接收标记为“时钟”的时钟信号的时钟输入,以及用于向评估电路910的第四输入提供标记为“下一次触发”的信号的终端计数(TC)输出。实耗时间触发电路950是将不需要针对多CPU核系统中的每个CPU核被复制的非终端事件的另一个示例。
高速缓存脏度触发电路960包括高速缓存961、编码器962、高速缓存脏水印963和比较器964。高速缓存961是CPU核中的高速缓存或者是在多个CPU核之间共享的高速缓存。在图9所示的示例中,高速缓存961实现上述MOESI状况协议。编码器962具有连接到高速缓存961的输入,以及输出,并且对脏的高速缓存行的数量进行计数。该逻辑比高速缓存脏度触发电路960中所示的逻辑稍复杂,因为编码器961将不仅计数设置了M位的高速缓存行的数量,而且计数设置了M位且清除了I位的高速缓存行的数量。高速缓存脏水印寄存器963在特权执行状态下是可编程的,并且具有用于提供存储的高速缓存脏水印的输出。比较器964具有连接到编码器962的输出的正输入、连接到高速缓存脏水印寄存器963的输出的负输入,以及连接到评估电路910的第五输入以用于向其提供标记为“高速缓存脏”的信号的输出。比较器964响应于高速缓存961中的脏行的数量超过高速缓存脏水印,在活动逻辑状态中提供其输出。将针对SOC中的每个高速缓存复制高速缓存脏度触发电路960。
显然,非终端事件触发器生成电路900示出了构成非终端事件的代表性的一组条件,但是其他实施方案将仅检测这些条件中的一些条件,而另一些实施方案中将检测指示非终端事件的其他条件。此外,评估电路可实现简单的逻辑或函数,或者可基于因素的组合来实现模糊逻辑评估。
因此,已经公开了实现运行时全局推送到持久性操作的数据处理系统、SOC和方法。该运行时操作致使重要数据从每个CPU核的高速缓存分级结构中被刷新,然后与其他待决操作一起从片上数据织构中被刷新并被存储在外部持久性存储器中。运行时全局推送到持久性操作允许保护和保存重要数据,并且允许数据处理系统在突然或意外系统故障的情况下备份到已知操作点。在各种实施方案中存在两种类型的操作可触发运行时全局推送到持久性操作:终端事件和非终端事件。SOC所支持的特定触发事件可在实施方案之间变化。
尽管微序列器480及其相关联的触发器生成电路800和900已经被描述为硬件电路,但是它们的功能可用硬件和软件的各种组合来实现。软件部件中的一些可被存储在计算机可读存储介质中以供至少一个处理器执行。此外,图5所述的方法中的一些或全部还可由存储在计算机可读存储介质中并且由至少一个处理器执行的指令管理。图5所示的操作中的每个操作可对应于存储在非暂态计算机存储器或计算机可读存储介质中的指令。在各种实施方案中,非暂态计算机可读存储介质包括磁盘或光盘存储设备、诸如闪存存储器的固态存储设备、或其他一个或多个非易失性存储器设备。存储在非暂态计算机可读存储介质上的计算机可读指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或可由一个或多个处理器执行的其他指令格式。
SOC 410和微序列器480或其任何部分可由呈数据库或可由程序读取并且直接或间接地用于制造集成电路的其他数据结构形式的计算机可访问数据结构描述或表示。例如,该数据结构可以是高级设计语言(HDL)诸如Verilog或VHDL中的硬件功能性的行为级描述或寄存器传送级(RTL)描述。描述可由合成工具读取,合成工具可合成描述以产生包括来自合成库的门列表的网表。网表包括门集,门集也表示包括集成电路的硬件的功能性。然后可以放置和路由网表以产生描述待应用于掩码的几何形状的数据集。然后可以在各种半导体制造步骤中使用掩模以产生集成电路。另选地,计算机可访问存储介质上的数据库可以是网表(具有或不具有合成库)或数据集(根据需要)或图形数据系统(GDS)II数据。
虽然已描述了特定实施方案,但是对这些实施方案的各种修改对于本领域技术人员将是显而易见的。例如,生成终端事件触发信号或非终端事件触发信号的条件可在实施方案之间变化。此外,在各种实施方案中,两个或更多个条件的符合可用于生成触发事件信号。本文所述的互连协议是示例性的,并且在其他实施方案中,可使用其他协议。所支持的SOC拓扑和高速缓存分级结构将在其他实施方案中变化。用于指示脏高速缓存行的状况位也在其他实施方案中变化。如本文所示和所述,各种电路直接连接在一起,但是在其他实施方案中,它们可通过各种中间电路间接连接,并且信号可通过各种电信号和光信号技术在电路之间传输。
因此,所附权利要求书旨在覆盖所公开实施方案的落入所公开实施方案的范围内的所有修改。
Claims (29)
1.一种具有运行时全局推送到持久性的片上系统,所述片上系统包括:
数据处理器,所述数据处理器具有高速缓存;
外部存储器接口,所述外部存储器接口耦接到所述高速缓存并且适于耦接到外部存储器;
其中所述高速缓存向所述外部存储器接口提供数据以供存储在所述外部存储器中;以及
微序列器,所述微序列器耦接到所述数据处理器,其中响应于触发信号,所述微序列器致使所述高速缓存通过将所述数据发送到所述外部存储器接口以供传输到所述外部存储器来刷新所述数据。
2.根据权利要求1所述的片上系统,其中:
响应于所述数据处理器访问数据元素,所述高速缓存取出对应于所述高速缓存中的所述数据元素的高速缓存行并且将所述高速缓存中的所述高速缓存行置于未修改状态;
响应于对所述数据元素的写入访问,所述高速缓存根据所述写入访问修改所述数据元素,并且将所述高速缓存行置于脏状态;并且
响应于所述触发信号,所述微序列器致使所述高速缓存刷新所述数据。
3.根据权利要求1所述的片上系统,其中:
所述数据处理器响应于解码刷新指令,致使所述高速缓存通过将所述数据发送到所述外部存储器接口以供传输到所述外部存储器来刷新所述数据。
4.根据权利要求1所述的片上系统,其中:
所述数据处理器通过数据织构耦接到所述外部存储器接口,所述数据织构包括至少一个缓冲器,所述至少一个缓冲器暂时存储通过所述外部存储器接口到所述外部存储器的写入请求;并且
所述数据织构进一步耦接到所述微序列器,并且响应于所述触发信号,所述微序列器进一步致使所述数据织构通过将与存储在所述至少一个缓冲器中的所述写入请求相关联的数据发送到所述外部存储器接口以供传输到所述外部存储器来刷新所述数据。
5.根据权利要求1所述的片上系统,其中:
所述触发信号包括终端事件触发信号和非终端事件触发信号中的一者;
响应于所述终端事件触发信号,所述微序列器停止所述数据处理器,然后将所述数据发送到所述外部存储器接口以供传输到所述外部存储器;并且
响应于所述非终端事件触发信号,所述微序列器在不停止所述数据处理器的情况下将所述数据发送到所述外部存储器接口以供传输到所述外部存储器。
6.根据权利要求5所述的片上系统,其中:
所述片上系统响应于以下中的一者而激活所述终端事件触发信号:检测到电源故障和检测到热跳闸条件。
7.根据权利要求5所述的片上系统,其中:
所述片上系统响应于以下中的一者而激活所述非终端事件触发信号:从正常操作状态到复位状态的改变、自先前触发事件以来的实耗时间、预先确定的日时、至少一个性能计数器的状态,以及检测到对预先确定的地址的访问。
8.根据权利要求7所述的片上系统,其中:
所述片上系统响应于所述至少一个性能计数器的状态而激活所述非终端事件触发信号,并且所述至少一个性能计数器的状态指示所述数据处理器的低利用率。
9.根据权利要求5所述的片上系统,其中:
所述片上系统响应于多个条件而生成所述非终端事件触发信号。
10.根据权利要求9所述的片上系统,其中所述多个条件包括以下中的至少一者:至少一个软件线程的执行状态,以及所述高速缓存的脏度条件。
11.根据权利要求1所述的片上系统,其中响应于所述触发信号,所述微序列器致使所述高速缓存基于已修改数据的地址是否对应于至少一个地址范围来选择性地刷新所述数据。
12.一种具有运行时全局推送到持久性的数据处理系统,所述数据处理系统包括:
片上系统;以及
外部存储器,所述外部存储器耦接到所述片上系统,
其中所述片上系统包括:
数据处理器,所述数据处理器具有高速缓存,其中所述数据处理器响应于执行指令而选择性地修改所述高速缓存中的数据;
外部存储器接口,所述外部存储器接口耦接到所述高速缓存和所述外部存储器;
其中所述高速缓存选择性地将已修改数据提供到所述外部存储器接口以供存储在所述外部存储器中;以及
微序列器,所述微序列器耦接到所述数据处理器,其中响应于触发信号,所述微序列器致使所述数据处理器停止指令的执行,并且随后通过将所述已修改数据发送到所述外部存储器接口以供传输到所述外部存储器来从所述高速缓存刷新所述已修改数据。
13.根据权利要求12所述的数据处理系统,其中:
所述外部存储器包括非易失性存储器。
14.根据权利要求12所述的数据处理系统,其中:
响应于所述数据处理器访问数据元素,所述高速缓存取出所述高速缓存中的所述数据,并且将所述高速缓存中的高速缓存行置于未修改状态;并且
响应于对所述数据元素的写入访问,所述高速缓存根据所述写入访问修改所述数据元素,并且将所述数据元素置于已修改状态,
所述微序列器致使所述数据处理器通过仅刷新处于所述已修改状态的高速缓存行来刷新所述高速缓存。
15.根据权利要求12所述的数据处理系统,其中:
所述数据处理器响应于解码刷新指令,进一步致使所述高速缓存通过将所述已修改数据发送到所述外部存储器接口以供传输到所述外部存储器来刷新所述已修改数据。
16.根据权利要求12所述的数据处理系统,其中:
所述数据处理器通过数据织构耦接到所述外部存储器接口,所述数据织构包括至少一个缓冲器,所述至少一个缓冲器暂时存储将所述已修改数据发送到所述外部存储器接口以供传输到所述外部存储器的请求;并且
所述数据织构进一步耦接到所述微序列器,并且响应于所述触发信号,所述微序列器进一步致使所述数据织构通过将与存储在所述至少一个缓冲器中的请求相关联的所述已修改数据发送到所述外部存储器接口以供传输到所述外部存储器来刷新所述已修改数据。
17.根据权利要求12所述的数据处理系统,其中:
所述触发信号包括终端事件触发信号和非终端事件触发信号中的一者;
响应于所述终端事件触发信号,所述微序列器停止所述数据处理器,然后将所述已修改数据发送到所述外部存储器接口以供传输到所述外部存储器;并且
响应于所述非终端事件触发信号,所述微序列器在不停止所述数据处理器的情况下将所述已修改数据发送到所述外部存储器接口以供传输到所述外部存储器。
18.根据权利要求17所述的数据处理系统,其中:
所述触发信号包括所述终端事件触发信号,并且所述片上系统响应于以下中的一者而激活所述终端事件触发信号:检测到电源故障和检测到热跳闸条件。
19.根据权利要求17所述的数据处理系统,其中:
所述触发信号包括所述非终端事件触发信号,并且所述片上系统响应于以下中的一者而激活所述非终端事件触发信号:从正常操作状态到复位状态的改变、自先前触发事件以来的实耗时间、预先确定的日时、至少一个性能计数器的状态,以及检测到对预先确定的地址的访问。
20.根据权利要求19所述的数据处理系统,其中所述片上系统响应于所述至少一个性能计数器的状态而生成所述非终端事件触发信号,并且其中所述至少一个性能计数器的状态指示所述数据处理器的低利用率。
21.根据权利要求17所述的数据处理系统,其中所述触发信号包括所述非终端事件触发信号,并且所述片上系统响应于多个条件而生成所述非终端事件触发信号。
22.根据权利要求21所述的数据处理系统,其中所述多个条件包括以下中的至少一者:至少一个软件线程的执行状态,以及所述高速缓存的脏度条件。
23.根据权利要求12的数据处理系统,其中响应于所述触发信号,所述微序列器致使所述高速缓存基于已修改数据的地址是否对应于至少一个地址范围来选择性地刷新所述已修改数据。
24.一种用于在包括通过数据织构耦接到外部存储器接口的具有高速缓存的数据处理器的片上系统中提供运行时全局推送到持久性的方法,所述方法包括:
接收触发信号,并且响应于接收到所述触发信号:
停止所述数据处理器;
通过将对应的第一写入请求发送到所述数据织构来从所述高速缓存刷新脏数据;
通过将所有待决写入请求发送到外部持久性存储器来从所述数据织构刷新所述待决写入请求;以及
在所述数据处理器和所述外部持久性存储器之间提供握手,从而建立所述运行时全局推送到持久性。
25.根据权利要求24所述的方法,其中从所述高速缓存所述刷新所述脏数据包括:
通过将对应的第二写入请求发送到所述数据织构来从耦接到所述外部存储器接口的一致性存储器刷新脏数据,然后从所述数据织构刷新所有待决写入请求。
26.根据权利要求24所述的方法,还包括:
响应于终端事件触发信号和非终端事件触发信号中的至少一者而生成所述触发信号。
27.根据权利要求26所述的方法,还包括:
当响应于所述终端事件触发信号而生成所述触发信号时,在提供所述握手之后复位所述数据处理器。
28.根据权利要求26所述的方法,还包括:
当响应于所述非终端事件触发信号而生成所述触发信号时,致使所述数据处理器在提供所述握手之后重启操作。
29.根据权利要求26所述的方法,还包括:
使用所述数据处理器的微序列器来控制所述停止、从所述高速缓存所述刷新脏数据、从所述数据织构所述刷新所有待决写入请求以及提供所述握手。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/095,229 US11455251B2 (en) | 2020-11-11 | 2020-11-11 | Enhanced durability for systems on chip (SOCs) |
US17/095,229 | 2020-11-11 | ||
PCT/US2021/057181 WO2022103595A1 (en) | 2020-11-11 | 2021-10-29 | Enhanced durability for systems on chip (socs) |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116472512A true CN116472512A (zh) | 2023-07-21 |
Family
ID=81454514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180076143.9A Pending CN116472512A (zh) | 2020-11-11 | 2021-10-29 | 片上系统(soc)的增强的耐久性 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11455251B2 (zh) |
EP (1) | EP4244725A4 (zh) |
JP (1) | JP7385083B2 (zh) |
KR (1) | KR102656509B1 (zh) |
CN (1) | CN116472512A (zh) |
WO (1) | WO2022103595A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11455251B2 (en) * | 2020-11-11 | 2022-09-27 | Advanced Micro Devices, Inc. | Enhanced durability for systems on chip (SOCs) |
US20240111682A1 (en) * | 2022-09-30 | 2024-04-04 | Advanced Micro Devices, Inc. | Runtime Flushing to Persistency in Heterogenous Systems |
WO2024073193A1 (en) * | 2022-09-30 | 2024-04-04 | Advanced Micro Devices, Inc. | Selecting between basic and global persistent flush modes |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5119485A (en) * | 1989-05-15 | 1992-06-02 | Motorola, Inc. | Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation |
JP2005010995A (ja) * | 2003-06-18 | 2005-01-13 | Nec Corp | マルチプロセッサシステム及びそのライトバックの障害処理方法 |
JP2009116681A (ja) * | 2007-11-07 | 2009-05-28 | Nec Corp | マルチプロセッサシステム、マイクロプロセッサ、及びマイクロプロセッサの障害処理方法 |
US20180032439A1 (en) * | 2016-07-28 | 2018-02-01 | Dell Products L.P. | System and method for controlling cache flush size |
CN107667353A (zh) * | 2015-06-26 | 2018-02-06 | 英特尔公司 | 将核存储器内容转储清除并恢复到外部存储器 |
CN107924221A (zh) * | 2015-08-05 | 2018-04-17 | 高通股份有限公司 | 用于便携式计算设备中的高速缓存感知的低功率模式控制的系统和方法 |
US20200117604A1 (en) * | 2013-03-08 | 2020-04-16 | Oracle International Corporation | Flushing entries in a cache |
US20200192798A1 (en) * | 2019-10-14 | 2020-06-18 | Intel Corporation | Global persistent flush |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100892857B1 (ko) | 2008-07-30 | 2009-04-15 | 주식회사 유비콘테크놀로지 | 시스템온칩의 내부 메모리 장치 및 그 운영방법 |
US9021156B2 (en) * | 2011-08-31 | 2015-04-28 | Prashanth Nimmala | Integrating intellectual property (IP) blocks into a processor |
KR101861772B1 (ko) * | 2012-02-07 | 2018-05-28 | 삼성전자주식회사 | 시스템온칩, 이의 동작 방법, 및 상기 시스템온칩을 포함하는 모바일 장치 |
US20130318308A1 (en) * | 2012-05-24 | 2013-11-28 | Sonics, Inc. | Scalable cache coherence for a network on a chip |
KR102064890B1 (ko) | 2013-10-22 | 2020-02-11 | 삼성전자 주식회사 | 내부 및 외부 메모리를 선택적으로 사용하는 harq 데이터 처리 장치 및 그 처리 방법 |
US10055352B2 (en) * | 2014-03-11 | 2018-08-21 | Amazon Technologies, Inc. | Page cache write logging at block-based storage |
US9436972B2 (en) * | 2014-03-27 | 2016-09-06 | Intel Corporation | System coherency in a distributed graphics processor hierarchy |
US10318340B2 (en) | 2014-12-31 | 2019-06-11 | Ati Technologies Ulc | NVRAM-aware data processing system |
US9767041B2 (en) | 2015-05-26 | 2017-09-19 | Intel Corporation | Managing sectored cache |
US9996487B2 (en) * | 2015-06-26 | 2018-06-12 | Intel Corporation | Coherent fabric interconnect for use in multiple topologies |
CN106326061B (zh) * | 2015-06-26 | 2020-06-23 | 伊姆西Ip控股有限责任公司 | 高速缓存数据处理方法及设备 |
US9959075B2 (en) | 2015-08-05 | 2018-05-01 | Qualcomm Incorporated | System and method for flush power aware low power mode control in a portable computing device |
US9760430B2 (en) * | 2015-08-28 | 2017-09-12 | Dell Products L.P. | System and method for dram-less SSD data protection during a power failure event |
US9916247B2 (en) * | 2016-02-04 | 2018-03-13 | International Business Machines Corporation | Cache management directory where hardware manages cache write requests and software manages cache read requests |
US10599503B2 (en) * | 2016-07-28 | 2020-03-24 | Dell Products L.P. | Triggering power loss protection on solid-state storage devices |
US20180336034A1 (en) | 2017-05-17 | 2018-11-22 | Hewlett Packard Enterprise Development Lp | Near memory computing architecture |
US20190129836A1 (en) * | 2017-10-27 | 2019-05-02 | Futurewei Technologies, Inc. | Computer processing unit (cpu) architecture for controlled and low power save of cpu data to persistent memory |
US11016890B2 (en) * | 2018-02-05 | 2021-05-25 | Micron Technology, Inc. | CPU cache flushing to persistent memory |
US20190354482A1 (en) * | 2018-05-21 | 2019-11-21 | Microsoft Technology Licensing, Llc | Time-based mechanism supporting flush operation |
US10885004B2 (en) * | 2018-06-19 | 2021-01-05 | Intel Corporation | Method and apparatus to manage flush of an atomic group of writes to persistent memory in response to an unexpected power loss |
US10545869B2 (en) * | 2018-06-29 | 2020-01-28 | Intel Corporation | Power button override for persistent memory enabled platforms |
US10915404B2 (en) * | 2018-11-02 | 2021-02-09 | Arm Limited | Persistent memory cleaning |
US10719431B2 (en) * | 2018-12-18 | 2020-07-21 | Sap Se | Graph based code performance analysis |
US10970225B1 (en) * | 2019-10-03 | 2021-04-06 | Arm Limited | Apparatus and method for handling cache maintenance operations |
US11157408B2 (en) * | 2019-12-17 | 2021-10-26 | International Business Machines Corporation | Cache snooping mode extending coherence protection for certain requests |
US20200136943A1 (en) | 2019-12-27 | 2020-04-30 | Intel Corporation | Storage management in a data management platform for cloud-native workloads |
US11397677B2 (en) * | 2020-04-30 | 2022-07-26 | Hewlett Packard Enterprise Development Lp | System and method for tracking persistent flushes |
US11615022B2 (en) * | 2020-07-30 | 2023-03-28 | Arm Limited | Apparatus and method for handling accesses targeting a memory |
US11455251B2 (en) | 2020-11-11 | 2022-09-27 | Advanced Micro Devices, Inc. | Enhanced durability for systems on chip (SOCs) |
US20210089225A1 (en) * | 2020-11-19 | 2021-03-25 | Intel Corporation | Adaptive device behavior based on available energy |
US20210182187A1 (en) * | 2020-12-24 | 2021-06-17 | Intel Corporation | Flushing Cache Lines Involving Persistent Memory |
-
2020
- 2020-11-11 US US17/095,229 patent/US11455251B2/en active Active
-
2021
- 2021-10-29 WO PCT/US2021/057181 patent/WO2022103595A1/en active Application Filing
- 2021-10-29 KR KR1020237017703A patent/KR102656509B1/ko active IP Right Grant
- 2021-10-29 CN CN202180076143.9A patent/CN116472512A/zh active Pending
- 2021-10-29 EP EP21892571.7A patent/EP4244725A4/en active Pending
- 2021-10-29 JP JP2023528193A patent/JP7385083B2/ja active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5119485A (en) * | 1989-05-15 | 1992-06-02 | Motorola, Inc. | Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation |
JP2005010995A (ja) * | 2003-06-18 | 2005-01-13 | Nec Corp | マルチプロセッサシステム及びそのライトバックの障害処理方法 |
JP2009116681A (ja) * | 2007-11-07 | 2009-05-28 | Nec Corp | マルチプロセッサシステム、マイクロプロセッサ、及びマイクロプロセッサの障害処理方法 |
US20200117604A1 (en) * | 2013-03-08 | 2020-04-16 | Oracle International Corporation | Flushing entries in a cache |
CN107667353A (zh) * | 2015-06-26 | 2018-02-06 | 英特尔公司 | 将核存储器内容转储清除并恢复到外部存储器 |
CN107924221A (zh) * | 2015-08-05 | 2018-04-17 | 高通股份有限公司 | 用于便携式计算设备中的高速缓存感知的低功率模式控制的系统和方法 |
US20180032439A1 (en) * | 2016-07-28 | 2018-02-01 | Dell Products L.P. | System and method for controlling cache flush size |
US20200192798A1 (en) * | 2019-10-14 | 2020-06-18 | Intel Corporation | Global persistent flush |
Also Published As
Publication number | Publication date |
---|---|
JP7385083B2 (ja) | 2023-11-21 |
EP4244725A4 (en) | 2024-01-03 |
KR102656509B1 (ko) | 2024-04-12 |
JP2023546984A (ja) | 2023-11-08 |
EP4244725A1 (en) | 2023-09-20 |
KR20230098610A (ko) | 2023-07-04 |
US20220147455A1 (en) | 2022-05-12 |
US11455251B2 (en) | 2022-09-27 |
WO2022103595A1 (en) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907200B2 (en) | Persistent memory management | |
JP7385083B2 (ja) | システムオンチップ(soc)のための強化された耐久性 | |
EP3531292B1 (en) | Methods and apparatus for supporting persistent memory | |
US9798556B2 (en) | Method, system, and apparatus for dynamic reconfiguration of resources | |
LaFrieda et al. | Utilizing dynamically coupled cores to form a resilient chip multiprocessor | |
TWI465906B (zh) | 用以執行無原子元資料之電力故障安全快取的技術 | |
US9262322B2 (en) | Method and apparatus for storing a processor architectural state in cache memory | |
US7650467B2 (en) | Coordination of multiprocessor operations with shared resources | |
US11544093B2 (en) | Virtual machine replication and migration | |
CN113448504A (zh) | 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器 | |
US20070038814A1 (en) | Systems and methods for selectively inclusive cache | |
CN101008921A (zh) | 基于总线侦听的嵌入式异构多核缓存一致性方法 | |
US9448937B1 (en) | Cache coherency | |
US10180800B2 (en) | Automated secure data and firmware migration between removable storage devices that supports boot partitions and replay protected memory blocks | |
WO2019041903A1 (zh) | 一种基于非易失存储的计算装置及其使用方法 | |
US20080228974A1 (en) | Design Structure for a Livelock Resolution Circuit | |
US20140189251A1 (en) | Update mask for handling interaction between fills and updates | |
US11966339B1 (en) | Selecting between basic and global persistent flush modes | |
US20240111680A1 (en) | Selecting Between Basic and Global Persistent Flush Modes | |
Roberts et al. | In-Memory Versioning (IMV) | |
KR20220138324A (ko) | 지속성 지원 방법 및 컴퓨팅 장치 | |
JP2023538241A (ja) | メモリロケーションに記憶されたデータが修正されたかどうかを識別するためのメモリロケーションの監視 | |
CN116414619A (zh) | 计算机系统以及在计算机系统中执行的方法 | |
Valero | Nicholas P. Carter1, William J. Dally2, Whay S. Lee3, Stephen W. Keckler4, and Andrew Chang2 | |
JPH04241050A (ja) | 計算機システムとその制御方法 |
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 |