CN117836750A - 可扩展片上系统 - Google Patents

可扩展片上系统 Download PDF

Info

Publication number
CN117836750A
CN117836750A CN202280056735.9A CN202280056735A CN117836750A CN 117836750 A CN117836750 A CN 117836750A CN 202280056735 A CN202280056735 A CN 202280056735A CN 117836750 A CN117836750 A CN 117836750A
Authority
CN
China
Prior art keywords
memory
cache
interrupt
network
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.)
Pending
Application number
CN202280056735.9A
Other languages
English (en)
Inventor
P·H·哈玛伦德
L·齐梅特
S·科洛
S·拉哈夫
J·瓦什
G·加格
T·库兹
J·E·戈尼安
C·E·图克
L·勒维-鲁斌
D·达维多夫
S·菲施维克
N·莱森
M·皮利普
G·R·威廉姆斯三世
H·考西卡
S·R·斯里达兰
E·塔玛里
S·V·托塔
J·M·雷德肖
S·R·赫特塞尔
S·M·福卡米
R·B·古纳
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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of CN117836750A publication Critical patent/CN117836750A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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
    • 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/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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
    • 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/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Microcomputers (AREA)
  • Image Processing (AREA)

Abstract

本发明提供了一种包括多个处理器内核、多个图形处理单元、多个外围电路和多个存储器控制器的系统,该系统被配置为使用统一存储器架构来支持系统的扩展。包括在该系统中的互连结构包括具有异构互连拓扑的至少两个网络。该至少两个网络包括将处理器内核和多个存储器控制器互连的一致网络。

Description

可扩展片上系统
背景技术
技术领域
本文所述的实施方案涉及数字系统,并且更具体地涉及具有可由系统中的异构代理访问的统一存储器的系统。
相关技术描述
在现代计算系统的设计中,将各种系统硬件部件集成到先前实现为离散硅部件的单个硅管芯中已变得越来越常见。例如,在过去,完整的计算机系统可能包括安装在底板上并耦接到芯片组的单独封装的微处理器,该芯片组将微处理器介接到诸如系统存储器、图形处理器和其他外围设备的其他设备。相比之下,半导体工艺技术的发展已经使得能够集成许多这些离散器件。这种集成的结果通常被称为“片上系统”(SOC)。
传统上,用于不同应用的SOC是单独架构、设计和实现的。例如,智能手表设备的SOC可具有严格的功率消耗要求,因为这种设备的形状因数限制了可用的电池大小并因此限制了设备的最长使用时间。同时,这种设备的较小尺寸可能限制SOC需要支持的外围设备的数量以及SOC执行的应用的计算要求。相比之下,用于移动电话应用的SOC将具有较大可用电池并因此具有较大功率预算,但也将预期具有更复杂的外围设备和更大的图形及一般计算要求。因此,预期这种SOC比针对较小设备的设计更大且更复杂。该比较可任意地扩展到其他应用。例如,诸如增强和/或虚拟现实系统的可穿戴计算解决方案可能预期呈现比不太复杂的设备更大的计算要求,并且用于桌面和/或机架安装式计算机系统的设备可能更大。
传统的SOC独立架构方法几乎没有设计重用的机会,并且设计工作在多个SOC具体实施中重复。
附图说明
以下详细描述参考附图,现在对这些附图进行简要描述。
图1是片上系统(SOC)的一个实施方案的框图。
图2是包括将代理互连的多个网络的一个实施方案的系统的框图。
图3是使用环形拓扑的网络的一个实施方案的框图。
图4是使用网状拓扑的网络的一个实施方案的框图。
图5是使用树形拓扑的网络的一个实施方案的框图。
图6是具有用于一个实施方案的多个网络的片上系统(SOC)的一个实施方案的框图。
图7是示出用于一个实施方案的图6中所示的独立网络中的一者的片上系统(SOC)的一个实施方案的框图。
图8是示出用于一个实施方案的图6中所示的独立网络中的另一者的片上系统(SOC)的一个实施方案的框图。
图9是示出用于一个实施方案的图6中所示的独立网络中的另一者的片上系统(SOC)的一个实施方案的框图。
图10是包括两个半导体管芯的多管芯系统的一个实施方案的框图。
图11是输入/输出(I/O)集群的一个实施方案的框图。
图12是处理器集群的一个实施方案的框图。
图13是示出虚拟信道和业务类型以及图6至图9中所示的网络的一对表,其中该对表用于一个实施方案。
图14是示出在网络上发起事务的一个实施方案的流程图。
图15是包括中断控制器和对应于多个处理器集群的多个集群中断控制器的系统的一个实施方案的框图。
图16是可实现图15所示的系统的一个实施方案的片上系统(SOC)的一个实施方案的框图。
图17是可在中断控制器的一个实施方案中实现的状态机的一个实施方案的框图。
图18是示出中断控制器执行中断递送的软或硬迭代的一个实施方案的操作的流程图。
图19是示出集群中断控制器的一个实施方案的操作的流程图。
图20是处理器的一个实施方案的框图。
图21是重排序缓冲器的一个实施方案的框图。
图22是示出图20所示的中断确认控制电路的一个实施方案的操作的流程图。
图23是可实现图15所示的系统的一个实施方案的多个SOC的框图。
图24是示出图23所示的一级中断控制器的一个实施方案的操作的流程图。
图25是示出图23所示的二级中断控制器的一个实施方案的操作的流程图。
图26是示出用于处理中断的方法的一个实施方案的流程图。
图27是实现为片上系统(SOC)的高速缓存一致性系统的一个实施方案的框图。
图28是示出用于高速缓存块的一致传送的三跨链协议的一个实施方案的框图。
图29是示出管理一个一致事务的填充与另一个一致事务的窥探之间的竞争的一个实施方案的框图。
图30是示出管理一个一致事务的窥探与另一个一致事务的确认之间的竞争的一个实施方案的框图。
图31是一致代理的一个实施方案的一部分的框图。
图32是示出在一致性控制器处处理请求的一个实施方案的操作的流程图。
图33是示出向存储器控制器传输请求以处理与该请求相关的完成的一致代理的一个实施方案的操作的流程图。
图34是示出接收窥探的一致代理的一个实施方案的操作的流程图。
图35是示出根据一个实施方案的对高速缓存块的冲突请求链的框图。
图36是示出并吞窥探的一致代理的一个实施方案的流程图。
图37是示出不可高速缓存请求的一个实施方案的框图。
图38是示出用于基于请求的可高速缓存性质和不可高速缓存性质生成窥探的一致性控制器的一个实施方案的操作的流程图。
图39是示出根据一致性协议的一个实施方案的多个高速缓存状态的表。
图40是示出可在一致性协议的一个实施方案中使用的多个消息的表。
图41是示出用于处理改变为独占条件请求的一致性控制器的一个实施方案的操作的流程图。
图42是示出用于读取目录条目并生成窥探的一致性控制器的一个实施方案的操作的流程图。
图43是示出用于处理独占无数据请求的一致性控制器的一个实施方案的操作的流程图。
图44是示出根据一些实施方案的片上系统的示例性元件的框图。
图45是示出根据一些实施方案的I/O代理与存储器控制器之间的交互的示例性元件的框图。
图46A是示出根据一些实施方案的I/O代理的被配置为处理写入事务的示例性元件的框图。
图46B是示出根据一些实施方案的I/O代理的被配置为处理读取事务的示例性元件的框图。
图47是示出根据一些实施方案的处理来自外围部件的读取事务请求的示例的流程图。
图48是示出根据一些实施方案的涉及I/O代理对读取事务请求的处理的示例性方法的流程图。
图49示出了具有耦接在一起的两个集成电路的系统的实施方案的框图。
图50示出了具有外部接口的集成电路的实施方案的框图。
图51描绘了具有两个集成电路的系统的框图,该两个集成电路利用接口封装器来路由各自外部接口的引脚指派。
图52示出了具有利用引脚束的外部接口的集成电路的实施方案的框图。
图53A描绘了使用互补接口耦接在一起的两个集成电路的两个示例。
图53B描绘了耦接在一起的两个集成电路的两个附加示例。
图54示出了用于在两个耦接的集成电路之间传送数据的方法的实施方案的流程图。
图55示出了用于在外部接口与集成电路内的片上路由器之间路由信号数据的方法的实施方案的流程图。
图56是多个片上系统(SOC)的一个实施方案的框图,其中给定SOC包括多个存储器控制器。
图57是示出了存储器控制器和SOC上的物理/逻辑布置的一个实施方案的框图。
图58是用于确定充当特定地址的存储器控制器的二元决策树的一个实施方案的框图。
图59是示出了多个存储器位置配置寄存器的一个实施方案的框图。
图60是示出了SOC在启动/上电期间的一个实施方案的操作的流程图。
图61是示出了SOC路由存储器请求的一个实施方案的操作的流程图。
图62是示出了存储器控制器响应于存储器请求的一个实施方案的操作的流程图。
图63是示出了用以确定存储器折叠的监测系统操作的一个实施方案的操作的流程图。
图64是示出了折叠存储器切片的一个实施方案的操作的流程图。
图65是示出了展开存储器切片的一个实施方案的操作的流程图。
图66是示出了存储器折叠方法的一个实施方案的流程图。
图67是示出了散列存储器地址的方法的一个实施方案的流程图。
图68是示出了形成紧凑管道地址的方法的一个实施方案的流程图。
图69是支持完整实例和部分实例的集成电路设计的一个实施方案的框图。
图70至图72是图69中所示集成电路的完整实例和部分实例的各种实施方案。
图73是图69中所示集成电路的一个实施方案的框图,该集成电路的每个子区域中具有本地时钟源。
图74是图69中所示集成电路的一个实施方案的框图,该集成电路的每个子区域中具有本地模拟焊盘。
图75是图69中所示集成电路的一个实施方案的框图,该集成电路具有在每个子区域的拐角处的禁止区域和用于排除靠近每个子区域的边缘的区域的互连“凸块”的区域。
图76是示出短线和对应电路部件的一个实施方案的框图。
图77是示出一对集成电路和该一对集成电路的某些附加细节的一个实施方案的框图。
图78是示出集成电路设计方法的一个实施方案的流程图。
图79是示出用于测试完整实例和部分实例的测试台布置的框图。
图80是示出用于部件级测试的测试台布置的框图。
图81是示出用于集成电路的设计和制造方法的一个实施方案的流程图。
图82是示出用于制造集成电路的方法的一个实施方案的流程图。
图83是系统的一个实施方案的框图。
图84是计算机可访问存储介质的一个实施方案的框图。
尽管本公开中所述的实施方案可受各种修改形式和另选形式的影响,但其具体实施方案在附图中以举例的方式示出并将在本文中详细描述。然而,应当理解,附图和对其的具体实施方式不旨在将实施方案限制为所公开的特定形式,而相反,本发明旨在涵盖落入所附权利要求书的实质和范围内的所有修改、等同物和另选方案。本文所使用的标题仅用于组织目的,并不旨在用于限制说明书的范围。
具体实施方式
SOC可包括实现完整计算机系统所必需的大部分元件,尽管一些元件(例如,系统存储器)可以在SOC外部。例如,SOC可包括一个或多个通用处理器内核、一个或多个图形处理单元以及与处理器内核和图形处理单元不同的一个或多个其他外围设备(诸如专用加速器、I/O接口或其他类型的设备)。SOC还可包括被配置为与系统存储器介接的一个或多个存储器控制器电路,以及被配置为提供存储器控制器电路、处理器内核、图形处理单元和外围设备之间的通信的互连结构。
给定SOC的设计要求通常由SOC所针对的特定应用的功率限制和性能要求来确定。例如,智能手表设备的SOC可具有严格的功率消耗要求,因为这种设备的形状因数限制了可用的电池大小并因此限制了设备的最长使用时间。同时,这种设备的较小尺寸可能限制SOC需要支持的外围设备的数量以及SOC执行的应用的计算要求。相比之下,用于移动电话应用的SOC将具有较大可用电池并因此具有较大功率预算,但也将预期具有更复杂的外围设备和更大的图形及一般计算要求。因此,预期这种SOC比针对较小设备的设计更大且更复杂。
该比较可任意地扩展到其他应用。例如,诸如增强和/或虚拟现实系统的可穿戴计算解决方案可能预期呈现比不太复杂的设备更大的计算要求,并且用于桌面和/或机架安装式计算机系统的设备可能更大。
由于系统是为更大的应用而构建的,因此可以一起使用多个芯片来扩展性能,从而形成“芯片系统”。本说明书将继续将这些系统称为“SOC”,无论它们是单个物理芯片还是多个物理芯片。本公开中的原理等同地适用于多芯片SOC和单芯片SOC。
本公开的发明人的洞察在于,以上讨论的针对各种应用的计算要求和对应SOC复杂性趋于从小到大扩展。如果SOC可被设计成在物理复杂性方面容易地扩展,则内核SOC设计可容易地针对多种应用定制,同时利用设计再使用并减少重复工作。此类SOC还向功能块(例如,处理内核或介质块)提供一致的视图,从而使其更容易集成到SOC,进一步减少工作量。即,相同的功能块(或“IP”)设计基本上无需修改,即可在各种规模的SOC中使用。另外,如果此类SOC设计能够以对于在SOC上执行的软件而言很大程度上或完全透明的方式扩展,则可容易地跨SOC的不同资源版本扩展的软件应用程序的开发将被极大简化。应用程序可被写入一次并且在各种规模的许多不同系统中自动地正确操作。当相同的软件跨不同资源版本扩展时,该软件向用户提供相同的接口,这是扩展的进一步有益效果。
本公开考虑了此类可扩展的SOC设计。具体地,内核SOC设计可包括一组处理器内核、图形处理单元、存储器控制器电路、外围设备以及被配置为将它们互连的互连结构。此外,处理器内核、图形处理单元和外围设备可被配置为经由统一存储器架构来存取系统存储器。统一存储器架构包括允许系统中的异构代理(处理器、图形处理单元、外围设备等)简单地且高性能地协作的统一地址空间。即,与将专用地址空间专用于图形处理单元并要求将数据复制到该专用地址空间和从该专用地址空间复制数据不同,图形处理单元、处理器内核和其他外围设备原则上可共享对可由存储器控制器电路访问的任何存储器地址的访问(在一些实施方案中,受限于权限或限制对某些类型存储器内容的访问的其他安全特征)。另外,统一存储器架构提供相同的存储器语义,因为SOC复杂性成比例扩展以满足不同系统的要求(例如,一组公共存储器语义)。例如,存储器语义可包括存储器排序属性、服务质量(QoS)支持和属性、存储器管理单元定义、高速缓存一致性功能等。统一地址空间可以是不同于物理地址空间的虚拟地址空间,或可以是物理地址空间,或为两者。
虽然架构在SOC被扩展时保持相同,但可能会有各种具体实施选择。例如,虚拟信道可用作QoS支持的部分,但如果不是所有QoS都在给定系统中得到保证,则可实施所支持虚拟信道的子集。取决于给定系统中所需的带宽和时延特性,可使用不同的互连结构具体实施。另外,一些特征在较小系统中可能不是必需的(例如,在单个存储器控制器系统中可能不需要用以平衡到各种存储器控制器的存储器流量的地址散列)。散列算法在具有少量存储器控制器(例如,2个或4个)的情况下可能不是至关重要的,但在使用较大数量的存储器控制器时则变为系统性能的较大贡献者。
另外,在设计部件中的一些时可考虑可扩展性。例如,存储器控制器可被设计成通过向结构添加附加存储器控制器来增大,每个附加存储器控制器具有地址空间、存储器高速缓存和一致性跟踪逻辑的一部分。
更具体地,公开了能够容易地缩小复杂性以及增大复杂性的SOC设计的实施方案。例如,在SOC中,处理器内核、图形处理单元、构造和其他设备可被布置并配置为使得SOC的大小和复杂性可在制造之前通过沿所定义的轴线“切断”SOC来容易地减小,使得所得设计仅包括原始设计中定义的部件的子集。当适当地终止原本将延伸到SOC的被消除部分的总线时,可利用较少设计和验证工作来获得原始SOC设计的复杂性降低版本。统一存储器架构可有利于将应用部署在复杂性降低设计中,给复杂性降低设计在一些情况下无需重大修改即可简单地操作。
如前所述,所公开的SOC设计的实施方案可被配置为在复杂性上增大。例如,单管芯SOC设计的多个实例可互连,从而得到具有比单管芯设计大2倍、3倍、4倍或更多倍的资源的系统。同样,统一存储器架构和一致SOC架构可有利于扩展使用由这些多管芯系统配置提供的附加计算资源的软件应用的开发和部署。
图1是耦接到一个或多个存储器诸如存储器12A-12m的可扩展SOC 10的系统的实施方案的框图。SOC 10可包括多个处理器集群14A-14n。处理器集群14A-14n可包括耦接一个或多个高速缓存(例如,高速缓存18)的一个或多个处理器(P)16。处理器16可包括通用处理器(例如,中央处理单元或CPU)以及其他类型的处理器,诸如图形处理单元(GPU)。SOC 10可包括一个或多个其他代理20A-20p。一个或多个其他代理20A-20p可包括例如各种外围电路/设备,和/或诸如耦接到一个或多个外围设备/电路的输入/输出代理(IOA)的桥接件。SOC 10可包括一个或多个存储器控制器22A-22m,每个存储器控制器在使用期间耦接到相应的存储器设备或电路12A-12m。在一个实施方案中,每个存储器控制器22A-22m可包括耦接到目录(图1中未示出一致性控制器和目录)的一致性控制器电路(更简要地说,“一致性控制器”或“CC”)。另外,在SOC 10中示出了管芯到管芯(D2D)电路26。存储器控制器22A-22m、其他代理20A-20p、D2D电路26和处理器集群14A-14n可耦接到互连件28以在各种部件22A-22m、20A-20p、26和14A-14n之间通信。顾名思义,在一个实施方案中,SOC 10的部件可集成到单个集成电路“芯片”上。在其他实施方案中,各种部件可在SOC 10外部其他芯片上或另外的离散部件上。可使用任何数量的集成或离散部件。在一个实施方案中,处理器集群14A-14n和存储器控制器22A-22m的子集可在耦接在一起以形成图1的SOC 10中所示部件的多个集成电路芯片中的一个集成电路芯片中实现。
D2D电路26可以是耦接到互连结构28并被配置为将互连结构28耦接到SOC 10的另一实例上的对应互连结构28的片外互连件。互连结构28和片外互连件26提供透明地连接集成电路的单个实例或集成电路的两个或更多个实例中的一个或多个存储器控制器电路、处理器内核、图形处理单元和外围设备的接口。即,经由D2D电路26,互连结构28在两个集成电路管芯上延伸,并且通信在源和目的地之间路由,该通信对源和目的地在集成电路管芯上的位置是透明的。互连结构28使用硬件电路(例如,D2D电路26)在两个或更多个集成电路管芯上延伸以自动地在源和目的地之间路由通信,与源和目的地是否在同一集成电路管芯上无关。
因此,D2D电路26支持SOC 10到系统中的SOC 10的两个或更多个实例的可扩展性。当包括两个或更多个实例时,包括统一地址空间的统一存储器架构在集成电路管芯的对处理器内核、图形处理单元或外围设备上执行的软件透明的两个或更多个实例上延伸。类似地,在系统中的集成电路管芯的单个实例的情况下,包括统一地址空间的统一存储器架构映射到对软件透明的单个实例。当系统中的两个或更多个实例包括在系统中时,系统的处理器内核16、图形处理单元、外围设备20A-20p和互连结构28的集合被分布在两个或更多个集成电路管芯上,这对软件也是透明的。
如上所述,处理器集群14A-14n可包括一个或多个处理器16。处理器16可用作SOC10的中央处理单元(CPU)。
系统的CPU包括执行系统主要控制软件诸如操作系统的一个或多个处理器。通常,由CPU在使用过程中执行的软件可控制系统的其他部件,以实现系统的期望的功能。处理器还可执行其他软件诸如应用程序。应用程序可提供用户功能,并且可依靠操作系统进行下层设备控制、调度、存储器管理等。因此,处理器也可被称为应用处理器。另外,给定集群14A-14n中的处理器16可为GPU,如先前所提及,并且可实施针对渲染、明暗和其他操纵进行优化的图形指令集。处理器集群14A-14n还可包括其他硬件,诸如高速缓存18和/或至系统的其他部件的接口(例如至互连件28的接口)。其他一致代理可包括非CPU或GPU的处理器。
通常,处理器可包括被配置为执行在由处理器实施的指令集架构中定义的指令的任何电路系统和/或微码。处理器可涵盖在具有作为片上系统(SOC 10)或其他集成水平的其他部件的集成电路上实施的处理器内核。处理器可进一步涵盖离散微处理器、集成到多芯片模块具体实施中的处理器内核和/或微处理器、实现为多个集成电路的处理器等。给定处理器集群14A-14n中的处理器16的数量可不同于另一个集群14A-14n中的处理器16的数量。一般来讲,可包括一个或多个处理器。另外,处理器16可在微架构具体实施、性能和功率特性等方面不同。在一些情况下,处理器甚至可在这些处理器实现的指令集架构、这些处理器的功能(例如,CPU、图形处理单元(GPU)处理器、微控制器、数字信号处理器、图像信号处理器等)等方面不同。
高速缓存18可具有任何容量和配置,诸如设置关联、直接映射或完全关联。高速缓存块大小可以是任何期望的大小(例如,32字节、64字节、128字节等)。高速缓存块可以是高速缓存18中的分配和解除分配的单元。另外,在该实施方案中,高速缓存块可以是在其上保持一致性的单元(例如,存储器地址空间的对齐的一致性粒度片段)。在一些情况下,高速缓存块也可称为高速缓存线。
存储器控制器22A-22m通常可包括用于从SOC 10的其他部件接收存储器操作并用于访问存储器12A-12m以完成存储器操作的电路系统。存储器控制器22A-22m可被配置为访问任何类型的存储器12A-12m。更具体地,存储器12A-12m可以是可被映射为随机存取存储器的任何类型的存储器设备。例如,存储器12A-12m可以是静态随机存取存储器(SRAM)、动态RAM(DRAM)诸如包括双倍数据速率(DDR、DDR2、DDR3、DDR4等)DRAM的同步DRAM(SDRAM)、非易失性存储器、图形DRAM诸如图形DDR DRAM(GDDR)以及高带宽存储器(HBM)。可支持DDRDRAM的低功率/移动版本(例如,LPDDR、mDDR等)。存储器控制器22A-22m可包括存储器操作的队列,以用于对操作进行排序(并且潜在地重新排序),并将这些操作呈现至存储器12A-12m。存储器控制器22A-22m还可包括用于存储等待写入到存储器的写入数据和等待返回到存储器操作源的读取数据的数据缓冲器(在数据并非从窥探提供的情况下)。在一些实施方案中,存储器控制器22A-22m可包括用于存储最近访问的存储器数据的存储器高速缓存。例如,在SOC具体实施中,存储器高速缓存可通过在预期很快将被再次访问的情况下避免从存储器12A-12m重新访问数据来降低SOC中的功率消耗。在一些情况下,存储器高速缓存也可称为系统高速缓存,其与私有高速缓存诸如高速缓存18或处理器16中的高速缓存不同,该私有高速缓存只服务于某些部件。此外,在一些实施方案中,系统高速缓存不需要位于存储器控制器22A-22m内。因此,在处理器内核、图形处理单元、外围设备和系统存储器之间可存在一个或多个高速缓存级。一个或多个存储器控制器电路22A-22m可包括插置在互连结构与系统存储器之间的相应存储器高速缓存,其中相应存储器高速缓存是一个或多个高速缓存级中的一者。
其他代理20A-20p通常可包括SOC C10中包括的各种附加硬件功能(例如,“外设”、“外围设备”或“外围电路”)。例如,外围设备可包括视频外围设备,诸如被配置为处理来自相机或其他图像传感器的图像捕捉数据的图像信号处理器、视频编码器/解码器、扩展器、旋转器、混合器等。外围设备可包括音频外围设备,诸如麦克风、扬声器、至麦克风和扬声器的接口、音频处理器、数字信号处理器、混合器等。外围设备可包括用于SOC 10外部的各种接口的接口控制器,包括诸如通用串行总线(USB)、包含PCI Express(PCIe)的外围部件互连(PCI)、串行和并行端口等接口。外围设备可包括联网外围设备诸如介质访问控制器(MAC)。可包括任何一组硬件。在一个实施方案中,其他代理20A-20p还可包括到一组外围设备的桥,诸如下文所述的IOA。在一个实施方案中,外围设备包括以下中的一者或多者:音频处理设备、视频处理设备、机器学习加速器电路、矩阵算术加速器电路、相机处理电路、显示流水线电路、非易失性存储器控制器、外围部件互连控制器、安全处理器或串行总线控制器。
互连件28可为用于在SOC 10的部件间进行通信的任何通信互连件和协议。互连件28可为基于总线的,包括共享总线配置、交叉开关配置和具有桥的分层总线。互连件28也可为基于分组的或电路交换的,并且可为具有桥的分层、交叉开关、点到点或其他互连件。在一个实施方案中,互连件28可包括多个独立的通信结构。
在一个实施方案中,当集成电路管芯的两个或更多个实例包括在系统中时,该系统还可包括被配置为跨两个或集成电路管芯耦接互连结构的总线的至少一个内插器件。在一个实施方案中,给定集成电路管芯包括被配置为管理该给定集成电路管芯的局部功率状态的功率管理器电路。在一个实施方案中,当集成电路管芯的两个或更多个实例包括在系统中时,相应的功率管理器被配置为管理集成电路管芯的局部功率状态,并且其中两个或更多个集成电路管芯中的至少一者包括被配置为使功率管理器电路同步的另一个功率管理器电路。
一般来讲,每个部件22A-22m、20A-20p和14A-14n的数量可根据实施方案而变化,并且可使用任何数量。如后缀“m”、“p”和“n”所指示,一种类型的部件的数量可不同于另一种类型的部件的数量。然而,给定类型的数量也可与另一类型的数量相同。另外,虽然图1的系统被示出为具有多个存储器控制器22A-22m,但也设想了具有一个存储器控制器22A-22m的实施方案。
虽然可扩展SOC设计的概念易于解释,但其执行具有挑战性。为了支持这种努力而开发了许多创新,这将在下文更详细地描述。具体地,图2至图14包括通信结构28的实施方案的进一步细节。图15至图26示出了可扩展中断结构的实施方案。图27至图43示出可在系统中的一致代理之间实施的可扩展高速缓存一致性机制的实施方案,包括处理器集群14A-14n以及一个或多个目录/一致性控制电路。在一个实施方案中,目录和一致性控制电路分布在多个存储器控制器22A-22m中,其中每个目录和一致性控制电路被配置为针对地址空间的映射到给定存储器控制器所耦接到的存储器设备12A-12m的部分来管理高速缓存一致性。图44至图48示出了用于一个或多个外围电路的IOA桥的实施方案。图49至图55示出了D2D电路26的实施方案的进一步细节。图56至图68示出了在多个存储器控制器22A-22m上分配地址空间的散列方案的实施方案。图69至图82示出了基于相同设计数据库支持用于不同系统的可扩展SOC 10的多次流片的设计方法的实施方案。
下面描述的各种实施方案和上面描述的实施方案可以任何期望的组合使用以形成本公开的实施方案。具体地,可组合来自任何实施方案的实施方案特征的任何子集以形成实施方案,包括不是在任何给定实施方案中描述的所有特征和/或不是所有实施方案。所有此类实施方案都是如本文所述的可扩展SOC的设想实施方案。
结构
图2至图14示出了互连结构28的各种实施方案。基于此描述,设想了一种系统,该系统包括:多个处理器内核;多个图形处理单元;不同于处理器内核和图形处理单元的多个外围设备;被配置为与系统存储器介接的一个或多个存储器控制器电路;以及被配置为在一个或多个存储器控制器电路与处理器内核、图形处理单元和外围设备之间提供通信的互连结构;其中互连结构包括具有异构操作特性的至少两个网络。在一个实施方案中,互连结构包括具有异构互连拓扑的至少两个网络。至少两个网络可包括将处理器内核和一个或多个存储器控制器电路互连的一致网络。更具体地,一致网络将一致代理互连,其中处理器内核可以是一致代理,或者处理器集群可以是一致代理。至少两个网络可包括耦接到图形处理单元和一个或多个存储器控制器电路的松弛有序(relaxed-ordered)网络。在一个实施方案中,外围设备包括设备的子集,其中该子集包括机器学习加速器电路或松弛次序(relaxed-order)大容量介质设备中的一者或多者,并且其中松弛有序网络进一步耦接到设备的到一个或多个存储器控制器电路的子集。至少两个网络可包括被耦接以使外围设备与一个或多个存储器控制器电路互连的输入输出网络。外围设备包括一个或多个实时设备。
在一个实施方案中,至少两个网络包括第一网络,该第一网络包括与至少两个网络中的第二网络相比减少时延的一个或多个特性。例如,一个或多个特性可在集成电路的表面区域上包括比第二网络短的路线。一个或多个特性可包括金属层中的第一互连件的布线,其提供比第二互连件的布线低的时延特性。
在一个实施方案中,至少两个网络包括第一网络,该第一网络包括与至少两个网络中的第二网络相比增加带宽的一个或多个特性。例如,一个或多个特性包括与第二网络相比更宽的互连。一个或多个特性包括金属层中的布线比第二网络的布线更远离实现系统所在的基板的表面。
在一个实施方案中,至少两个网络采用的互连拓扑包括星形拓扑、网状拓扑、环形拓扑、树形拓扑、胖树拓扑、超立方体拓扑或这些拓扑中的一者或多者的组合中的至少一者。在另一个实施方案中,至少两个网络在物理上和逻辑上是独立的。在又一个实施方案中,至少两个网络在第一操作模式下是物理上分离的,并且其中至少两个网络中的第一网络和至少两个网络中的第二网络是虚拟的并且在第二操作模式下共享单个物理网络。
在一个实施方案中,SOC被集成到半导体管芯。该SOC包括:多个处理器内核;多个图形处理单元;多个外围设备;一个或多个存储器控制器电路;以及被配置为在一个或多个存储器控制器电路与处理器内核、图形处理单元和外围设备之间提供通信的互连结构;其中互连结构包括至少第一网络和第二网络,其中第一网络包括与至少两个网络中的第二网络相比减少时延的一个或多个特性。例如,一个或多个特性包括第一网络在半导体管芯表面上的路线比第二网络的路线短。在另一个示例中,一个或多个特性包括金属层中的布线具有比用于第二网络的布线层低的时延特性。在一个实施方案中,第二网络包括与第一网络相比增加带宽的一个或多个第二特性。例如,一个或多个第二特性可包括与第二网络相比更宽的互连(例如,每个互连件具有比第一网络多的接线)。一个或多个第二特性可包括金属层中的布线比用于第一网络的布线层更密集。
在实施方案中,芯片上系统(SOC)可包括多个独立网络。网络可以是物理独立的(例如,具有形成网络的专用导线和其他电路系统)和逻辑独立的(例如,由SOC中的代理发起的通信可在逻辑上定义为在多个网络中的所选网络上传输,并且可不受在其他网络上传输的影响)。在一些实施方案中,可包括网络交换机以在给定网络上传输分组。网络交换机可以是网络的物理部分(例如,每个网络可能具有专用网络交换机)。在其他实施方案中,网络交换机可在物理独立的网络之间共享,并且因此可确保在网络中的一个网络上接收到的通信保持在该网络上。
通过提供物理和逻辑独立的网络,可经由不同网络上的并行通信来实现高带宽。另外,可在不同网络上传输不同的业务,并且因此可以针对给定类型的业务优化给定网络。例如,诸如SOC中的中央处理单元(CPU)的处理器可能对存储器时延敏感,并且可以高速缓存预期在处理器和存储器之间一致的数据。因此,可提供CPU网络,在该CPU网络上,系统中的CPU和存储器控制器是代理。可以优化CPU网络以提供低时延。例如,在实施方案中,可能存在用于低时延请求和批量请求的虚拟信道。与批量请求相比,低时延请求在结构周围由存储器控制器转发时更受青睐。CPU网络还可支持与被定义为进行一致通信的消息和协议的高速缓存一致性。另一网络可以是输入/输出(I/O)网络。此网络可由各种外围设备(“外设”)使用以与存储器通信。网络可支持外围设备所需的带宽并且还可支持高速缓存一致性。然而,I/O业务有时可能具有比CPU业务显著更高的时延。通过将I/O业务与从CPU到存储器业务分离,I/O业务对CPU业务造成的影响可能更小。CPU还可作为I/O网络上的代理而包括在内,用于管理一致性并与外围设备通信。在实施方案中,又一网络可以是松弛次序网络。CPU和I/O网络可能都支持这些网络上的通信之间的排序模型,这些模型提供了CPU和外围设备所期望的排序。然而,松弛次序网络可以是非一致的,并且可能不会执行很多的排序约束。松弛次序网络可由图形处理单元(GPU)使用以与存储器控制器通信。因此,GPU可在网络中具有专用带宽,并且可能不受CPU和/或外围设备所需的排序的限制。其他实施方案可根据需要采用上述网络的任何子集和/或任何额外网络。
网络交换机可以是被配置为接收网络上的通信并且在通信目的地的方向上转发网络上的通信的电路。例如,由处理器发起的通信可被传输到控制映射到通信地址的存储器的存储器控制器。在每个网络交换机处,可将通信向前传输到存储器控制器。如果通信是读取,则存储器控制器可将数据传送回源,并且每个网络交换机可向源转发网络上的数据。在实施方案中,网络可支持多个虚拟信道。网络交换机可采用专用于每个虚拟信道的资源(例如,缓冲区),使得虚拟信道上的通信可以保持逻辑独立。网络交换机还可以采用仲裁电路系统以在缓冲的通信中进行选择以在网络上转发。虚拟信道可以是物理上共享网络但逻辑上独立于网络的信道(例如,一个虚拟信道中的通信不阻挡另一虚拟信道上的通信的前进)。
代理通常可以是可在网络上发起和/或收集通信的任何设备(例如,处理器、外围设备、存储器控制器等)。源代理生成(发起)通信,并且目的地代理接收(收集)通信。给定代理可以是用于某些通信的源代理和用于其他通信的目的地代理。
现在转向附图,图2是示出物理和逻辑独立的网络的通用图。图3至图5是各种网络拓扑的示例。图6是具有多个物理和逻辑独立的网络的SOC的示例。图7至图9为更加清楚起见而分别示出了图6的各种网络。图10是包括两个半导体管芯的系统的框图,示出了网络到SOC的多个实例的可扩展性。图11和图12是更详细地示出的示例代理。图13示出了各种虚拟信道和通信类型以及虚拟信道和通信类型所应用于的图6中的网络。图14是示出一种方法的流程图。以下描述将基于附图提供进一步的细节。
图2是包括将代理互连的多个网络的一个实施方案的系统的框图。在图1中,示出了代理A10A、A10B和A10C,但在各种实施方案中可包括任何数量的代理。代理A10A至A10B耦接到网络A12A,并且代理A10A和A10C耦接到网络A12B。同样,在各种实施方案中,可包括任何数量的网络A12A至A12B。网络A12A包括多个网络交换机,这些网络交换机包括网络交换机A14A、A14AB、A14AM和A14AN(统称为网络交换机A14A);并且,类似地,网络A12B包括多个网络交换机,这些网络交换机包括网络交换机A14BA、A14BB、A14BM和A14BN(统称为网络交换机A14B)。不同的网络A12A至A12B可包括不同数量的网络交换机A14A、12A至A12B,这些网络交换机包括物理上分离的连接(“接线”、“总线”或“互连件”),如图2中的各种箭头所示。
由于每个网络A12A至A12B具有其自身的物理和逻辑分离的互连件和网络交换机,因此网络A12A至A12B是物理和逻辑分离的。网络A12A上的通信不受网络A12B上的通信的影响,并且反之亦然。甚至相应网络A12A至A12B中的互连件上的带宽也是分离且独立的。
任选地,代理A10A至A10C可包括或者可耦接到网络接口电路(分别为附图标记A16A至A16C)。一些代理A10A至A10C可包括或者可耦接到网络接口A16A至A16C,而其他代理A10A至A10C可能不包括或者可能不耦接到网络接口A16A至A16C。网络接口A16A至A16C可被配置为代表对应代理A10A至A10C在网络A12A至A12B上传输和接收业务。网络接口A16A至A16C可被配置为转换或修改由对应代理A10A至A10C发出的通信以符合网络A12A至A12B的协议/格式,以及移除修改或将接收到的通信转换为由代理A10A至A10C使用的协议/格式。因此,网络接口A16A至A16C可用于未专门设计成直接与网络A12A至A12B介接的代理A10A至A10C。在一些情况下,代理A10A至A10C可在多于一个网络上通信(例如,代理A10A在图1中的两个网络A12A至A12B上通信)。对应网络接口A16A可被配置为根据每个通信被分配到哪个网络A12A至A12B来分离由代理A10A发布到网络A12A至A12B的业务;并且网络接口A16A可被配置为组合从网络A12A至A12B接收到的用于对应代理A10A的业务。可使用用于确定网络A12A至A12B将承载给定通信的任何机制(例如,在各种实施方案中,基于通信类型、用于通信的目的地代理A10B至A10C、地址等)。
由于网络接口电路是任选的并且许多网络接口电路对于直接支持网络A12A至A12B的代理来说是不需要的,因此为了简单起见,将在其余附图中省略网络接口电路。然而,应当理解,网络接口电路可由任何代理或代理子集甚至所有代理用于任何所示出的实施方案中。
在实施方案中,图2的系统可实施为SOC,并且图2中所示出的部件可形成在单个半导体基板管芯上。包括在SOC中的电路系统可包括多个代理A10C和耦接到多个代理A10A至A10C的多个网络交换机A14A至A14B。多个网络交换机A14A至A14B互连以形成多个物理和逻辑独立的网络A12A至A12B。
由于网络A12A至A12B是物理和逻辑独立的,因此不同网络可具有不同的拓扑。例如,给定网络可具有环形、网状、树形、星形、完全连接的一组网络交换机(例如,网络中的交换机彼此直接连接)、具有耦接到总线的多个代理的共享总线等,或任何一个或多个拓扑的混合。每个网络A12A至A12B可采用例如提供该网络所期望的带宽和时延属性或提供该网络的任何期望属性的拓扑。因此,通常,SOC可包括根据第一拓扑构造的第一网络和根据与第一拓扑不同的第二拓扑构造的第二网络。
图3至图5示出了示例性拓扑。图3是使用环形拓扑来耦接代理A10A至A10C的网络的一个实施方案的框图。在图3的示例中,环由网络交换机A14AA至A14AH形成。代理A10A耦接到网络交换机A14AA;代理A10B耦接到网络交换机A14AB;并且代理A10C耦接到网络交换机A14AE。
在环形拓扑中,每个网络交换机A14AA至A14AH可连接到其他两个网络交换机A14AA至A14AH,并且交换机形成环,使得任何网络交换机A14AA至A14AH可通过在环上在其他网络交换机的方向上传输通信来到达环中的任何其他网络交换机。给定通信可通过环中的一个或多个中间网络交换机以到达目标网络交换机。当给定网络交换机A14AA至A14AH接收到来自环上的相邻网络交换机A14AA至A14AH的通信时,给定网络交换机可检查通信以确定给定网络交换机所耦接到的代理A10A至A10C是不是通信的目的地。如果是,则给定网络交换机可终止通信并将通信转发到代理。如果不是,则给定网络交换机可将通信转发到环上的下一网络交换机(例如,与给定网络交换机相邻并且不是给定网络交换机从中接收通信的相邻网络交换机的其他网络交换机A14AA至A14AH)。到给定网络交换机的相邻网络交换机可以是当给定网络交换机可直接传输通信且通信不经过任何中间网络交换机时的网络交换机。
图4是使用网状拓扑来耦接代理A10A至A10P的网络的一个实施方案的框图。如图4所示,网络可包括网络交换机A14AA至A14AH。每个网络交换机A14AA至A14AH耦接到两个或更多个其他网络交换机。例如,网络交换机A14AA耦接到网络交换机A14AB和A14AE;网络交换机A14AB耦接到网络交换机A14AA、A14AF和A14AC;等等,如图4所示。因此,网状网络中的不同网络交换机可耦接到不同数目的其他网络交换机。此外,虽然图4的实施方案具有相对对称的结构,但是其他网状网络可以是不对称的,取决于例如预期在网络上普遍存在的不同业务模式。在每个网络交换机A14AA至A14AH处,接收到的通信的一个或多个属性可用于确定接收网络交换机A14AA至A14AH将向其传输通信的相邻网络交换机A14AA至A14AH(除非接收网络交换机A14AA至A14AH所耦接到的代理A10A至A10P是通信的目的地,在这种情况下,接收网络交换机A14AA至A14AH可终止网络上的通信并且将其提供给目的地代理A10A至A10P)。例如,在实施方案中,网络交换机A14AA至A14AH可在系统初始化时编程以基于各种属性对通信进行路由。
在实施方案中,可以基于目的地代理对通信进行路由。路由可被配置为在网状拓扑中可支持的源代理和目的地代理之间通过最少数量的网络交换机(“最短路径”)来传送通信。另选地,给定源代理到给定目的地代理的不同通信可采用不同路径通过网状网络。例如,可以在较短路径上传输时延敏感通信,而不太关键的通信可以采用另一路径以避免消耗短路径上的带宽,其中该另一路径例如在使用期间可能负载较轻。
图4可以是部分连接的网状网络的示例:至少一些通信可通过网状网络中的一个或多个中间网络交换机。完全连接的网状网络可具有从每个网络交换机到每个其他网络交换机的连接,并且因此可以在不经过任何中间网络交换机的情况下传输任何通信。在各种实施方案中,可使用任何级别的互连性。
图5是使用树形拓扑来耦接代理A10A至A10E的网络的一个实施方案的框图。在该示例中,网络交换机A14A至A14AG互连以形成树。树是分层网络的一种形式,其中存在耦接到代理A10A至A10E的边缘网络交换机(例如,图5中的A14A、A14AB、A14AC、A14AD和A14AG)和仅耦接到其他网络交换机的中间网络交换机(例如,图5中的A14AE和A14AF)。例如,当特定代理通常是由其他代理发出的通信的目的地或通常是通信的源代理时,可使用树形网络。因此,例如,图5的树形网络可用于作为通信的主要源或目的地的代理A10E。例如,代理A10E可以是存储器控制器,其常常是存储器事务的目的地。
在其他实施方案中,可使用许多其他可能的拓扑。例如,星形拓扑在网络的“中心”具有源/目的地代理,并且其他代理可直接或通过一系列网络交换机耦接到中心代理。类似于树形拓扑,在中心代理常常是通信源或目的地的情况下,可使用星形拓扑。可使用共享总线拓扑,并且可使用任何拓扑中的两个或更多个拓扑的混合。
图6是具有用于一个实施方案的多个网络的片上系统(SOC)20的一个实施方案的框图。例如,SOC A20可以是图1中的SOC 10的实例。在图6的实施方案中,SOC A20包括多个处理器集群(P集群)A22A至A22B、多个输入/输出(I/O)集群A24A至A24D、多个存储器控制器A26A至A26D和多个图形处理单元(GPU)A28A至A28D。如名称(SOC)所暗示,图6所示的部件(在该实施方案中除了存储器A30A至A30D之外)可集成到单个半导体管芯或“芯片”上。然而,其他实施方案可采用以任何期望的方式耦接或封装的两个或更多个管芯。另外,虽然在图6的示例中示出了特定数目的P集群A22A至A22B、I/O集群A24A至A24D、存储器控制器A26A至A26D和GPU A28A至A28D,但是任何上述部件的数目和布置可变化并且可大于或小于图6中所示的数目。存储器A30A至A30D耦接到SOC A20,并且更具体地,分别耦接到存储器控制器A26A至A26D,如图6所示。
在例示的实施方案中,SOC A20包括由如图6所示的多个网络交换机A32、A34和A36形成的三个物理和逻辑独立的网络以及它们之间的互连件,示出为网络交换机与其他部件之间的箭头。其他实施方案可包括更多或更少的网络。例如,网络交换机A32、A34和A36可以是类似于上文关于图2至图5所描述的网络交换机A14A至A14B的网络交换机的实例。多个网络交换机A32、A34和A36耦接到多个P集群A22A至A22B、多个GPU A28A至A28D、多个存储器控制器A26A至A25B和多个I/O集群A24A至A24D,如图6所示。P集群A22A至A22B、GPU A28A至A28B、存储器控制器A26A至A26B和I/O集群A24A至A24D都可以是在SOC A20的各种网络上通信的代理的示例。可以根据需要包括其他代理。
在图6中,中央处理单元(CPU)网络由多个网络交换机的第一子集(例如,网络交换机A32)以及它们之间的互连件形成,互连件示出为短虚线/长虚线,诸如附图标记A38。CPU网络耦接P集群A22A至A22B和存储器控制器A26A至A26D。I/O网络由多个网络交换机的第二子集(例如,网络交换机A34)以及它们之间的互连件形成,互连件示出为实线,诸如附图标记40。I/O网络耦接P集群A22A至A22B、I/O集群A24A至A24D和存储器控制器A26A至A26B。松弛次序网络由多个网络交换机的第三子集(例如,网络交换机A36)以及它们之间的互连件形成,互连件示出为短虚线,诸如附图标记42。松弛次序网络耦接GPU 2A8A至A28D和存储器控制器A26A至A26D。在实施方案中,松弛次序网络也可耦接I/O集群A24A至A24D中的所选集群。如上所述,CPU网络、I/O网络和松弛次序网络彼此独立(例如,逻辑和物理独立)。在实施方案中,CPU网络和I/O网络上的协议支持高速缓存一致性(例如,网络是一致的)。松弛次序网络可能不支持高速缓存一致性(例如,网络是非一致的)。与CPU网络和I/O网络相比,松弛次序网络还具有减少的排序约束。例如,在实施方案中,针对每个网络定义一组虚拟信道和虚拟信道内的子信道。对于CPU和I/O网络,可对在相同源和目的地代理之间以及相同虚拟信道和子信道中的通信进行排序。对于松弛次序网络,可对相同源和目的地代理之间的通信进行排序。在实施方案中,可仅对相同源和目的地代理之间到相同地址(以给定粒度,例如高速缓存块)的通信进行排序。因为在松弛次序网络上执行的排序不太严格,所以可实现平均更高的带宽,因为例如如果较年轻的事务准备在较老的事务之前完成,那么可准许事务无序地完成。
在各种实施方案中,网络交换机A32、A34和A36之间的互连件可以具有任何形式和配置。例如,在一个实施方案中,互连件可以是点对点的单向链路(例如,总线或串行链路)。分组可在链路上传输,其中分组格式可包括指示分组在其中行进的虚拟信道和子信道的数据、存储器地址、源和目的地代理标识符、数据(如果适当的话)等。多个分组可以形成给定的事务。事务可以是源代理和目标代理之间的完整通信。例如,读取事务可包括从源代理到目标代理的读取请求分组、在事务一致情况下的高速缓存代理和目标代理和/或源代理之间的一个或多个一致消息分组、从目标代理到源代理的数据响应分组以及可能的从源代理到目标代理的完成分组,这取决于协议。写入事务可包括从源代理到目标代理的写入请求分组、在事务一致情况下的与读取事务一样的一个或多个一致消息分组以及可能的从目标代理到源代理的完成分组。在实施方案中,写入数据可包括在写入请求分组中,或者可在单独的写入数据分组中从源代理传输到目标代理。
在实施方案中,图6中的代理的布置可指示形成SOC A20的半导体管芯上的代理的物理布置。也就是说,图6可被视为半导体管芯的表面区域,并且图6中的各种部件的位置可近似于它们在该区域内的物理位置。因此,例如,I/O集群A24A至A24D可布置在由SOC A20的顶部表示的半导体管芯区域中(如图6中所定向)。P集群A22A至A22B可布置在由SOC A20中位于I/O集群A24A至A24D的布置下方它们之间的部分表示的区域中,如图6中所定向。GPUA24A至A28D可居中定位并且朝向由SOC A20的底部表示的区域延伸,如图6中所定向。存储器控制器A26A至A26D可布置在由SOC A20的右侧和左侧表示的区域上,如图6中所定向。
在实施方案中,SOC A20可被设计为直接耦接到SOC A20的一个或多个其他实例,将实例上的给定网络耦接为逻辑上的一个网络,在该网络上,一个管芯上的代理可通过网络以与该代理在同一管芯上的另一代理内通信相同的方式与不同管芯上的代理进行逻辑通信。虽然时延可能不同,但是可以以相同的方式执行通信。因此,如图6所示,网络延伸到SOC A20的底部,如图6中所定向。图6中未示出的接口电路系统(例如,串行器/解串器(SERDES)电路)可用于跨管芯边界与另一管芯通信。因此,网络能够扩展到两个或更多个半导体管芯。例如,两个或更多个半导体管芯可配置为单个系统,其中多个半导体管芯的存在对于在单个系统上执行的软件是透明的。在实施方案中,可使管芯到管芯通信中的延迟最小化,使得与作为对多管芯系统的软件透明性的一个方面的管芯内通信相比,管芯到管芯通信通常不会产生显著的额外时延。在其他实施方案中,网络可以是仅在管芯内通信的封闭网络。
如上所述,不同网络可具有不同的拓扑。在图6的实施方案中,例如,CPU和I/O网络实施环形拓扑,并且松弛次序可实施网状拓扑。然而,在其他实施方案中,可使用其他拓扑。图7、图8和图9示出了包括不同网络的SOC A30的部分:CPU(图7)、I/O(图8)和松弛次序(图9)。如图7和图8中可见,网络交换机A32和A34在耦接到另一管芯上的对应交换机时分别形成环。如果仅使用单个管芯,则可在SOC A20的底部处的两个网络交换机A32或A34之间进行连接,如图7和图8中所定向(例如,经由SOC A20的引脚上的外部连接)。另选地,底部的两个网络交换机A32或A34之间可具有可在单个管芯配置中使用的链路,或者网络可使用菊花链拓扑进行操作。
类似地,在图9中,示出了网络交换机A36在GPU A28A至A28D与存储器控制器A26A至A26D之间的网状拓扑中的连接。如前所述,在实施方案中,I/O集群A24A至A24D中的一个或多个还可耦接到松弛次序网络。例如,包括视频外围设备(例如,显示控制器、存储器扩展器/旋转器、视频编码器/解码器等)的I/O集群A24A至A24D可针对视频数据访问松弛次序网络。
如图9中所定向的SOC A30的底部附近的网络交换机A36可包括可路由到SOC A30的另一实例的连接,从而允许网状网络在多个管芯上延伸,如上文关于CPU和I/O网络所讨论。在单管芯配置中,可以不使用延伸到芯片外的路径。图10是两个管芯系统的框图,其中每个网络在两个SOC管芯A20A至A20B上延伸,形成逻辑上相同的网络,即使它们在两个管芯上延伸。为了简单起见,在图10中已经移除了网络交换机A32、A34和A36,并且松弛次序网络已经简化为线,但是在一个实施方案中可以是网状网络。I/O网络A44被示出为实线,CPU网络A46被示出为交替的长虚线和短虚线,并且松弛次序网络A48被示出为虚线。网络A44和A46的环形结构也在图10中显而易见。虽然图10中示出了两个管芯,但是其他实施方案可采用多于两个管芯。在各种实施方案中,网络可以菊花链连接在一起,通过每一管芯对之间的点对点链路或任何其他连接结构完全连接。
在实施方案中,I/O网络与CPU网络的物理分离可帮助系统提供处理器集群A22A至A22B的低时延存储器访问,因为I/O业务可以被委托给I/O网络。网络使用相同的存储器控制器来访问存储器,因此存储器控制器可被设计成在一定程度上相比于来自I/O网络的存储器业务更青睐来自CPU网络的存储器业务。处理器集群A22至A22B也可以是I/O网络的一部分,以便访问I/O集群A24A至A24D中的设备空间(例如,利用编程的输入/输出(PIO)事务)。然而,由处理器集群A22A至A22B发起的存储器事务可通过CPU网络传输。因此,CPU集群A22A至A22B可以是耦接到多个物理和逻辑独立的网络中的至少两个网络的代理的示例。该代理可被配置为生成待传输的事务,并且基于事务的类型(例如,存储器或PIO)而选择多个物理和逻辑独立的网络中的至少两个网络中的一个网络以在其上传输事务。
各种网络可包括不同数目的物理信道和/或虚拟信道。例如,I/O网络可具有多个请求信道和完成信道,而CPU网络可具有一个请求信道和一个完成信道(反之亦可)。可以任何期望的方式(例如,按请求的类型,按请求的优先级,平衡跨物理信道的带宽等)确定当存在多于一个请求时在给定请求信道上传输的请求。类似地,I/O和CPU网络可包括窥探虚拟信道以承载窥探请求,但松弛次序网络可能不包括窥探虚拟信道,因为它在此实施方案中是非一致的。
图11是更详细地示出的输入/输出(I/O)集群A24A的一个实施方案的框图。其他I/O集群A24B至A24D可为类似的。在图11的实施方案中,I/O集群A24A包括外围设备A50和A52、外围接口控制器A54、本地互连件A56和桥接件A58。外围设备A52可耦接到外部部件A60。外围接口控制器A54可耦接到外围接口A62。桥接件A58可耦接到网络交换机A34(或耦接到与网络交换机A34耦接的网络接口)。
外围设备A50和A52可包括包含在SOC A20中的任何另外硬件功能集(例如,除了CPU、GPU和存储器控制器之外)。例如,外围设备A50和A52可包括视频外围设备,例如被配置为处理来自相机或其他图像传感器的图像捕获数据的图像信号处理器、视频编码器/解码器、扩展器、旋转器、混合器、显示控制器等。外围设备可包括音频外围设备,例如麦克风、扬声器、到麦克风和扬声器的接口、音频处理器、数字信号处理器、混频器等。外围设备可包括联网外围设备诸如介质访问控制器(MAC)。外围设备可包括其他类型的存储器控制器,例如非易失性存储器控制器。一些外围设备A52可包括片上部件和片外部件A60。外围接口控制器A54可包括用于SOC A20外部的各种接口A62的接口控制器,包括诸如通用串行总线(USB)、包含PCI Express(PCIe)的外围部件互连(PCI)、串行和并行端口等接口。
本地互连件A56可以是各种外围设备A50、A52和A54在其上进行通信的互连件。本地互连件A56可不同于图6所示的系统范围互连件(例如,CPU、I/O和松弛网络)。桥接件A58可被配置为将本地互连件上的通信转换为系统范围互连件上的通信,并且反之亦可。在实施方案中,桥接件A58可耦接到网络交换机A34中的一个。桥接件A58还可管理从外围设备A50、A52和A54发出的事务之间的排序。例如,桥接件A58可使用网络上支持的高速缓存一致性协议来确保代表外围设备A50、A52和A54等的事务的排序。不同外围设备A50、A52和A54可具有不同的排序要求,并且桥接件A58可被配置为适应不同的要求。在一些实施方案中,桥接件A58也可实施各种性能增强特征。例如,桥接件A58可为给定请求预取数据。桥接件A58可捕获来自外围设备A50、A52和A54的一个或多个事务所针对的高速缓存块的一致副本(例如,处于独占状态),以允许事务在本地完成并强制执行排序。桥接件A58可推测性地捕获后续事务所针对的一个或多个高速缓存块的独占副本,并且可在成功维持独占状态直到后续事务可完成为止(例如,在满足先前事务的任何排序约束之后)的情况下使用高速缓存块来完成后续事务。因此,在实施方案中,高速缓存块内的多个请求可从高速缓存的副本得到服务。可在2021年4月5日提交的美国临时专利申请第63/170,868号、2021年4月16日提交的第63/175,868号和2021年4月16日提交的第63/175,877号中找到各种细节。这些专利申请以全文引用的方式并入本文中。如果任何并入的材料与本文明确阐述的材料发生冲突,则以本文明确阐述的材料为准。
图12是处理器集群A22A的一个实施方案的框图。其他实施方案可以是类似的。在图12的实施方案中,处理器集群A22A包括耦接到最后一级高速缓存(LLC)A72的一个或多个处理器A70。LLC A72可包括接口电路系统以介接到网络交换机A32和A34以根据需要在CPU网络和I/O网络上传输事务。
处理器A70可包括被配置为执行在由处理器A70实施的指令集架构中定义的指令的任何电路系统和/或微码。处理器A70可具有任何微架构具体实施、性能和功率特性等。例如,处理器可按顺序执行、乱序执行、超标量、超流水线等。
处理器A70内的LLC A72和任何高速缓存可具有任何容量和配置,诸如设置关联、直接映射或完全关联。高速缓存块大小可以是任何期望的大小(例如,32字节、64字节、128字节等)。高速缓存块可以是LLC A70中的分配和解除分配的单元。另外,在此实施方案中,高速缓存块可以是维持一致性的单元。在一些情况下,高速缓存块也可称为高速缓存线。在实施方案中,分布式的基于目录的一致性方案可用系统中的每个存储器控制器A26处的一致性点来实施,其中一致性点应用于在存储器控制器处映射到的存储器地址。目录可跟踪高速缓存在任何一致代理中的高速缓存块的状态。一致性方案在可能的多个半导体管芯上可扩展到许多存储器控制器。例如,一致性方案可采用以下特征中的一个或多个:用于在一致代理和存储代理处进行窥探过滤和竞争解析的精确目录;在存储器代理处确定的排序点(访问次序),串行化点在一致代理和存储器代理之间迁移;在请求一致代理时的次级完成(无效确认)集,使用由存储器代理提供的完成计数进行跟踪;通过由存储器代理提供的目录状态在一致代理处处理的填充/窥探和窥探/victim-ack竞争解析;不同的一级/二级共享状态,以辅助竞争解析并将飞行窥探限制到相同的地址/目标;一致代理处对冲突窥探的吸收,以避免死锁而不需要额外的否定确认/冲突/重试消息或动作;串行化最小化(每个访问者一个额外消息时延以通过冲突链转移所有权);消息最小化(直接在相关代理之间传递消息,并且没有用以处理冲突/竞争的额外消息(例如,没有消息返回存储器代理);存储条件,在因竞争失败时不会过度失效;独占所有权请求,旨在以最小化的数据传送(仅在脏的情况下)和相关高速缓存/目录状态来修改整个高速缓存线;用以处理能够高速缓存的流和不能高速缓存的流(例如,3跳和4跳协议)的不同的窥探返回和窥探转发消息类型。可在2020年9月11日提交的美国临时专利申请第63/077,371号中找到另外的细节。本专利申请以全文引用的方式并入本文中。如果任何并入的材料与本文明确阐述的材料发生冲突,则以本文明确阐述的材料为准。
图13是示出虚拟信道和业务类型以及图6至图9中所示网络的一对表A80和A82,其中该对表用于一个实施方案。如表A80所示,虚拟信道可包括批量虚拟信道、低时延(LLT)虚拟信道、实时(RT)虚拟信道和用于非DRAM消息的虚拟信道(VCP)。批量虚拟信道可以是用于存储器访问的默认虚拟信道。例如,批量虚拟信道可接收比LLT和RT虚拟信道更低质量的服务。LLT虚拟信道可用于高性能操作需要低时延的存储器事务。RT虚拟信道可用于具有用于正确操作(例如,视频流)的时延和/或带宽要求的存储器事务。VCP信道可用于分离未指向存储器的业务,以防止干扰存储器事务。
在实施方案中,可以在所有三个网络(CPU、I/O和松弛次序)上支持批量和LLT虚拟信道。RT虚拟信道可能在I/O网络上受支持,但在CPU或松弛次序网络上可能不受支持。类似地,VCP虚拟信道可能在I/O网络上受支持,但在CPU或松弛次序网络上可能不受支持。在实施方案中,VCP虚拟信道可仅针对以该网络上的网络交换机为目标的事务(例如,针对配置)而在CPU和松弛次序网络上受支持,并且因此可能在正常操作期间不被使用。因此,如表A80示出,不同网络可支持不同数目的虚拟信道。
表A82示出了各种业务类型以及哪些网络承载该业务类型。业务类型可包括一致存储器业务、非一致存储器业务、实时(RT)存储器业务和VCP(非存储器)业务。CPU和I/O网络都可承载一致业务。在实施方案中,由处理器集群A22A至A22B发起的一致存储器业务可承载在CPU网络上,而I/O网络可承载由I/O集群A24A至A24D发起的一致存储器业务。非一致存储器业务可承载在松弛次序网络上,并且RT业务和VCP业务可承载在I/O网络上。
图14是说明在网络上发起事务的方法的一个实施方案的流程图。在一个实施方案中,代理可生成待传输的事务(框A90)。事务将在多个物理和逻辑独立的网络中的一个网络上传输。根据第一拓扑来构造该多个物理和逻辑独立的网络中的第一网络,并根据与该第一拓扑不同的第二拓扑来构造该多个物理和逻辑独立的网络中的第二网络。基于事务的类型而选择多个物理和逻辑独立的网络中的一个网络以在其上传输事务(框A92)。例如,处理器集群A22A至A22B可在CPU网络上传输一致存储器业务并且在I/O网络上传输PIO业务。在实施方案中,代理可基于事务的除类型之外的一个或多个属性而选择虚拟信道,该虚拟信道是在多个物理和逻辑独立的网络中的所选网络上受支持的多个虚拟信道中的虚拟信道(框A94)。例如,CPU可选择用于存储器事务的子集的LLT虚拟信道(例如,作为高速缓存未命中的最老存储器事务,或者高速缓存未命中的数目达到阈值数目,此后可选择批量信道)。GPU可基于需要数据的紧急性而在LLT和批量虚拟信道之间进行选择。视频设备可根据需要使用RT虚拟信道(例如,显示控制器可在RT虚拟信道上发出帧数据读取)。可选择用于不是存储器事务的事务的VCP虚拟信道。代理可在所选网络和虚拟信道上传输事务分组。在实施方案中,不同虚拟信道中的事务分组可采用不同路径通过网络。在实施方案中,事务分组可基于事务分组的类型(例如,请求与响应)而采用不同路径。在实施方案中,不同虚拟信道和不同类型的事务都可以支持不同路径。其他实施方案可采用事务分组的一个或多个额外属性来确定这些分组通过网络的路径。以另一种方式来看,形成网络的网络交换机可基于虚拟信道、类型或任何其他属性来路由不同的分组。不同的路径可指在网络交换机之间穿过至少一个未在另一路径上穿过的段,即使使用不同路径的事务分组正从同一源行进到同一目的地。使用不同的路径可实现网络中的负载平衡和/或事务时延减小。
在实施方案中,一种系统包括多个处理器集群、多个存储器控制器、多个图形处理单元、多个代理,和耦接到多个处理器集群、多个图形处理单元、多个存储器控制器和多个代理的多个网络交换机。给定处理器集群包括一个或多个处理器。存储器控制器被配置为控制对存储器设备的访问。多个网络交换机的第一子集互连以在多个处理器集群和多个存储器控制器之间形成中央处理单元(CPU)网络。多个网络交换机的第二子集互连以在多个处理器集群、多个代理和多个存储器控制器之间形成输入/输出(I/O)网络。多个网络交换机的第三子集互连以在多个图形处理单元、多个代理中的所选代理和多个存储器控制器之间形成松弛次序网络。CPU网络、I/O网络和松弛次序网络彼此独立。CPU网络和I/O网络是一致的。与CPU网络和I/O网络相比,松弛次序网络是非一致的并且具有减少的排序约束。在实施方案中,CPU网络、I/O网络和松弛次序网络中的至少一者具有数个物理信道,数目与CPU网络、I/O网络和松弛次序网络中的另一者上的物理信道数目不同。在实施方案中,CPU网络是环形网络。在实施方案中,I/O网络是环形网络。在实施方案中,松弛次序网络是网状网络。在实施方案中,多个代理中的第一代理包括具有多个外围设备的I/O集群。在实施方案中,I/O集群进一步包括耦接到多个外围设备并且进一步耦接到第二子集中的第一网络交换机的桥接件。在实施方案中,系统进一步包括网络接口电路,该网络接口电路被配置为将来自给定代理的通信转换为用于CPU网络、I/O网络和松弛次序网络的给定网络的通信,其中网络接口电路耦接到给定网络中的多个网络交换机中的一个网络交换机。
在实施方案中,片上系统(SOC)包括其上形成有电路系统的半导体管芯。该电路系统包括多个代理和耦接到多个代理的多个网络交换机。该多个网络交换机互连以形成多个物理和逻辑独立的网络。根据第一拓扑来构造该多个物理和逻辑独立的网络中的第一网络,并根据与该第一拓扑不同的第二拓扑来构造该多个物理和逻辑独立的网络中的第二网络。在实施方案中,第一拓扑是环形拓扑。在实施方案中,第二拓扑是网状拓扑。在实施方案中,在第一网络上执行一致性。在实施方案中,第二网络是松弛次序网络。在实施方案中,多个物理和逻辑独立的网络中的至少一个网络实施第一数目的物理信道,并且多个物理和逻辑独立的网络中的至少另一个网络实施第二数目的物理信道,其中第一数目与第二数目不同。在实施方案中,第一网络包括一个或多个第一虚拟信道,并且第二网络包括一个或多个第二虚拟信道。一个或多个第一虚拟信道中的至少一个第一虚拟信道与一个或多个第二虚拟信道不同。在实施方案中,SOC进一步包括网络接口电路,该网络接口电路被配置为将来自多个代理中的给定代理的通信转换为多个物理和逻辑独立的网络中的给定网络的通信。网络接口电路耦接到给定网络中的多个网络交换机中的一个网络交换机。在实施方案中,多个代理中的第一代理耦接到多个物理和逻辑独立的网络中的至少两个网络。第一代理被配置为生成待传输的事务。第一代理被配置为基于事务的类型而选择多个物理和逻辑独立的网络中的至少两个网络中的一个网络以在其上传输事务。在实施方案中,至少两个网络中的一个网络是在其上传输I/O事务的I/O网络。
在实施方案中,一种方法包括在耦接到多个物理和逻辑独立的网络的代理中生成事务,其中根据第一拓扑来构造多个物理和逻辑独立的网络中的第一网络,并且根据与第一拓扑不同的第二拓扑来构造多个物理和逻辑独立的网络中的第二网络;并且基于事务的类型而选择多个物理和逻辑独立的网络中的一个网络以在其上传输事务。在实施方案中,该方法进一步包括基于事务的除类型之外的一个或多个属性而选择多个物理和逻辑独立的网络中的一个网络上支持的多个虚拟信道中的虚拟信道。
中断
图15至图26示出了可扩展中断结构的各种实施方案。例如,在包括两个或更多个集成电路管芯的系统中,给定集成电路管芯可包括局部中断分配电路以在给定集成电路管芯中的处理器内核之间分配中断。两个或更多个集成电路管芯中的至少一者可包括全局中断分配电路,其中局部中断分配电路和全局中断分配电路实现多级中断分配方案。在一个实施方案中,全局中断分配电路被配置为按顺序向局部中断分配电路传输中断请求,并且其中局部中断分配电路被配置为在答复来自全局中断分配电路的中断请求之前按顺序向局部中断目的地传输中断请求。
计算系统通常包括用作中央处理单元(CPU)的一个或多个处理器以及实现各种硬件功能的一个或多个外围设备。CPU执行控制各种外围设备的操作的控制软件(例如,操作系统)。CPU还可执行在系统中提供用户功能性的应用程序。除此之外,CPU可执行与外围设备交互并且代表外围设备执行各种服务的软件。在系统中不用作CPU的其他处理器(例如,集成到一些外围设备中的处理器)也可为外围设备执行此类软件。
外围设备可使用中断致使处理器代表它们来执行软件。一般来讲,外围设备通常通过向控制去往处理器的中断的中断控制器断言中断信号来发布中断。中断致使处理器停止执行其当前软件任务,保存任务的状态,使得该任务稍后可恢复。处理器可加载与中断相关的状态,并且开始执行中断服务例程。中断服务例程可以是用于外围设备的驱动程序代码,或者可根据需要将执行转移到驱动程序代码。一般来讲,驱动程序代码是针对外围设备提供以由处理器执行来控制和/或配置外围设备的代码。
从中断的断言到中断的服务的时延对于性能甚至系统中的功能性来说可能是重要的。除此之外,高效地确定哪个CPU将服务于中断并且在对系统其余部分造成最小扰动的情况下递送中断对于性能和维持系统中的低功耗两者来说可能是重要的。随着系统中处理器数量的增加,高效且有效地扩展中断递送甚至更为重要。
现在转向图15,示出了系统B10的包括耦接到多个集群中断控制器B24A-B24n的中断控制器B20的部分的一个实施方案的框图。多个集群中断控制器B24A-B24n中的每个集群中断控制器耦接到相应多个处理器B30(例如,处理器集群)。中断控制器B20耦接到多个中断源B32。
当中断控制器B20已接收到至少一个中断时,中断控制器B20可被配置为尝试递送中断(例如,递送到处理器B30以通过执行软件以记录中断以便中断服务例程进一步服务和/或经由中断服务例程提供中断所请求的处理来服务于中断)。在系统B10中,中断控制器B20可尝试通过集群中断控制器B24A-B24n来递送中断。每个集群控制器B24A-B24n与处理器集群相关联,并且可尝试将中断递送到形成集群的相应多个处理器中的处理器B30。
更具体地,中断控制器B20可被配置为尝试通过集群中断控制器B24A-B24n在多次迭代中递送中断。中断控制器B20与每个中断控制器B24A-B24n之间的接口可包括请求/确认(Ack)/否定确认(Nack)结构。例如,在例示的实施方案中,请求可通过以下迭代来标识:软、硬和强制。初始迭代(“软”迭代)可通过断言软请求来发信号通知。下一迭代(“硬”迭代)可通过断言硬请求来发信号通知。最后迭代(“强制”迭代)可通过断言强制请求来发信号通知。给定集群中断控制器B24A-B24n可用Ack响应(指示与给定集群中断控制器B24A-B24n相关联的处理器集群中的处理器B30已接受中断并且将处理至少一个中断)或Nack响应(指示处理器集群中的处理器B30已拒绝中断)来对软迭代和硬迭代作出响应。强制迭代可不使用Ack/Nack响应,而是可继续请求中断,直到中断得到服务,如下文将更详细讨论。
集群中断控制器B24A-B24n也可与处理器B30一起使用请求/Ack/Nack结构,从而尝试将中断递送到给定处理器B30。基于来自集群中断控制器B24A-B24n的请求,给定处理器B30可被配置为确定给定处理器B30是否能够在预定时间段内中断当前指令执行。如果给定处理器B30能够在该时间段内致力于中断,则给定处理器B30可被配置为断言Ack响应。如果给定处理器B30不能致力于中断,则给定处理器B30可被配置为断言Nack响应。在给定迭代中,集群中断控制器B24A-B24n可被配置为在至少一个处理器向集群中断控制器B24A-B24n断言Ack响应的情况下向中断控制器B20断言Ack响应,并且可被配置为在处理器B30断言Nack响应的情况下断言Nack响应。
在一个实施方案中,使用请求/Ack/Nack结构可提供中断是否正被请求的接收方(例如,集群中断控制器B24A-B24n或处理器B30,这取决于接口)接受的快速指示。例如,在一个实施方案中,该指示相比于超时可更快速。除此之外,在一个实施方案中,集群中断控制器B24A-B24n和中断控制器B20的分层结构可以更可扩展到系统B10中的更大数量的处理器(例如,多个处理器集群)。
对集群中断控制器B24A-B24n的迭代可包括尝试通过集群中断控制器B24A-B24n的至少一个子集、最多所有集群中断控制器B24A-B24n来递送中断。迭代可以任何期望方式进行。例如,在一个实施方案中,中断控制器B20可被配置为向相应集群中断控制器B24A-B24n串行地断言中断请求,该断言由来自集群中断控制器B24A-B24n中的一个集群中断控制器的Ack响应(以及在一个实施方案中,无附加待决中断)或由来自所有集群中断控制器B24A-B24n的Nack响应终止。也就是说,中断控制器可选择集群中断控制器B24A-B24n中的一个集群中断控制器,并且向所选择的集群中断控制器B24A-B24n断言中断请求(例如,通过断言软请求或硬请求,这取决于正在执行哪种迭代)。所选择的集群中断控制器B24A-B24n可用Ack响应作出响应,该Ack响应可终止迭代。另一方面,如果所选择的集群中断控制器B24A-B24n断言Nack响应,则中断控制器可被配置为选择另一集群中断控制器B24A-B24n并且可向所选择的集群中断控制器B24A-B24n断言软请求或硬请求。选择和断言可继续,直到接收到Ack响应或者集群中断控制器B24A-B24n中的每个集群中断控制器都已被选择并断言Nack响应。其他实施方案可以其他方式对集群中断控制器B24A-B24n执行迭代。例如,中断控制器B20可被配置为同时向两个或更多个集群中断控制器B24A-B24n的子集断言中断请求,从而在子集中的每个集群中断控制器B24A-B24n提供对中断请求的Nack响应的情况下继续其他子集。如果子集中的多于一个集群中断控制器B24A-B24n提供Ack响应,则这种具体实施可能导致伪中断,因此响应于中断而执行的代码可被设计成处理伪中断的发生。
初始迭代可以是如上所述的软迭代。在软迭代中,给定集群中断控制器B24A-B24n可尝试将中断递送到多个处理器B30的与给定集群中断控制器B24A-B24n相关联的子集。该子集可以是通电的处理器B30,在这种情况下,给定集群中断控制器B24A-B24n可不尝试向断电(或休眠)处理器B30递送中断。也就是说,断电处理器不包括在集群中断控制器B24A-B24n尝试向其递送中断的子集中。因此,断电处理器B30在软迭代中可保持断电。
基于在软迭代期间来自每个集群中断控制器B24A-B24n的Nack响应,中断控制器B20可执行硬迭代。在硬迭代中,相应集群中断控制器B24A-B24n可为给定处理器集群中的断电处理器B30供电,并且相应中断控制器B24A-B24n可尝试将中断递送到处理器集群中的每个处理器B30。更具体地,在一个实施方案中,如果处理器B30被通电以执行硬迭代,则该处理器B30可快速地可用于中断并且可频繁地产生Ack响应。
如果硬迭代以一个或多个中断仍待决终止,或者如果在完成软迭代和硬迭代之前发生超时,则中断控制器可通过断言强制信号来发起强制迭代。在一个实施方案中,可与集群中断控制器B24A-B24n并行地执行强制迭代,并且可不允许Nack响应。在一个实施方案中,强制迭代可保持在进行中,直到没有中断仍然待决。
给定集群中断控制器B24A-B24n可尝试以任何期望方式递送中断。例如,给定集群中断控制器B24A-B24n可向处理器集群中的相应处理器B30串行地断言中断请求,该断言由来自相应处理器B30中的一个处理器的Ack响应或者由来自给定集群中断控制器B24A-B24n将尝试向其递送中断的相应处理器B30中的每个处理器的Nack响应终止。也就是说,给定集群中断控制器B24A-B4n可选择相应处理器B30中的一个处理器,并且向所选择的处理器B30断言中断请求(例如,通过向所选择的处理器B30断言请求)。所选择的处理器B30可用Ack响应作出响应,该Ack响应可终止尝试。另一方面,如果所选择的处理器B30断言Nack响应,则给定集群中断控制器B24A-B24n可被配置为选择另一处理器B30并且可向所选择的处理器B30断言中断请求。选择和断言可继续,直到接收到Ack响应或者处理器B30中的每个处理器都已被选择并断言Nack响应(在软迭代中不包括断电处理器)。其他实施方案可同时向多个处理器B30或并行地向处理器B30断言中断请求,具有如上文所述的伪中断的可能性。给定集群中断控制器B24A-B24n可基于从处理器B30中的一个处理器接收到Ack响应而用Ack响应对中断控制器B20作出响应,或者可在处理器B30中的每个处理器用Nack响应作出响应的情况下用Nack响应对中断控制器B20作出响应。
在一个实施方案中,中断控制器B20向集群中断控制器B24A-B24n断言中断请求的顺序可以是可编程的。更具体地,在一个实施方案中,该顺序可基于中断的源而变化(例如,来自一个中断源B32的中断可导致一个顺序,并且来自另一中断源B32的中断可导致不同的顺序)。例如,在一个实施方案中,一个集群中的多个处理器B30可不同于另一集群中的多个处理器B30。一个处理器集群可具有针对性能进行优化但可为较高功率的处理器,而另一处理器集群可具有针对功率效率进行优化的处理器。来自需要相对较少处理的源的中断可倾向于具有功率高效处理器的集群,而来自需要显著处理的源的中断可倾向于具有较高性能处理器的集群。
中断源B32可以是被配置为断言中断以便致使处理器B30执行中断服务例程的任何硬件电路系统。例如,在一个实施方案中,各种外围部件(外围设备)可以是中断源。下文参照图16描述各种外围设备的示例。当处理器B30接收到中断时,中断与正由处理器B30执行的代码异步。一般来讲,处理器B30可被配置为通过以下方式来接受中断:停止当前代码的执行,保存处理器上下文以准许在服务于中断之后恢复执行,并且分支到预定地址以开始执行中断代码。预定地址处的代码可从中断控制器读取状态以确定哪个中断源B32断言中断以及将基于中断执行的对应中断服务例程。代码可将中断服务例程排队以供执行(其可由操作系统调度)并且提供中断服务例程所预期的数据。然后,代码可将执行返回至先前执行的代码(例如,处理器上下文可重新加载,并且执行可在中止执行的指令处恢复)。
中断可以任何期望方式从中断源B32传输到中断控制器B20。例如,可在中断源和中断控制器B20之间设置专用中断线路。给定中断源B32可在其专用线路上断言信号以将中断传输到中断控制器B20。另选地,可使用消息信号中断,其中通过用于系统B10中的其他通信的互连件来传输消息。例如,该消息可呈到指定地址的写入的形式。写入数据可以是标识中断的消息。可使用来自一些中断源B32的专用线路和来自其他中断源B32的消息信号中断的组合。
中断控制器B20可接收中断并且将其记录为中断控制器B20中的待决中断。来自各种中断源B32的中断可由中断控制器B20根据由操作系统或其他控制代码布置的各种可编程优先级进行优先级排序。
现在转向图16,示出了耦接到存储器B12的被实现为片上系统(SOC)B10的系统B10的一个实施方案的框图。在一个实施方案中,SOC B10可以是图1所示的SOC 10的实例。如名字所暗示的,SOC B10的部件可集成到作为集成电路“芯片”的单个半导体基板上。在一些实施方案中,这些部件可在系统中的两个或更多个离散芯片上实施。然而,在本文中将使用SOC B10作为示例。在例示的实施方案中,SOC B10的部件包括多个处理器集群B14A-B14n、中断控制器B20、一个或多个外围部件B18(更简要地说,“外围设备”)、存储器控制器B22和通信结构B27。部件BB14A-B14n、B18、B20和B22可全部耦接到通信结构B27。存储器控制器B22在使用期间可耦接到存储器B12。在一些实施方案中,可存在多于一个耦接到对应存储器的存储器控制器。存储器地址空间可以任何期望方式跨存储器控制器映射。在例示的实施方案中,处理器集群B14A-B14n可包括相应多个处理器(P)B30和相应集群中断控制器(IC)B24A-B24n,如图16所示。处理器B30可形成SOC B10的中央处理单元(CPU)。在一个实施方案中,一个或多个处理器集群B14A-B14n可不用作CPU。
在一个实施方案中,外围设备B18可包括作为中断源BB32的示例的外围设备。因此,一个或多个外围设备B18可具有到中断控制器B20的专用线路以将中断传输到中断控制器B20。其他外围设备B18可使用通过通信结构B27传输的消息信号中断。在一些实施方案中,一个或多个SOC外设备(图16中未示出)也可以是中断源。从中断控制器B20到片外的虚线例示了SOC外中断源的潜在可能。
图15所示的集群IC B24A-B24n之间的硬/软/强制Ack/Nack接口在图16中经由集群IC B24A-B24n与中断控制器B20之间的箭头示出。类似地,图1中的处理器B30与集群ICB24A-B24n之间的请求Ack/Nack接口由集群IC B24A-B24n与相应集群B14A-B14n中的处理器B30之间的箭头例示出。
如上所述,处理器集群B14A-B14n可包括可用作SOC B10的CPU的一个或多个处理器B30。系统的CPU包括执行系统主要控制软件诸如操作系统的一个或多个处理器。通常,由CPU在使用过程中执行的软件可控制系统的其他部件,以实现系统的期望的功能。处理器还可执行其他软件诸如应用程序。应用程序可提供用户功能,并且可依靠操作系统进行下层设备控制、调度、存储器管理等。因此,处理器也可被称为应用处理器。
通常,处理器可包括被配置为执行在由处理器实施的指令集架构中定义的指令的任何电路系统和/或微码。处理器可涵盖在具有作为片上系统(SOC B10)或其他集成水平的其他部件的集成电路上实施的处理器内核。处理器还可包括离散的微处理器、处理器内核和/或集成到多芯片模块具体实施中的微处理器、被实施为多个集成电路的处理器等等。
存储器控制器B22通常可包括用于从SOC B10的其他部件接收存储器操作并用于访问存储器B12以完成存储器操作的电路系统。存储器控制器B22可被配置为访问任何类型的存储器B12。例如,存储器B12可以是静态随机存取存储器(SRAM)、动态RAM(DRAM),诸如包括双倍数据速率(DDR、DDR2、DDR3、DDR4等)DRAM的同步DRAM(SDRAM)。可支持DDR DRAM的低功率/移动版本(例如,LPDDR、mDDR等)。存储器控制器B22可包括存储器操作队列,以用于对这些操作进行排序(并且潜在地重排序)并且将这些操作呈现给存储器B12。存储器控制器B22还可包括用于存储等待写入存储器的写数据和等待返回至存储器操作的源的读数据的数据缓冲器。在一些实施方案中,存储器控制器B22可包括用于存储最近访问的存储器数据的存储器高速缓存。例如,在SOC具体实施中,存储器高速缓存可通过在预期很快要被再次访问的情况下避免从存储器B12重新访问数据来降低SOC中的功率消耗。在一些情况下,存储器高速缓存也可被称为系统高速缓存,其与私有高速缓存诸如L2高速缓存或处理器中的高速缓存不同,该私有高速缓存只服务于某些部件。除此之外,在一些实施方案中,系统高速缓存不需要位于存储器控制器B22内。
外围设备B18可以是包括在SOC B10中的附加硬件功能的任何集合。例如,外围设备18可包括视频外围设备,诸如被配置为处理来自相机或其他图像传感器的图像捕捉数据的图像信号处理器、GPU、视频编码器/解码器、扩展器、旋转器、混合器、显示控制器等。外围设备可包括音频外围设备,诸如麦克风、扬声器、至麦克风和扬声器的接口、音频处理器、数字信号处理器、混合器等。外围设备可包括用于SOC B10外部的各种接口的接口控制器,包括诸如通用串行总线(USB)、包含PCI Express(PCIe)的外围部件互连(PCI)、串行和并行端口等接口。到外部设备的互连由图15中延伸到SOC B10外部的虚线箭头示出。外围设备可包括联网外围设备诸如介质访问控制器(MAC)。可包括任何一组硬件。
通信结构B27可为用于在SOC B10的部件间进行通信的任何通信互连件和协议。通信结构B27可为基于总线的,包括共享总线配置、交叉开关配置和具有桥的分层总线。通信结构B27也可为基于分组的,并且可为具有桥的分层、交叉开关、点到点或其他互连件。
需注意,SOC B10的部件的数量(以及图16中所示的那些部件的子部件(诸如每个处理器集群B14A-B14n中的处理器B30)的数量)可因实施方案而异。除此之外,一个处理器集群B14A-B14n中的处理器B30的数量可不同于另一处理器集群B14A-B14n中的处理器B30的数量。每个部件/子部件的数量可多于或少于图16所示的数量。
图17是示出在一个实施方案中可由中断控制器B20实现的状态机的一个实施方案的框图。在例示的实施方案中,状态包括空闲状态B40、软状态BB42、硬状态B44、强制状态B46和等待排出状态B48。
在空闲状态B40中,可能没有中断待决。一般来讲,每当没有中断待决时,状态机可从如图17所示的其他状态中的任一者返回至空闲状态B40。当已经接收到至少一个中断时,中断控制器B20可转变到软状态B42。中断控制器B20还可初始化超时计数器以开始计数超时间隔,这可致使状态机转变到强制状态B46。超时计数器可被初始化为0,并且可递增并与超时值进行比较以检测超时。另选地,超时计数器可被初始化为超时值,并且可递减直到达到0。递增/递减可在中断控制器B20的时钟的每个时钟周期执行,或者可根据不同时钟(例如,来自压电振荡器等的固定频率时钟)来递增/递减。
在软状态B42中,中断控制器B20可被配置为发起尝试递送中断的软迭代。如果集群中断控制器B24A-B24n中的一个集群中断控制器在软迭代期间传输Ack响应并且存在至少一个中断待决,则中断控制器B20可转变到等待排出状态B48。可提供等待排出状态B48,因为给定处理器可接受中断,但实际上可捕捉来自中断控制器的多个中断,从而将其排队以用于其相应中断服务例程。在各种实施方案中,处理器可继续排出中断直到已经从中断控制器B20读取所有中断,或者可读取高达特定最大数量的中断并且返回处理,或者可读取中断直到计时器到期。如果上述定时器超时并且仍存在待决中断,则中断控制器B20可被配置为转变到强制状态B46并且发起强制迭代以便递送中断。如果处理器停止排出中断并且存在至少一个中断待决或者新中断正在待决,则中断控制器B20可被配置为返回至软状态B42并且继续软迭代。
如果软迭代以来自每个集群中断控制器B24A-B24n的Nack响应完成(并且至少一个中断保持待决),则中断控制器B20可被配置为转变到硬状态B44并且可发起硬迭代。如果集群中断控制器B24A-B24n在硬迭代期间提供Ack响应并且存在至少一个待决中断,则中断控制器B20可类似于上文讨论转变到等待排出状态B48。如果硬迭代以来自每个集群中断控制器B24A-B24n的Nack响应完成并且存在至少一个待决中断,则中断控制器B20可被配置为转变到强制状态B46并且可发起强制迭代。中断控制器B20可保持处于强制状态B46,直到没有待决中断。
图18是示出中断控制器B20在执行软迭代或硬迭代时(例如,当处于图17中的状态B42或B44时)的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在中断控制器B20中的组合式逻辑电路系统中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。中断控制器B20可被配置为实施图18所示的操作。
中断控制器可被配置为选择集群中断控制器B24A-B24n(框B50)。可使用用于从多个中断控制器B24A-B24n选择集群中断控制器B24A-B24n的任何机制。例如,中断控制器B24A-B24n的集群的可编程顺序可指示选择了中断控制器B24A-B24n的哪个集群。在一个实施方案中,顺序可基于给定中断的中断源(例如,可存在多个顺序可用,可基于中断源来选择特定顺序)。这种具体实施可通过在继续移动到不同类型的处理器集群之前最初尝试将中断递送到期望类型的处理器集群而允许不同中断源倾向于给定类型(例如,性能优化或效率优化)的处理器。在另一个实施方案中,最近最少递送算法可用于选择最近集群中断控制器B24A-B24n(例如,最近最少针对中断生成Ack响应的集群中断控制器B24A-B24n)以跨不同处理器集群散布中断。在另一个实施方案中,最近最多递送算法可用于选择集群中断控制器(例如,最近最多针对中断生成Ack响应的集群中断控制器B24A-B24n)以利用中断代码或状态仍高速缓存在处理器集群中的可能性。可使用任何机制或机制组合。
中断控制器B20可被配置为将中断请求(硬或软,这取决于当前迭代)传输到所选择的集群中断控制器B24A-B24n(框B52)。例如,中断控制器B20可向所选择的集群中断控制器B24A-B24n断言硬或软中断请求信号。如果所选择的集群中断控制器B24A-B24n提供对中断请求的Ack响应(决策框B54,“是”分支),则中断控制器B20可被配置为转变到等待排出状态B48以允许处理器集群B14A-B14n中与所选择的集群中断控制器B24A-B24n相关联的处理器B30服务于一个或多个待决中断(框B56)。如果所选择的集群中断控制器提供Nack响应(决策框B58,“是”分支)并且存在当前迭代中尚未被选择的至少一个集群中断控制器B24A-B24n(决策框B60,“是”分支),则中断控制器B20可被配置为根据所实施的选择机制来选择下一集群中断控制器B24A-B24n(框B62),并且返回至框B52以向所选择的集群中断控制器B24A-B24n断言中断请求。因此,在该实施方案中,中断控制器B20可被配置为在对多个集群中断控制器B24A-B24n的迭代期间串行地尝试将中断控制器递送到多个集群中断控制器B24A-B24n。如果所选择的集群中断控制器B24A-B24n提供Nack响应(决策框B58,“是”分支)并且没有集群中断控制器B24A-B24n仍然待选择(例如,已经选择所有集群中断控制器B24A-B24n),则集群中断控制器B20可被配置为转变到状态机中的下一状态(例如,如果当前迭代是软迭代则转变到硬状态B44,或如果当前迭代是硬迭代则转变到强制状态B46)(框B64)。如果尚未接收到对中断请求的响应(决策框B54和B58,“否”分支),则中断控制器B20可被配置为继续等待响应。
如上所述,可存在可在中断递送过程开始时初始化的超时机制。在一个实施方案中,如果在任何状态期间发生超时,则中断控制器B20可被配置为移动到强制状态B46。另选地,可仅在等待排出状态B48中考虑定时器到期。
图19是示出集群中断控制器B24A-B24n基于来自中断控制器B20的中断请求的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在中断控制器B24A-B24n中的组合式逻辑电路系统中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。集群中断控制器B24A-B24n可被配置为实施图19所示的操作。
如果中断请求是硬或强制请求(决策框B70,“是”分支),则集群中断控制器B24A-B24n可被配置为给任何下电(例如,休眠)处理器B30上电(框B72)。如果中断请求是强制中断请求(决策框B74,“是”分支),则集群中断控制器B24A-B24n可被配置为中断所有并行的处理器B30(框B76)。Ack/Nack可能不适用于强制情况,因此集群中断控制器B24A-B24n可继续断言中断请求,直到至少一个处理器接受中断。另选地,集群中断控制器B24A-B24n可被配置为从处理器接收指示其将接受中断的Ack响应,并且可终止强制中断并将Ack响应传输到中断控制器B20。
如果中断请求是硬请求(决策框B74,“否”分支)或软请求(决策框B70,“否”分支),则集群中断控制器可被配置为选择通电处理器B30(框B78)。可使用类似于上述用于由中断控制器B20选择集群中断控制器B24A-B24n的机制(例如,可编程顺序、最近最少中断、最近最多中断等)的任何选择机制。在一个实施方案中,顺序可基于指派给集群中的处理器的处理器ID。集群中断控制器B24A-B24n可被配置为向所选择的处理器B30断言中断请求,从而将该请求传输到处理器B30(框B80)。如果所选择的处理器B30提供Ack响应(决策框B82,“是”分支),则集群中断控制器B24A-B24n可被配置为将Ack响应提供到中断控制器B20(框B84)并且终止在处理器集群内递送中断的尝试。如果所选择的处理器30提供Nack响应(决策框B86,“是”分支)并且存在尚未被选择的至少一个通电处理器B30(决策框B88,“是”分支),则集群中断控制器B24A-B24n可被配置为选择下一通电处理器(例如,根据上述选择机制)(框B90)并且向所选择的处理器B30断言中断请求(框B80)。因此,集群中断控制器B24A-B24n可串行地尝试将中断递送到处理器集群中的处理器B30。如果没有通电处理器要选择(决策框B88,“否”分支),则集群中断控制器B24A-B24n可被配置为将Nack响应提供到中断控制器B20(框B92)。如果所选择的处理器B30尚未提供响应(决策框B82和B86,“否”分支),则集群中断控制器B24A-B24n可被配置为等待响应。
在一个实施方案中,在硬迭代中,如果处理器B30已经从断电状态通电,则其可迅速地可供用于中断,因为其尚未由操作系统或其他控制软件指派任务。操作系统可被配置为在初始化处理器之后尽可能快地解除屏蔽已经从断电状态通电的处理器B30中的中断。集群中断控制器B24A-B24n可在选择顺序中首先选择最近通电处理器,以提高处理器将提供对中断的Ack响应的可能性。
图20是处理器B30的一个实施方案的更详细框图。在例示的实施方案中,处理器B30包括获取和解码单元B100(包括指令高速缓存或ICache B102)、映射-分派-重命名(MDR)单元B106(包括处理器中断确认(Int Ack)控制电路B126和重排序缓冲器B108)、一个或多个保留站B110、一个或多个执行单元B112、寄存器文件B114、数据高速缓存(DCache)B104、加载/存储单元(LSU)B118、用于加载/存储单元的保留站(RS)B116以及内核接口单元(CIF)B122。获取和解码单元B100耦接到MDR单元B106,该MDR单元耦接到保留站B110、保留站B116和LSU B118。保留站B110耦接到执行单元B28。寄存器文件B114耦接到执行单元B112和LSU B118。LSU B118还耦接到DCache B104,该DCache耦接到CIF B122和寄存器文件B114。LSU B118包括存储队列B120(STQ B120)和加载队列(LDQ B124)。CIF B122耦接到处理器Int Ack控制电路BB126,以传送向处理器B30断言的中断请求(Int Req),并且将来自处理器Int Ack控制电路B126的Ack/Nack响应传送到中断请求方(例如,集群中断控制器B24A-B24n)。
处理器Int Ack控制电路B126可被配置为确定处理器B30是否可接受传输到处理器B30的中断请求,并且可基于该确定而向CIF B122提供Ack和Nack指示。如果处理器B30提供Ack响应,则处理器B30将在指定时间段内致力于接受中断(并且开始执行中断代码以标识中断和中断源)。也就是说,处理器Int Ack控制电路B126可被配置为基于重排序缓冲器B108将要将指令操作退出到可中断点并且LSU B118将在指定时间段内完成到可中断点的加载/存储操作的确定而生成对所接收的中断请求的确认(Ack)响应。如果确定重排序缓冲器B108和LSU B118中的至少一者在指定时间段内将不会到达(或可能不会到达)可中断点,则处理器Int Ack控制电路B126可被配置为生成对中断请求的否定确认(Nack)响应。例如,在一个实施方案中,指定时间段可以是大约5微秒,但在其他实施方案中可更长或更短。
在一个实施方案中,处理器Int Ack控制电路B126可被配置为检查重排序缓冲器108的内容以作出Ack/Nack的初始确定。也就是说,可能存在处理器Int Ack控制电路B126可能够确定将基于MDR单元B106内的状态而生成Nack响应的一种或多种情况。例如,重排序缓冲器B108包括尚未执行并且具有大于特定阈值的潜在执行时延的一个或多个指令操作,处理器Int Ack控制电路B126可被配置为确定将生成Nack响应。执行时延被称为“潜在”是因为一些指令操作可具有可变执行时延,该可变执行时延可为数据相依的、存储器时延相依的等。因此,潜在执行时延可以是可能发生的最长执行时延,即使它并不总是发生。在其他情况下,潜在执行时延可以是高于特定概率发生的最长执行时延等。此类指令的示例可包括某些密码加速指令、某些类型的浮点或向量指令等。如果指令是不可中断的,则指令可被认为是潜在长时延。也就是说,非可中断指令一旦开始执行就需要完成执行。
在生成Ack/Nack响应时可考虑的另一条件是处理器30中的中断屏蔽的状态。当中断被屏蔽时,处理器B30被阻止接受中断。如果处理器Int Ack控制电路B126检测到中断在处理器中被屏蔽(在一个实施方案中,这可以是维持在MDR单元B106中的状态),则可生成Nack响应。更具体地,在一个实施方案中,中断屏蔽可具有对应于最近退出指令的架构当前状态,并且对中断屏蔽的一个或多个推测更新也可被排队。在一个实施方案中,如果架构当前状态是中断被屏蔽,则可生成Nack响应。在另一实施方案中,如果架构当前状态是中断被屏蔽,或者如果推测状态中的任何一个推测状态指示中断被屏蔽,则可生成Nack响应。
在处理器Int Ack控制电路B126中,其他情况也可被认为是Nack响应情况。例如,如果在重排序缓冲器中存在与异常处理相关的待决重定向(例如,没有像分支错误预测等的微体系结构重定向),则可生成Nack响应。某些调试模式(例如,单步模式)和高优先级内部中断可被认为是Nack响应情况。
如果处理器Int Ack控制电路B126基于检查重排序缓冲器B108和MDR单元B106中的处理器状态而未检测到Nack响应,则处理器Int Ack控制电路B126可与LSU B118介接以确定是否存在已发布(例如,发布到CIF B122或处理器B30外部)并且尚未完成但耦接到重排序缓冲器和加载/存储单元的长时延加载/存储op。例如,到设备空间的加载和存储(例如,被映射到外围设备而不是存储器的加载和存储)可以是潜在长时延。如果LSU B118响应存在长时延加载/存储op(例如,潜在地大于阈值,该阈值可与在MDR单元B106内部使用的上述阈值不同或相同),则处理器Int Ack控制电路B126可确定响应将是Nack。其他潜在长时延op可以是例如同步屏障操作。
在一个实施方案中,如果确定不是上述情况的Nack响应,则LSU B118可向重排序缓冲器B108提供指针,该指针标识LSU B118致力于完成的最旧加载/存储操作(例如,它已经从LDQ B124或STQ B120启动,或者在其他情况下在LSU B118中是非推测的)。该指针可被称为“真加载/存储(LS)非推测(NS)指针”。MDR B106/重排序缓冲器B108可尝试在LS NS指针处中断,并且如果在指定时间段内不可能中断,则处理器Int Ack控制电路B126可确定将生成Nack响应。否则,可生成Ack响应。
获取和解码单元B100可被配置为获取供处理器B30执行的指令,并且将指令解码成op以供执行。更具体地,获取和解码单元B100可被配置为将先前从存储器(通过CIFB122)获取的指令高速缓存在ICache B102中,并且可被配置为获取用于处理器B30的指令的推测路径。获取和解码单元B100可实现各种预测结构以预测获取路径。例如,下一获取预测器可用于基于先前执行的指令来预测获取地址。各种类型的分支预测器可用于验证下一获取预测,或者如果不使用下一获取预测器,则可用于预测下一获取地址。获取和解码单元100可被配置为将指令解码成指令操作。在一些实施方案中,可以将给定指令解码成一个或多个指令操作,这取决于指令的复杂度。在一些实施方案中,特别复杂的指令可以是微编码的。在此类实施方案中,针对指令的微编码例程可以在指令操作中编码。在其他实施方案中,可将由处理器B30实现的指令集架构中的每个指令解码成单个指令操作,因此指令操作可实质上与指令同义(尽管其形式可由解码器进行修改)。术语“指令操作”在本文中可更简要地称为“op”。
MDR单元B106可被配置为将op映射到推测资源(例如,物理寄存器)以允许乱序和/或推测执行,并且可将op分派到保留站B110和B116。op可从在对应指令中使用的架构寄存器映射到寄存器文件B114中的物理寄存器。也就是说,寄存器文件B114可实现一组物理寄存器,其数量可大于由处理器B30实现的指令集架构所指定的架构寄存器。MDR单元B106可管理架构寄存器到物理寄存器的映射。在一个实施方案中,对于不同操作数类型(例如,整数、媒体、浮点等),可存在单独的物理寄存器。在其他实施方案中,物理寄存器可在操作数类型中共享。MDR单元B106还可负责跟踪推测执行和退出op或刷新错误推测的op。重排序缓冲器B108可用于跟踪op的程序顺序并管理退出/刷新。也就是说,重排序缓冲器B108可被配置为跟踪与处理器获取并且处理器未退出的指令相对应的多个指令操作。
当针对op的源操作数就绪时,可调度op以供执行。在例示的实施方案中,对例如保留站B116和B110中的执行单元B28中的每个执行单元以及LSU B118使用分散式调度。如果需要,其他实施方案可实施集中式调度器。
LSU B118可被配置为执行加载/存储存储器op。一般来讲,存储器操作(存储器op)可以是指定对存储器的访问的指令操作(尽管存储器访问可在高速缓存诸如DCache B104中完成)。加载存储器操作可指定从存储器位置到寄存器的数据传送,而存储存储器操作可指定从寄存器到存储器位置的数据传送。加载存储器操作可被称为加载存储器op、加载op或加载;并且存储存储器操作可被称为存储存储器op、存储op或存储。在一个实施方案中,存储op可执行为存储地址op和存储数据op。存储地址op可被定义为生成存储的地址,探测高速缓存的初始命中/未命中确定,并且利用地址和高速缓存信息来更新存储队列。因此,存储地址op可以将地址操作数作为源操作数。存储数据op可被定义为将存储数据递送到存储队列。因此,存储数据op可以不将地址操作数作为源操作数,而是可以将存储数据操作数作为源操作数。在许多情况下,存储的地址操作数可以在存储数据操作数之前可用,因此地址可以比存储数据更早地得到确定并变得可用。在一些实施方案中,例如如果在存储地址操作数中的一个或多个操作数之前提供存储数据操作数,则存储数据op有可能在对应存储地址op之前执行。尽管在一些实施方案中存储操作可执行为存储地址op和存储数据op,但其他实施方案可能不实施存储地址/存储数据拆分。作为示例,本公开的其余部分将通常使用存储地址op(和存储数据op),但也设想了不使用存储地址/存储数据优化的具体实施。经由存储地址op的执行生成的地址可被称为对应于存储op的地址。
加载/存储op可在保留站B116中被接收,该保留站可被配置为监视操作的源操作数以确定它们何时可用,然后分别向加载或存储管线发布这些操作。当在保留站B116中接收到操作时,一些源操作数可能是可用的,这些操作可在由保留站B116从MDR单元B106接收的数据中指示以用于对应操作。其他操作数可经由由其他执行单元B112执行操作或甚至经由较早加载op的执行而变得可用。操作数可由保留站B116收集,或者可在从保留站B116发出时从寄存器文件B114读取,如图20所示。
在一个实施方案中,保留站B116可被配置为在这些操作数变得可用时乱序(不同于它们在由处理器B30执行的代码序列中的原始顺序(被称为“程序顺序”))发布操作。为了确保LDQ B124或STQ B120中存在空间用于保留站B116中的较新操作所绕过的较旧操作,MDR单元B106可包括将LDQ B124或STQ B120条目预分配给传输到加载/存储单元B118的操作的电路系统。如果对于正在MDR单元B106中处理的加载不存在可用LDQ条目,则MDR单元B106可按程序顺序停止加载op和后续op的分派,直到一个或多个LDQ条目变得可用。类似地,如果不存在STQ条目可供用于存储,则MDR单元B106可停止op分派,直到一个或多个STQ条目变得可用。在其他实施方案中,保留站B116可按程序顺序发布操作,并且LRQ B46/STQB120指派可在从保留站B116发布时发生。
LDQ B124可跟踪从LSU B118的初始执行到退出的加载。LDQ B124可负责确保不违反存储器排序规则(在乱序执行的加载之间,以及在加载和存储之间)。如果检测到存储器排序违反,则LDQ B124可发信号通知针对对应加载的重定向。重定向可致使处理器B30按程序顺序刷新加载和后续op,并且重新获取对应指令。加载和后续op的推测状态可被丢弃,并且这些op可由获取和解码单元B100重新获取并重新处理以便再次执行。
当加载/存储地址op由保留站B116发布时,LSU B118可被配置为生成由加载/存储访问的地址,并且可被配置为将该地址从由加载/存储地址op的地址操作数创建的有效地址或虚拟地址转换为实际用于地址存储器的物理地址。LSU B118可被配置为生成对DCacheB104的访问。对于命中DCache B104的加载操作,数据可从DCache B104推测性地转发到加载操作的目的地操作数(例如,寄存器文件B114中的寄存器),除非地址命中STQ B120中的先前操作(即,按程序顺序的较旧存储)或者加载被重放。数据还可被转发到曾被推测性地调度并且现位于执行单元B28中的从属op。在此类情况下,执行单元B28可绕过所转发的数据而不是从寄存器文件B114输出的数据。如果存储数据可供用于在STQ命中时转发,则可转发由STQ B120输出的数据而不是高速缓存数据。数据不能被转发的高速缓存未命中和STQ命中可能是重放的原因,并且在那些情况下加载数据不可被转发。来自DCache B104的高速缓存命中/未命中状态可记录在STQ B120或LDQ B124以供稍后处理。
LSU B118可实现多个加载管线。例如,在一个实施方案中,可实现三个加载管线(“管道”),但在其他实施方案中可实现更多或更少管线。每个管线可独立地并且与其他加载并行地执行不同加载。也就是说,RS B116可在同一时钟周期中发布任何数量的加载,最多至加载管道的数量。LSU B118还可实现一个或多个存储管道,并且具体地可实现多个存储管道。然而,存储管道的数量不需要等于加载管道的数量。在一个实施方案中,例如,可使用两个存储管道。保留站B116可独立地并且与存储管道并行地发布存储地址op和存储数据op。存储管道可耦接到STQ B120,该STQ可被配置为保持已经执行但尚未提交的存储操作。
CIF B122可代表处理器B30负责与包括处理器B30的系统的其余部分进行通信。例如,CIF B122可被配置为请求DCache B104未命中和ICache B102未命中的数据。当数据返回时,CIF B122可向对应高速缓存发信号通知高速缓存填充。对于DCache填充,CIF B122还可通知LSU B118。LDQ B124可尝试调度正在高速缓存填充上等待的重放的加载,使得重放的加载可在填充数据被提供到DCache B104时转发该填充数据(称为填充转发操作)。如果重放的加载在填充期间未被成功重放,则重放的加载可随后被调度并作为高速缓存命中通过DCache B104重放。CIF B122还可回写已被DCache B104逐出的经修改高速缓存行,合并不可高速缓存存储的存储数据等。
在各种实施方案中,执行单元B112可包括任何类型的执行单元。例如,执行单元B112可包括整数、浮点和/或向量执行单元。整数执行单元可被配置为执行整数op。一般来讲,整数op是对整数操作数执行定义的操作(例如,算术、逻辑、移位/旋转等)的op。整数可以是数值,其中每个值对应于数学整数。整数执行单元可包括用于处理分支op的分支处理硬件,或者可存在单独的分支执行单元。
浮点执行单元可被配置为执行浮点op。一般来讲,浮点op可以是已被定义为对浮点操作数进行操作的op。浮点操作数是被表示为尾数(或有效位数)乘以底数的指数次方的操作数。指数、操作数的符号和尾数/有效位数可在操作数中显式地表示,并且底数(例如,在一个实施方案中,底数2)可以是隐式的。
向量执行单元可被配置为执行向量op。向量op可用于例如处理媒体数据(例如,图像数据诸如像素、音频数据等)。媒体处理的特征可在于对大量数据执行相同的处理,其中每个数据是相对小的值(例如,8位或16位,与整数的32位至64位相比)。因此,向量op包括对表示多个媒体数据的操作数进行的单指令多数据(SIMD)或向量操作。
因此,每个执行单元B112可包括被配置为执行如下操作的硬件:被定义为限定特定执行单元来处理的op的操作。在每个执行单元可被配置为对为该执行单元发起而与其他执行单元无关的op进行操作的意义上,执行单元通常可彼此独立。以另一角度来看,每个执行单元可以是用于执行op的独立管道。不同的执行单元可具有不同的执行时延(例如,不同的管道长度)。除此之外,不同的执行单元可对发生旁路的管线级具有不同的时延,因此基于加载op发生相关op的推测调度的时钟周期可基于op和将执行该op的执行单元B28的类型而变化。
需注意,在各种实施方案(包括具有一个执行单元的实施方案和具有多个执行单元的实施方案)中可包括任何数量和类型的执行单元B112。
高速缓存行可以是高速缓存中的分配/解除分配单元。也就是说,高速缓存行内的数据可作为一个单元在高速缓存中分配/解除分配。高速缓存行的大小可变化(例如,32字节、64字节、128字节,或者更大或更小的高速缓存行)。不同的高速缓存可具有不同的高速缓存行大小。ICache B102和DCache B104可各自为具有任何期望容量、高速缓存行大小和配置的高速缓存。在各种实施方案中,在DCache B104/ICache B102和主存储器之间可存在更多另外的高速缓存级。
在各个点处,加载/存储操作被称为比其他加载/存储操作更新或更旧。如果第一操作按程序顺序在第二操作之后,则第一操作可比第二操作更新。类似地,如果第一操作按程序顺序先于第二操作,则第一操作可比第二操作更旧。
图21是重排序缓冲器B108的一个实施方案的框图。在例示的实施方案中,重排序缓冲器108包括多个条目。在各种实施方案中,每个条目可对应于指令、指令操作或指令操作组。与指令操作相关的各种状态可存储在重排序缓冲器中(例如,目标逻辑和物理寄存器以更新架构寄存器映射、在执行期间检测到的异常或重定向等)。
图21中例示了若干指针。退出指针B130可指向处理器B30中的最旧非退出op。也就是说,在退出B130处的op之前的op已经从重排序缓冲器B108退出,处理器B30的架构状态已经更新以反映退出op的执行等。解析指针B132可指向最旧op,对于最旧op,先前分支指令已经被解析为正确预测,并且对于最旧op,可能导致异常的先前op已经被解析为不造成异常。退出指针B130和解析指针B132之间的op可以是重排序缓冲器B108中的提交op。也就是说,生成op的指令的执行将完成到解析指针B132(不存在外部中断时)。最新指针B134可指向从MDR单元B106最近获取和分派的op。解析指针B132和最新指针B134之间的op是推测性的,并且可能由于异常、分支错误预测等而被刷新。
真LS NS指针B136是上述真LS NS指针。真LS NS指针可仅在中断请求已经被断言并且Nack响应的其他测试已经为否定(例如,由那些测试指示Ack响应)时生成。MDR单元B106可尝试将解析指针B132移回真LS NS指针B136。在重排序缓冲器B108中可能存在不能被刷新的提交op(例如,一旦它们被提交,它们必须被完成和退出)。一些指令操作组可能不是可中断的(例如,微代码例程、某些不可中断异常等)。在此类情况下,处理器Int Ack控制器B126可被配置为生成Nack响应。在处理器B30中可能存在过于复杂而不能“撤销”的op或op组合,并且在解析指针和真LS NS指针B136之间存在此类op可致使处理器Int Ack控制器B126生成Nack响应。如果重排序缓冲器B108成功地将解析指针移回真LS NS指针B136,则处理器Int Ack控制电路B126可被配置为生成Ack响应。
图22是示出处理器Int Ack控制电路B126基于处理器B30接收到中断请求的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在处理器Int Ack控制电路B126中的组合式逻辑电路系统中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。处理器Int Ack控制电路B126可被配置为实施图22所示的操作。
处理器Int Ack控制电路B126可被配置为确定在MDR单元B106中是否检测到任何Nack条件(决策框B140)。例如,尚未完成的潜在长时延操作、中断被屏蔽等可以是在MDR单元B106中检测到的Nack条件。如果是(决策框B140,“是”分支),则处理器Int Ack控制电路B126可被配置为生成Nack响应(框B142)。如果否(决策框B140,“否”分支),则处理器IntAck控制电路B126可与LSU通信以请求Nack条件和/或真LS NS指针(框B144)。如果LSU B118检测到Nack条件(决策框B146,“是”分支),则处理器Int Ack控制电路B126可被配置为生成Nack响应(框B142)。如果LSU B118未检测到Nack条件(决策框B146,“否”分支),则处理器Int Ack控制电路B126可被配置为从LSU B118接收真LS NS指针(框B148),并且可尝试将重排序缓冲器B108中的解析指针移回真LS NS指针(框B150)。如果移动不成功(例如,在真LSNS指针和解析指针之间存在至少一个不能被刷新的指令操作)(决策框B152,“否”分支),则处理器Int Ack控制电路B126可被配置为生成Nack响应(框B142)。否则(决策框B152,“是”分支),处理器Int Ack控制电路B126可被配置为生成Ack响应(框B154)。处理器Int Ack控制电路B126可被配置为将解析指针冻结在真LS NS指针处,并且将op退出直到退出指针到达解析指针(框B156)。然后,处理器Int Ack控制电路B126可被配置为接受中断(框B158)。也就是说,处理器B30可开始(例如,根据由处理器B30实现的指令集架构从与中断相关联的预定地址)获取中断代码。
在另一个实施方案中,SOC B10可以是系统中的SOC中的一个SOC。更具体地,在一个实施方案中,可采用SOC B10的多个实例。其他实施方案可具有非对称SOC。每个SOC可以是单独的集成电路芯片(例如,实现在单独的半导体基板或“管芯”上)。管芯可被封装并且经由内插器、层叠式封装解决方案等彼此连接。另选地,管芯可被封装在片上芯片封装方案、多芯片模块等中。
图23是示出包括SOC B10的多个实例的系统的一个实施方案的框图。例如,SOCB10A、SOC B10B等至SOC B10q可在系统中耦接在一起。每个SOC B10A-B10q包括中断控制器B20的一个实例(例如,图23中的中断控制器B20A、中断控制器B20B和中断控制器B20q)。一个中断控制器(在该示例中为中断控制器B20A)可用作系统的一级中断控制器。其他中断控制器B20B至B20q可用作二级中断控制器。
图23中更详细地示出一级中断控制器B20A和二级控制器B20B之间的接口,并且一级中断控制器B20A和其他二级中断控制器诸如中断控制器B20q之间的接口可为类似的。在图23的实施方案中,二级控制器B20B被配置为提供标识从SOC B10B上的中断源(或耦接到SOC B10B的外部设备,图23中未示出)发布的中断的中断信息作为Int B160。一级中断控制器B20A被配置为向二级中断控制器20B发信号通知硬、软和强制迭代(附图标号B162),并且被配置为从中断控制器B20B接收Ack/Nack响应(附图标号B164)。接口可以任何方式实现。例如,专用线路可耦接在SOC B10A和SOC B10B之间以实现附图标号B160、B162和/或B164。在另一个实施方案中,可通过SOC B10A-B10q之间的也用于其他通信的通用接口在一级中断控制器B20A和二级中断控制器B20B-B20q之间交换消息。在一个实施方案中,可编程输入/输出(PIO)写入可作为数据分别与中断数据、硬/软/强制请求和Ack/Nack响应一起使用。
一级中断控制器B20A可被配置为收集来自可在SOC B10A上的各种中断源、可以是片外设备的其他SOC B10B-B10q中的一个SOC或它们的任何组合的中断。二级中断控制器B20B-B20q可被配置为将中断传输到一级中断控制器B20A(图23中的Int),从而向一级中断控制器B20A标识中断源。一级中断控制器B20A还可负责确保中断的递送。二级中断控制器B20B-B20q可被配置为从一级中断控制器B20A获取指示,从而从一级中断控制器B20A接收软、硬和强制迭代请求并且对体现在对应SOC B10B-B10q上的集群中断控制器B24A-B24n执行迭代。基于来自集群中断控制器B24A-B24n的Ack/Nack响应,二级中断控制器B20B-B20q可提供Ack/Nack响应。在一个实施方案中,一级中断控制器B20A可在软迭代和硬迭代中串行地尝试通过二级中断控制器B20B-B20q递送中断,并且可在强制迭代中并行地向二级中断控制器B20B-B20q递送中断。
在一个实施方案中,一级中断控制器B20A可被配置为对集成到与一级中断控制器B20A相同的SOC B10A中的集群中断控制器的子集执行给定迭代,然后对其他SOC B10B-B10q上的其他SOC BB10B-B10q上的集群中断控制器的子集执行该给定迭代(在二级中断控制器B20B-B20q的辅助下)。也就是说,一级中断控制器B20A可串行地尝试通过SOC B10A上的集群中断控制器递送中断,然后可与二级中断控制器BB20B-B20q通信。通过二级中断控制器B20B-B20q进行递送的尝试也可串行地执行。通过在二级中断控制器BB20B-B20q进行尝试的顺序可以任何期望方式确定,类似于上文针对集群中断控制器和集群中的处理器所述的实施方案(例如,可编程顺序、最近最多接受、最近最少接受等)。因此,一级中断控制器B20A和二级中断控制器B20B-B20q可在很大程度上将软件与多个SOC B10A-B10q的存在隔离。也就是说,SOC B10A-B10q可被配置为对于在单个系统上的软件执行在很大程度上透明的单个系统。在系统初始化期间,一些实施方案可被编程为如上文所讨论配置中断控制器B20A-B20q,但在其他情况下,中断控制器B20A-20q可管理中断跨可能多个SOC B10A-B10q(各自位于单独半导体管芯上)的递送,而无需软件辅助或软件对系统的多管芯性质的特定可见性。例如,由于管芯间通信造成的延迟可在系统中最小化。因此,在初始化之后的执行期间,单个系统对于软件来说可表现为单个系统,并且系统的多管芯性质对于软件来说可为透明的。
需注意,一级中断控制器B20A和二级中断控制器B20B-B20q可以本领域技术人员也称为“主”(即,一级)和“从”(即,二级)的方式操作。虽然本文使用了一级/二级术语,但明确地旨在将术语“一级”和“二级”解释为涵盖这些对应术语。
在一个实施方案中,SOC B10A-B10q的每个实例可使一级中断控制器电路系统和二级中断控制器电路系统两者实现在其中断控制器B20A-B20q中。一个中断控制器(例如,中断控制器B20A)可在系统制造期间被指定为一级(例如,经由SOC B10A-B10q上的熔丝、或SOC B10A-B10q的一个或多个引脚上的引脚带)。另选地,一级和二级指定可在系统初始化(或开机)配置期间进行。
图24是示出一级中断控制器B20A基于从一个或多个中断源接收到一个或多个中断的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一级中断控制器B20A中的组合式逻辑电路系统中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一级中断控制器B20A可被配置为实施图24所示的操作。
一级中断控制器B20A可被配置为对集成到本地SOC B10A的集群中断控制器执行软迭代(框B170)。例如,软迭代可类似于图18的流程图。如果本地软迭代产生Ack响应(决策框B172,“是”分支),则中断可被成功递送并且一级中断控制器B20A可被配置为返回至空闲状态B40(假设没有更多待决中断)。如果本地软迭代产生Nack响应(决策框B172,“否”分支),则一级中断控制器B20A可被配置为使用如上所述的任何期望顺序来选择其他SOCB10B-B10q中的一个SOC(框B174)。一级中断控制器B20A可被配置为向所选择的SOC B10B-B10q上的二级中断控制器B20B-B20q断言软迭代请求(框B176)。如果二级中断控制器B20B-B20q提供Ack响应(决策框B178,“是”分支),则中断可被成功递送并且一级中断控制器B20A可被配置为返回至空闲状态B40(假定没有更多待决中断)。如果二级中断控制器B20B-B20q提供Nack响应(决策框B178,“否”分支)并且存在尚未在软迭代中选择的更多SOC B10B-B10q(决策框B180,“是”分支),则一级中断控制器B20A可被配置为根据所实施的排序机制选择下一SOC B10B-B10q(框B182),并且可被配置为将软迭代请求传输到所选择的SOC上的二级中断控制器B20B-B20q(框B176)并继续处理。另一方面,如果每个SOC B10B-B10q都已经被选择,则软迭代可完成,因为通过二级中断控制器B20B-B20q递送中断的串行尝试已完成。
基于对二级中断控制器B20B-B20q完成软迭代而未成功中断递送(决策框B180,“否”分支),一级中断控制器B20A可被配置为对集成到本地SOC B10A上的本地集群中断控制器执行硬迭代(框B184)。例如,软迭代可类似于图18的流程图。如果本地硬迭代产生Ack响应(决策框B186,“是”分支),则中断可被成功递送并且一级中断控制器B20A可被配置为返回至空闲状态B40(假设没有更多待决中断)。如果本地硬迭代产生Nack响应(决策框B186,“否”分支),则一级中断控制器B20A可被配置为使用如上所述的任何期望顺序来选择其他SOC B10B-B10q中的一个SOC(框B188)。一级中断控制器B20A可被配置为向所选择的SOC B10B-B10q上的二级中断控制器B20B-B20q断言硬迭代请求(框B190)。如果二级中断控制器B20B-B20q提供Ack响应(决策框B192,“是”分支),则中断可被成功递送并且一级中断控制器B20A可被配置为返回至空闲状态B40(假定没有更多待决中断)。如果二级中断控制器B20B-B20q提供Nack响应(决策框B192,“否”分支)并且存在尚未在硬迭代中选择的更多SOC B10B-B10q(决策框B194,“是”分支),则一级中断控制器B20A可被配置为根据所实施的排序机制选择下一SOC B10B-B10q(框B196),并且可被配置为将硬迭代请求传输到所选择的SOC上的二级中断控制器B20B-B20q(框B190)并继续处理。另一方面,如果每个SOC B10B-B10q都已经被选择,则硬迭代可完成,因为通过二级中断控制器B20B-B20q递送中断的串行尝试已完成(决策框B194,“否”分支)。一级中断控制器B20A可被配置为继续进行强制迭代(框B198)。强制迭代可在本地执行,或者可在本地SOC B10A和其他SOC B10B-B10q上并行地或串行地执行。
如上所述,可存在可在中断递送过程开始时初始化的超时机制。在一个实施方案中,如果在任何状态期间发生超时,则中断控制器B20可被配置为移动到强制迭代。另选地,可仅在等待排出状态B48中考虑定时器到期,再次如上所述。
图25是示出二级中断控制器B20B-B20q的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在二级中断控制器B20B-B20q中的组合式逻辑电路系统中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。二级中断控制器B20B-B20q可被配置为实施图25所示的操作。
如果对应SOC B10B-B10q中(或耦接到SOC B10B-B10q)的中断源将中断提供到二级中断控制器B20B-B20q(决策框B200,“是”分支),则二级中断控制器B20B-B20q可被配置为将中断传输到一级中断控制器B20A以连同来自其他中断源的其他中断一起处理(框B202)。
如果一级中断控制器B20A已传输迭代请求(决策框B204,“是”分支),则二级中断控制器B20B-B20q可被配置为对本地SOC B10B-B10q中的集群中断控制器执行所请求的迭代(硬、软或强制)(框B206)。例如,硬迭代和软迭代可类似于图18,并且强制可与本地SOCB10B-B10q中的集群中断控制器并行地执行。如果迭代产生Ack响应(决策框B208,“是”分支),则二级中断控制器B20B-B20q可被配置为将Ack响应传输到一级中断控制器B20A(框B210)。如果迭代产生Nack响应(决策框B208,“否”分支),则二级中断控制器B20B-B20q可被配置为将Nack响应传输到一级中断控制器B20A(框B212)。
图26是示出用于处理中断的方法的一个实施方案的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在本文所述系统中的组合式逻辑电路系统中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。本文所述的系统可被配置为实施图26所示的操作。
中断控制器B20可接收来自中断源的中断(框B220)。在具有一级和二级中断控制器B20A-20q的实施方案中,中断可在任何中断控制器B20A-20q中被接收,并且作为接收来自中断源的中断的一部分被提供到一级中断控制器B20A。中断控制器B20可被配置为执行串行地尝试将中断递送到多个集群中断控制器的第一迭代(例如,软迭代)(框B222)。多个集群中断控制器中的相应集群中断控制器与包括多个处理器的相应处理器集群相关联。在第一迭代中,多个集群中断控制器中的给定集群中断控制器可被配置为尝试将中断递送到相应多个处理器中的通电的子集,而不尝试将中断递送到相应多个处理器中未包括在该子集中的处理器。如果接收到Ack响应,则迭代可由中断控制器B20终止(决策框B224,“是”分支,以及框B226)。另一方面(决策框B224,“否”分支),基于在第一迭代中来自多个集群中断控制器的否定确认(Nack)响应,中断控制器可被配置为对多个集群中断控制器执行第二迭代(例如,硬迭代)(框B228)。在第二迭代中,给定集群中断控制器可被配置为给相应多个处理器中的断电的处理器通电并且尝试将中断递送到相应多个处理器。如果接收到Ack响应,则迭代可由中断控制器B20终止(决策框B230,“是”分支,以及框B232)。另一方面(决策框B230,“否”分支),基于在第二迭代中来自多个集群中断控制器的否定确认(Nack)响应,中断控制器可被配置为对多个集群中断控制器执行第三迭代(例如,强制迭代)(框B234)。
基于本公开,一种系统可包括:多个集群中断控制器;以及中断控制器,该中断控制器耦接到该多个集群中断控制器。该多个集群中断控制器中的相应集群中断控制器可与包括多个处理器的相应处理器集群相关联。该中断控制器可被配置为接收来自第一中断源的中断,并且基于该中断可被配置为:对该多个集群中断控制器执行第一迭代以尝试递送该中断;并且基于在该第一迭代中来自该多个集群中断控制器的否定确认(Nack)响应,对该多个集群中断控制器执行第二迭代。在该第一迭代中,该多个集群中断控制器中的给定集群中断控制器可被配置为尝试将该中断递送到该相应处理器集群中的该多个处理器中的通电的子集,而不尝试将该中断递送到该相应集群中的该相应多个处理器中未包括在该子集中的处理器。在该第二迭代中,该给定集群中断控制器可被配置为给该相应多个处理器中的断电的处理器通电并且尝试将该中断递送到该相应多个处理器。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间:中断控制器可被配置为向该多个集群中断控制器中的第一集群中断控制器断言第一中断请求;并且基于来自该第一集群中断控制器的Nack响应,该中断控制器可被配置为向该多个集群中断控制器中的第二集群中断控制器断言第二中断请求。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间,基于来自该第二集群中断控制器的第二Nack响应,该中断控制器可被配置为向该多个集群中断控制器中的第三集群中断控制器断言第三中断请求。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间,并且基于来自该第二集群中断控制器的确认(Ack)响应以及无附加待决中断,该中断控制器可被配置为终止该尝试。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间:该中断控制器可被配置为向该多个集群中断控制器中的第一集群中断控制器断言中断请求;并且基于来自该第一集群中断控制器的确认(Ack)响应以及无附加待决中断,该中断控制器可被配置为终止该尝试。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间,该中断控制器可被配置为向该多个集群中断控制器中的一个或多个集群中断控制器串行地断言中断请求,该断言由来自该一个或多个集群中断控制器中的第一集群中断控制器的确认(Ack)响应终止。在一个实施方案中,该中断控制器可被配置为按可编程顺序串行地断言。在一个实施方案中,该中断控制器可被配置为基于该第一中断源串行地断言该中断请求。来自第二中断源的第二中断可导致该串行断言的不同顺序。在一个实施方案中,在该尝试通过该多个集群中断控制器递送该中断期间:该中断控制器可被配置为向该多个集群中断控制器中的第一集群中断控制器断言中断请求;并且该第一集群中断控制器可被配置为基于到该第一集群中断控制器的该中断请求而向该相应处理器集群中的该多个处理器串行地断言处理器中断请求。在一个实施方案中,该第一集群中断控制器被配置为基于来自该多个处理器中的第一处理器的确认(Ack)响应而终止串行断言。在一个实施方案中,该第一集群中断控制器可被配置为基于来自该第一处理器的该Ack响应而将该Ack响应传输到该中断控制器。在一个实施方案中,该第一集群中断控制器可被配置为基于在处理器中断的该串行断言期间来自该相应集群中的该多个处理器的Nack响应而将该Nack响应提供到该中断控制器。在一个实施方案中,该中断控制器可包括在包括该多个集群中断控制器的第一子集的第一半导体基板上的第一集成电路上。该多个集群中断控制器的第二子集可实现在第二单独半导体基板上的第二集成电路上。该中断控制器可被配置为在尝试向该第二子集递送之前向该第一子集串行地断言中断请求。在一个实施方案中,该第二集成电路包括第二中断控制器,并且该中断控制器可被配置为响应于该第一子集拒绝该中断而将该中断请求传达到该第二中断控制器。该第二中断控制器可被配置为尝试将该中断递送到该第二子集。
在一个实施方案中,一种处理器包括:重排序缓冲器;加载/存储单元;以及控制电路,该控制电路耦接到该重排序缓冲器和该加载/存储单元。该重排序缓冲器可被配置为跟踪与该处理器获取并且该处理器未退出的指令相对应的多个指令操作。该加载/存储单元可被配置为执行加载/存储操作。该控制电路可被配置为基于该重排序缓冲器将要将指令操作退出到可中断点并且该加载/存储单元将在指定时间段内完成到该可中断点的加载/存储操作的确定而生成对由该处理器接收的中断请求的确认(Ack)响应。该控制电路可被配置为基于该重排序缓冲器和该加载/存储单元中的至少一者将不在该指定时间段内到达该可中断点的确定而生成对该中断请求的否定确认(Nack)响应。在一个实施方案中,该确定可以是基于该重排序缓冲器具有潜在执行时延大于阈值的至少一个指令操作的Nack响应。在一个实施方案中,该确定可以是基于该重排序缓冲器具有致使中断被屏蔽的至少一个指令操作的Nack响应。在一个实施方案中,该确定是基于该加载/存储单元具有未完成的到设备地址空间的至少一个加载/存储操作的Nack响应。
在一个实施方案中,一种方法包括:在中断控制器中接收来自第一中断源的中断。该方法还可包括:执行串行地尝试将该中断递送到多个集群中断控制器的第一迭代。在该第一迭代中,该多个集群中断控制器中与包括多个处理器的相应处理器集群相关联的相应集群中断控制器可被配置为尝试将该中断递送到该相应处理器集群中的该多个处理器中的通电的子集,而不尝试将该中断递送到该相应处理器集群中的该多个处理器中未包括在该子集中的处理器。该方法还可包括:基于在该第一迭代中来自该多个集群中断控制器的否定确认(Nack)响应,由该中断控制器对该多个集群中断控制器执行第二迭代。在该第二迭代中,该给定集群中断控制器可被配置为给该相应处理器集群中的该多个处理器中的断电的处理器通电,并且尝试将该中断递送到该多个处理器。在一个实施方案中,串行地尝试将该中断递送到该多个集群中断控制器基于来自该多个集群中断控制器中的一个集群中断控制器的确认响应而终止。
一致性
现在转向图27至图43,示出了可以在SOC 10的实施方案中实现的高速缓存一致性机制的各种实施方案。在一个实施方案中,一致性机制可包括被配置为跟踪统一存储器地址空间的子集的一致性状态的多个目录。多个目录被分配在系统中。在实施方案中,多个目录被分配给存储器控制器。在一个实施方案中,一个或多个存储器控制器电路中的给定存储器控制器包括被配置为跟踪对应于给定存储器控制器介接的系统存储器的一部分中的数据的多个高速缓存块的目录,其中目录被配置为跟踪系统中的多个高速缓存中的哪一些正在高速缓存多个高速缓存块中的给定高速缓存块,其中目录相对于已在目录处被排序并处理的存储器请求是精确的,即使在存储器请求尚未在系统中完成的情况下也是如此。在一个实施方案中,给定存储器控制器被配置为基于针对给定高速缓存块的存储器请求来发出针对给定高速缓存块的一个或多个一致性维护命令,其中一个或多个一致性维护命令包括多个高速缓存中的对应高速缓存中的用于给定高速缓存块的高速缓存状态,其中对应高速缓存被配置为基于对应高速缓存中的高速缓存状态不匹配给定一致性维护命令中的高速缓存状态来延迟给定一致性维护命令的处理。在一个实施方案中,第一高速缓存被配置为以一级共享状态存储给定高速缓存块,并且第二高速缓存被配置为以二级共享状态存储给定高速缓存块,并且其中给定存储器控制器被配置为使得第一高速缓存基于存储器请求和第一高速缓存中的一级共享状态将给定高速缓存块转移到请求方。在一个实施方案中,给定存储器控制器被配置为基于第一存储器请求的类型向多个高速缓存中的第一高速缓存发出第一一致性维护命令和第二一致性维护命令中的一者,其中第一高速缓存被配置为基于第一一致性维护命令向发出第一存储器请求的请求方转发第一高速缓存块,并且其中第一高速缓存被配置为基于第二一致性维护命令将第一高速缓存块返回到给定存储器控制器。
描述了一种用于系统的可扩展高速缓存一致性协议,该系统包括耦接到一个或多个存储器控制器的多个一致代理。一致代理通常可包括具有用于高速缓存存储器数据的高速缓存或者以其他方式可拥有一个或多个高速缓存块并且潜在地本地修改这些高速缓存块的任何电路系统。一致代理参与高速缓存一致性协议以确保由一个一致代理做出的修改对随后读取相同数据的其他代理可见,并且确保由两个或更多个一致代理以特定顺序做出的修改(如在系统中的排序点诸如存储高速缓存块的存储器的存储器控制器处所确定的)在一致代理中的每个一致代理中以该顺序被观察到。
高速缓存一致性协议可指定可在代理与存储器控制器(或存储器控制器内的一致性控制器)之间发射以完成一致事务的消息或命令集合。这些消息可包括请求、窥探、窥探响应和完成。“请求”是发起事务并且指定所请求高速缓存块(例如,以及高速缓存块的地址)以及请求方将接收高速缓存块所处的状态(或者最小状态,在一些情况下,可提供更具许可性状态)的消息。如本文中所用,“窥探”或“窥探消息”是指发射到一致代理的消息,该消息请求高速缓存块的状态改变,并且在一致代理具有高速缓存块的独占副本或以其他方式负责高速缓存块的情况下,还可请求一致代理提供高速缓存块。窥探消息可以是一致性维护命令的示例,其可以是被传输到特定一致代理以致使该特定一致代理中的高速缓存行的一致性状态改变的任何命令。作为一致性维护命令的示例的另一个术语是探测。一致性维护命令并不旨在是指发送给所有一致代理的广播命令,例如因为有时在共享总线系统中使用。下面使用术语“窥探”作为示例,但应当理解,该术语通常是指一致性维护命令。“完成”或“窥探响应”可以是来自一致代理的指示已做出状态改变并且(如果适用的话)提供高速缓存块的副本的消息。在一些情况下,对于某些请求,完成也可由这些请求的源提供。
“状态”或“高速缓存状态”通常可是指指示高速缓存块的副本在高速缓存中是否有效并且还可指示高速缓存块的其他属性的值。例如,状态可指示高速缓存块是否相对于存储器中的副本被修改。状态可指示高速缓存块的所有权级别(例如,是否允许具有高速缓存的代理修改高速缓存块,代理是否负责提供高速缓存块或者在从高速缓存逐出的情况下将高速缓存块返回到存储器控制器,等等)。状态还可指示高速缓存块可能存在于其他一致代理中(例如,“共享”状态可指示可将高速缓存块的副本存储在一个或多个其他可高速缓存代理中)。
在高速缓存一致性协议的各种实施方案中可包括多种特征。例如,存储器控制器可各自实现一致性控制器和对应于由该存储器控制器控制的存储器的高速缓存块的目录。目录可跟踪多个可高速缓存代理中的高速缓存块的状态,从而允许一致性控制器确定将窥探哪些可高速缓存代理以改变高速缓存块的状态并且可能地提供高速缓存块的副本。即,基于在高速缓存控制器处接收的请求,窥探不需要被广播到所有可高速缓存代理,而是可将窥探发射到具有受请求影响的高速缓存块的副本的那些代理。一旦已经生成窥探,就可在窥探被处理并且数据被提供给请求源之后更新目录以反映每个一致代理中的高速缓存块的状态。因此,对于被处理到相同高速缓存块的下一个请求,该目录可为精确的。窥探可被最小化,从而例如在与广播解决方案相比时减少一致代理与存储器控制器之间的互连件上的流量。在一个实施方案中,可支持“3跨链”协议,其中高速缓存一致代理中的一个高速缓存一致代理向请求源提供高速缓存块的副本,或者如果不存在高速缓存代理,则存储器控制器提供该副本。因此,数据设置在以下三个“跨链”(或通过接口发射的消息)中:从源到存储器控制器的请求、对将对请求作出响应的一致代理的窥探以及从一致代理到请求源的具有高速缓存块数据的完成。在不存在所高速缓存副本的情况下,可存在两个跨链:从源到存储器控制器的请求和从存储器控制器到源的具有数据的完成。可存在附加消息(例如,当针对请求存在多个窥探时,来自其他代理的指示已经做出请求状态改变的完成),但数据本身可设置在三个跨链中。相比之下,许多高速缓存一致性协议是四跨链协议,其中一致代理通过将高速缓存块返回到存储器控制器来对窥探作出响应,并且存储器控制器将高速缓存块转发到源。在一个实施方案中,除三个跨链流之外,协议还可支持四个跨链流。
在一个实施方案中,针对高速缓存块的请求可由一致性控制器处置,并且一旦已经生成窥探(和/或对于不存在所高速缓存副本的情况,来自存储器控制器的完成),就可更新目录。然后可服务针对相同高速缓存块的另一个请求。因此,针对相同高速缓存块的请求可不被串行化,如同一些其他高速缓存一致性协议的情况。当存在未解决到高速缓存块的多个请求时可发生各种竞争条件,因为与后续请求相关的消息可在与先前请求相关的消息之前到达给定的一致代理(其中“后续”和“先前”是指如在存储器控制器中的一致性控制器处被排序的请求)。为了允许代理对请求进行分类,消息(例如,窥探和完成)可包括接收代理处的预期高速缓存状态,如当处理请求时目录所指示。因此,如果接收代理不具有处于消息中所指示的状态的高速缓存块,则接收代理可延迟对消息的处理,直到高速缓存状态改变为预期状态为止。改变为预期状态可经由与先前请求相关的消息发生。对竞争条件和使用预期高速缓存状态来解决这些竞争条件的附加描述在下面相对于图29至图30和图32至图34提供。
在一个实施方案中,这些高速缓存状态可包括一级共享状态和二级共享状态。该一级共享状态可适用于负责将该高速缓存块的副本发射到请求代理的一致代理。在处理给定请求(例如,对在共享状态下被允许返回的高速缓存块的读取)期间,甚至可不需要窥探二级共享代理。关于一级共享状态和二级共享状态的附加细节将相对于图40和图42描述。
在一个实施方案中,可支持至少两种类型的窥探:窥探转发和窥探退回。窥探转发消息可用于致使一致代理将高速缓存块转发到请求代理,而窥探退回消息可用于致使一致代理将高速缓存块返回到存储器控制器。在一个实施方案中,还可支持窥探失效消息(并且也可包括转发变体和退回变体以针对完成指定目的地)。窥探失效消息致使高速缓存一致代理使高速缓存块失效。支持窥探转发流和窥探退回流可提供例如可高速缓存(窥探转发)行为和不可高速缓存(窥探退回)行为两者。窥探转发可用于在将高速缓存块提供给高速缓存代理时最小化消息的数量,因为高速缓存代理可存储高速缓存块并且潜在地使用其中的数据。另一方面,非一致代理可不存储整个高速缓存块,并且因此退回到存储器的副本可确保完整高速缓存块被捕获在存储器控制器中。因此,可基于请求代理的能力(例如,基于请求代理的标识)和/或基于请求的类型(例如,可高速缓存或不可高速缓存)选择窥探转发变体和窥探退回变体或类型。关于窥探转发和窥探退回消息的附加细节在下面相对于图37、图38和图40提供。各种其他特征在剩余图中示出并且将在下面更详细地描述。
图27是包括耦接到一个或多个存储器诸如存储器C12A-C12m的片上系统(SOC)C10的系统的实施方案的框图。例如,SOC C10可以是图1所示的SOC 10的实例。SOC C10可包括多个一致代理(CA)C14A-C14n。这些一致代理可包括耦接一个或多个高速缓存(例如,高速缓存C18)的一个或多个处理器(P)C16。SOC C10可包括一个或多个非一致代理(NCA)C20A-C20p。SOC C10可包括一个或多个存储器控制器C22A-C22m,每个存储器控制器在使用期间耦接到相应的存储器C12A-C12m。每个存储器控制器C22A-C22m可包括耦接到目录C26的一致性控制器电路C24(更简要地说,“一致性控制器”或“CC”)。存储器控制器C22A-C22m、非一致代理C20A-C20p和一致代理C14A-C14n可耦接到互连件C28以在各种部件C22A-C22m、C20A-C20p和C14A-C14n之间通信。顾名思义,在一个实施方案中,SOC C10的部件可集成到单个集成电路“芯片”上。在其他实施方案中,各种部件可在SOC C10外部其他芯片上或另外的离散部件上。可使用任何数量的集成或离散部件。在一个实施方案中,一致代理C14A-C14n和存储器控制器C22A-C22m的子集可在耦接在一起以形成图27的SOC C10中示出的部件的多个集成电路芯片中的一个集成电路芯片中实现。
一致性控制器C24可实现高速缓存一致性协议的存储器控制器部分。一般来讲,一致性控制器C24可被配置为(例如,通过存储器控制器C22A-C22m中的一个或多个队列(未示出))从互连件C28接收针对映射到存储器控制器C22A-C22m耦接到的存储器C12A-C12m的高速缓存块的请求。目录可包括多个条目,该多个条目中的每个条目可跟踪系统中相应高速缓存块的一致性状态。一致性状态可包括例如高速缓存块在各种一致代理C14A-C14N中(例如,在高速缓存C18中,或者在其他高速缓存诸如处理器C16中的高速缓存(未示出)中)的高速缓存状态。因此,基于对应于给定请求和给定请求的类型的高速缓存块的目录条目,一致性控制器C24可被配置为确定哪些一致代理C14A-C14n将接收窥探以及窥探类型(例如,窥探失效、窥探共享、改变为共享、改变为拥有、改变为失效等)。一致性控制器C24还可独立地确定将发射窥探转发还是窥探退回。一致代理C14A-C14n可接收窥探,处理窥探以更新一致代理C14A-C14n中的高速缓存块状态,并且向请求一致代理C14A-C14n或发射窥探的存储器控制器C22A-C22m提供高速缓存块的副本(如果由窥探指定的话)。附加细节将在下文进一步提供。
如上所述,一致代理C14A-C14n可包括一个或多个处理器C16。处理器C16可用作SOC C10的中央处理单元(CPU)。系统的CPU包括执行系统主要控制软件诸如操作系统的一个或多个处理器。通常,由CPU在使用过程中执行的软件可控制系统的其他部件,以实现系统的期望的功能。处理器还可执行其他软件诸如应用程序。应用程序可提供用户功能,并且可依靠操作系统进行下层设备控制、调度、存储器管理等。因此,处理器也可被称为应用处理器。一致代理C14A-C14n还可包括其他硬件,诸如高速缓存C18和/或至系统的其他部件的接口(例如至互连件C28的接口)。其他一致代理可包括非CPU的处理器。此外,其他一致代理可不包括处理器(例如,诸如显示控制器或其他外围电路系统的固定功能电路系统、具有经由一或多个嵌入式处理器进行的处理器辅助的固定功能电路系统等可为一致代理)。
通常,处理器可包括被配置为执行在由处理器实施的指令集架构中定义的指令的任何电路系统和/或微码。处理器可涵盖在具有作为片上系统(SOC C10)或其他集成水平的其他部件的集成电路上实施的处理器内核。处理器可进一步涵盖离散微处理器、集成到多芯片模块具体实施中的处理器内核和/或微处理器、实现为多个集成电路的处理器等。给定一致代理C14A-C14n中的处理器C16的数量可不同于另一个一致代理C14A-C14n中的处理器C16的数量。一般来讲,可包括一个或多个处理器。另外,处理器C16可在微架构具体实施、性能和功率特性等方面不同。在一些情况下,处理器甚至可在这些处理器实现的指令集架构、这些处理器的功能(例如,CPU、图形处理单元(GPU)处理器、微控制器、数字信号处理器、图像信号处理器等)等方面不同。
高速缓存C18可具有任何容量和配置,诸如设置关联、直接映射或完全关联。高速缓存块大小可以是任何期望的大小(例如,32字节、64字节、128字节等)。高速缓存块可以是高速缓存C18中的分配和解除分配的单元。另外,在该实施方案中,高速缓存块可以是在其上保持一致性的单元(例如,存储器地址空间的对齐的一致性粒度片段)。在一些情况下,高速缓存块也可称为高速缓存线。
除一致性控制器C24和目录C26之外,存储器控制器C22A-C22m通常可包括用于从SOC C10的其他部件接收存储器操作和用于访问存储器C12A-C12m以完成存储器操作的电路系统。存储器控制器C22A-C22m可被配置为访问任何类型的存储器C12A-C12m。例如,存储器C12A-C12m可以是静态随机存取存储器(SRAM)、动态RAM(DRAM)诸如包括双倍数据速率(DDR、DDR2、DDR3、DDR4等)DRAM的同步DRAM(SDRAM)、非易失性存储器、图形DRAM诸如图形DDR DRAM(GDDR)以及高带宽存储器(HBM)。可支持DDR DRAM的低功率/移动版本(例如,LPDDR、mDDR等)。存储器控制器C22A-C22m可包括存储器操作的队列,以用于对操作进行排序(并且潜在地重新排序),并将这些操作呈现至存储器C12A-C12m。存储器控制器C22A-C22m还可包括用于存储等待写入到存储器的写入数据和等待返回到存储器操作源的读取数据的数据缓冲器(在数据并非从窥探提供的情况下)。在一些实施方案中,存储器控制器C22A-C22m可包括用于存储最近访问的存储器数据的存储器高速缓存。例如,在SOC具体实施中,存储器高速缓存可通过在预期很快将被再次访问的情况下避免从存储器C12A-C12m重新访问数据来降低SOC中的功率消耗。在一些情况下,存储器高速缓存也可称为系统高速缓存,其与私有高速缓存诸如高速缓存C18或处理器C16中的高速缓存不同,该私有高速缓存只服务于某些部件。除此之外,在一些实施方案中,系统高速缓存不需要位于存储器控制器C22A-C22m内。
非一致代理C20A-C20p通常可包括SOC C10中包括的各种附加硬件功能(例如,“外围设备”)。例如,外围设备可包括视频外围设备,诸如被配置为处理来自相机或其他图像传感器的图像捕捉数据的图像信号处理器、视频编码器/解码器、扩展器、旋转器、混合器等。外围设备可包括音频外围设备,诸如麦克风、扬声器、至麦克风和扬声器的接口、音频处理器、数字信号处理器、混合器等。外围设备可包括用于SOC C10外部的各种接口的接口控制器,包括诸如通用串行总线(USB)、包含PCI Express(PCIe)的外围部件互连(PCI)、串行和并行端口等接口。外围设备可包括联网外围设备诸如介质访问控制器(MAC)。可包括任何一组硬件。在一个实施方案中,非一致代理C20A-C20p还可包括到一组外围设备的桥。
互连件C28可为用于在SOC C10的部件间进行通信的任何通信互连件和协议。互连件C28可为基于总线的,包括共享总线配置、交叉开关配置和具有桥的分层总线。互连件C28也可为基于分组的或电路交换的,并且可为具有桥的分层、交叉开关、点到点或其他互连件。在一个实施方案中,互连件C28可包括多个独立的通信结构。
一般来讲,每个部件C22A-C22m、C20A-C20p和C14A-C14n的数量可根据实施方案而变化,并且可使用任何数量。如后缀“m”、“p”和“n”所指示,一种类型的部件的数量可不同于另一种类型的部件的数量。然而,给定类型的数量也可与另一类型的数量相同。另外,虽然图27的系统被示出为具有多个存储器控制器C22A-C22m,但具有一个存储器控制器C22A-C22m的实施方案也被设想并且可实现本文所述的高速缓存一致性协议。
接下来转向图28,示出了例示根据可扩展高速缓存一致性协议的实施方案的多个一致代理C12A-C12D和存储器控制器C22A针对可高速缓存读取独占请求(CRdEx)执行一致事务的框图。读取独占请求可以是针对高速缓存块的独占副本的请求,因此一致代理C14A-C14D使任何其他副本失效,并且当事务完成时,请求方具有唯一有效副本。具有指派到高速缓存块的存储器位置的存储器C12A-C12m在指派到存储器C12A-C12m中的高速缓存块的位置处具有数据,但如果请求方修改该数据,则该数据也将是“陈旧的”。可使用读取独占请求,例如使得请求方具有修改高速缓存块而无需在高速缓存一致性协议中发射附加请求的能力。如果不需要独占副本,则可使用其他请求(例如,如果请求方不一定需要可写入副本,则可使用读取共享请求CRdSh)。“CRdEx”标签中的“C”可是指“可高速缓存”。其他事务可由非一致代理(例如,图27中的代理C20A-C20p)发出,并且此类事务可被标记为“NC”(例如,NCRd)。对事务中的请求类型和其他消息的附加讨论在下面针对一个实施方案相对于图40进一步提供,并且对高速缓存状态的进一步讨论在下面针对实施方案相对于图39进一步提供。
在图28的示例中,一致代理C14A可通过将读取独占请求发射到(控制指派到读取独占请求中的地址的存储器位置的)存储器控制器C22A来发起事务。存储器控制器C22A(并且更具体地,存储器控制器C22A中的一致性控制器C24)可读取目录C26中的条目并且确定一致代理C14D具有处于一级共享状态(P)的高速缓存块,并且因此可为将把高速缓存块提供给请求一致代理C14D的一致代理。一致性控制器C24可生成对一致代理C14D的窥探转发(SnpFwd[st])消息,并且可向一致代理C14D发出窥探转发消息。根据目录C26,一致性控制器C24可包括接收窥探的一致代理中的当前状态的标识符。例如,在这种情况下,根据目录C26,当前状态是一致代理C14D中的“P”。基于窥探,一致代理C14D可访问正在存储高速缓存块的高速缓存并且生成具有对应于高速缓存块的数据的填充完成(图28中的Fill)。一致代理C14D可将填充完成发射到一致代理C14A。因此,系统实现用于将数据递送给请求方的“3跨链”协议:CRdEx、SnpFwd[st]和Fill。如SnpFwd[st]消息中的“[st]”所指示,还可利用在处理窥探之后一致代理将转换到的高速缓存块的状态来对窥探转发消息进行编码。在各种实施方案中,可存在消息的不同变型,或者可将状态作为字段携载在消息中。在图28的示例中,一致代理中的高速缓存块的新状态可为失效,因为请求是读取独占请求。其他请求可允许新的共享状态。
另外,一致性控制器C24可根据高速缓存块的目录条目确定一致代理C14B-C14C具有处于二级共享状态(S)的高速缓存块。因此,可向满足以下条件的每个一致代理发出窥探:(i)具有高速缓存块的所高速缓存副本;并且(ii)一致代理中的块的状态将基于事务而改变。由于一致代理C14A正在获得独占副本,因此共享副本将失效,并且因此一致性控制器C24可针对一致代理C14B-C14C生成窥探失效(SnpInvFw)消息并且可向一致代理C14B-C14C发出窥探。窥探失效消息包括指示一致代理C14B-C14C中的当前状态是共享的标识符。一致代理C14B-C14C可处理窥探失效请求并且将确认(Ack)完成提供给一致代理C14A。需注意,在例示的协议中,从窥探代理到一致性控制器C24的消息不在该实施方案中实现。一致性控制器C24可基于窥探的发出更新目录条目,并且可处理下一个事务。因此,如先前所提及的,在该实施方案中,对相同高速缓存块的事务可不被串行化。一致性控制器C24可允许对相同高速缓存块的附加事务开始并且可依赖于窥探中的当前状态指示以识别哪些窥探属于哪些事务(例如,对相同高速缓存块的下一个事务将检测对应于已完成先前事务的高速缓存状态)。在例示的实施方案中,窥探失效消息是SnpInvFw消息,因为完成作为三跨链协议的一部分被发送到发起一致代理C14A。在一个实施方案中,对于某些代理也支持四跨链协议。在这样的实施方案中,可使用SnpInvBk消息来指示窥探代理将把完成发射回到一致性控制器C24。
因此,窥探中的高速缓存状态标识符可允许一致代理解决形成对相同高速缓存块的不同事务的消息之间的竞争。即,接收消息的顺序可与一致性控制器处理对应请求的顺序不一致。一致性控制器C24通过目录C26处理对相同高速缓存块的请求的顺序可定义请求的顺序。即,一致性控制器C24可以是用于在给定存储器控制器C22A-C22m中接收的事务的排序点。另一方面,可基于对应于每个消息的当前高速缓存状态和一致代理C14A-C14n中的高速缓存状态在一致代理C14A-C14n中管理消息的串行化。给定一致代理可基于窥探访问一致代理内的高速缓存块,并且可被配置为将窥探中指定的高速缓存状态与高速缓存中当前的高速缓存状态进行比较。如果状态不匹配,则窥探属于在将代理中的高速缓存状态改变为窥探中指定的状态的另一个事务之后排序的事务。因此,窥探代理可被配置为基于第一状态与第二状态不匹配延迟对窥探的处理,直到第二状态响应于与不同于第一请求的请求相关的不同通信而改变为第一状态为止。例如,可基于由窥探代理从不同事务接收的填充完成等改变状态。
在一个实施方案中,窥探可包括指示对应于事务的完成数量的完成计数(Cnt),因此请求方可确定何时已接收到与事务有关的所有完成。一致性控制器C24可基于高速缓存块的目录条目中所指示的状态来确定完成计数。完成计数可以是例如完成的数量减一(例如,在图28的示例中为2,因为存在三个完成)。该具体实施可允许完成计数用作在请求代理接收到事务的初始完成时事务的完成计数器的初始化(例如,该完成计数已经递减以反映携载完成计数的完成的接收)。一旦计数已被初始化,用于事务的另外的完成就可致使请求代理更新完成计数器(例如,使计数器递减)。在其他实施方案中,实际完成计数可被提供并且可被请求方递减以初始化完成计数。一般而言,完成计数可以是标识请求方将在事务完全完成之前观察到的完成数量的任何值。即,请求代理可基于完成计数器完成请求。
图29和图30示出了在具有对相同高速缓存块的事务的情况下可发生的示例性竞争条件,以及给定代理的如当在存储器控制器中处理事务时在目录中反映的当前高速缓存状态(也称为“预期高速缓存状态”)和给定代理中的(例如,如在给定代理的高速缓存或可临时存储高速缓存数据的缓冲器中反映的)当前高速缓存状态的使用。在图29和图30中,一致代理被列为CA0和CA1,并且与高速缓存块相关联的存储器控制器被示出为MC。CA0、CA1和MC的垂直线30、32和34示出对应于事务的各种消息的源(箭头的根部)和消息的目的地(箭头的头部)。时间在图29和图30中从顶部至底部推进。如果存储器控制器耦接到的存储器包括指派到高速缓存块的地址的存储器位置,则存储器控制器可与高速缓存块相关联。
图29示出了对于相同高速缓存块用于一个事务的填充完成与用于不同事务的窥探之间的竞争条件。在图29的示例中,CA0利用CRdEx请求向MC发起读取独占事务(箭头36)。CA1也利用CRdEx请求发起读取独占事务(箭头38)。MC首先处理CA0事务,从而将CA0事务建立为排序在CA1请求之前。在该示例中,目录指示在系统中不存在高速缓存块的所高速缓存副本,并且因此MC以独占状态下的填充(FillE,箭头40)对CA0请求作出响应。MC针对CA0在独占状态下更新高速缓存块的目录条目。
MC从CA1选择CRdEx方面以用于处理,并且检测到CA0具有处于独占状态的高速缓存块。因此,MC可生成对CA0的窥探转发请求,从而请求CA0使其高速缓存中的高速缓存块失效并且将高速缓存块提供给CA1(SnpFwdI)。窥探转发请求还包括CA0中的高速缓存块的E状态的标识符,因为这是在CA0的目录中反映的高速缓存状态。MC可发出窥探(箭头42)并且可更新目录以指示CA1具有独占副本并且CA0不再具有有效副本。
窥探和填充完成可按任一时间顺序到达CA0。消息可在不同的虚拟信道中传播,和/或互连中的其他延迟可允许消息以任一顺序到达。在所示出的示例中,窥探在填充完成之前到达CA0。然而,因为窥探中的预期状态(E)与CA0中的高速缓存块的当前状态(I)不匹配,所以CA0可延迟对窥探处理。随后,填充完成可到达CA0。CA0可将高速缓存块写入高速缓存中并且将状态设置为独占(E)。还可允许CA0对高速缓存块执行至少一个操作以支持CA0中的任务向前推进,并且该操作可将状态改变为修改(M)。在高速缓存一致性协议中,目录C26可不单独地跟踪M状态(例如,其可被视为E),但可将E状态匹配为窥探中的预期状态。CA0可在状态为修改的情况下向CA1发出填充完成(FillM,箭头44)。因此,用于两个事务的窥探与填充完成之间的竞争条件已经被正确地处置。
虽然在图29的示例中,CRdEx请求是由CA1在来自CA0的CRdEx请求之后发出的,但CRdEx请求可由CA1在来自CA0的CRdEx请求之前发出,并且由于MC是事务的排序点,因此来自CA0的CRdEx请求仍然可由MC排序在来自CA1的CRdEx请求之前。
图30示出了对于相同高速缓存块用于一个一致事务的窥探与用于另一个一致事务的完成之间的竞争条件。在图30中,CA0发起回写事务(CWB)(箭头46)以将所修改高速缓存块写入到存储器,但高速缓存块实际上可如上文所提及在目录中被跟踪为独占。例如,如果CA0将高速缓存块从其高速缓存逐出,但该高速缓存块处于修改状态,则可发射CWB。CA1针对相同高速缓存块发起读取共享事务(CRdS)(箭头48)。CA1事务由MC排序在CA0事务之前,该MC读取高速缓存块的目录条目并且确定CA0具有处于独占状态的高速缓存块。MC向CA0发出窥探转发请求,并且请求改变到二级共享状态(SnpFwdS,箭头50)。窥探中的标识符指示CA0中的当前高速缓存独占状态(E)。MC更新目录条目以指示CA0具有处于二级共享状态的高速缓存块,并且CA1具有处于一级共享状态的副本(因为先前的独占副本正被提供给CA1)。
MC处理来自CA0的CWB请求,从而再次读取高速缓存块的目录条目。MC发出Ack完成,从而在Ack完成中用高速缓存状态的标识符指示当前高速缓存状态在CA0中是二级共享(S)(箭头52)。基于预期二级共享状态与当前修改状态不匹配,CA0可延迟对Ack完成的处理。处理Ack完成将允许CA0丢弃高速缓存块,并且响应于稍后到达的SnpFwdS请求,CA0然后不会将高速缓存块的副本提供给CA1。当接收到SnpFwdS请求时,CA0可向CA1提供填充完成(箭头54),从而提供处于一级共享状态(P)的高速缓存块。CA0还可将CA0中的高速缓存块的状态改变为二级共享(S)。状态的改变与用于Ack完成的预期状态匹配,并且因此CA0可使高速缓存块失效并且完成CWB事务。
图31是一致代理C14A的一个实施方案的一部分的一个实施方案的更详细框图。其他一致代理C14B-C14n可以是类似的。在例示的实施方案中,一致代理C14A可包括请求控制电路C60和请求缓冲器C62。请求缓冲器C62耦接到请求控制电路C60,并且请求缓冲器C62和请求控制电路C60两者耦接到高速缓存C18和/或处理器C16以及互连件C28。
请求缓冲器C62可被配置为存储由高速缓存C18/处理器C16针对一致高速缓存块生成的多个请求。即,请求缓冲器C62可存储在互连件C28上发起事务的请求。图31中示出了请求缓冲器C62的一个条目,并且其他条目可以是类似的。该条目可包括有效(V)字段C63、请求(Req.)字段C64、计数有效(CV)字段C66和完成计数(CompCnt)字段C68。有效字段C63可存储指示条目是否有效(例如,存储未解决请求)的有效指示(例如,有效位)。请求字段C64可存储定义请求的数据(例如,请求类型、高速缓存块的地址、用于事务的标签或其他标识符等)。计数有效字段C66可存储完成计数字段C68的有效指示,从而指示完成计数字段C68已经被初始化。请求控制电路C68可在处理从互连件C28接收的用于请求的完成时使用计数有效字段C66来确定请求控制电路C68是将初始化包括在完成中的具有完成计数的字段(计数字段并不有效)还是将更新完成计数,诸如使完成计数递减(计数字段有效)。完成计数字段C68可存储当前完成计数。
请求控制电路C60可从高速缓存18/处理器16接收请求并且可将请求缓冲器C62中的请求缓冲器条目分配给请求。请求控制电路C60可跟踪缓冲器C62中的请求,从而致使请求在互连件C28上发射(例如,根据任何种类的仲裁方案)并且跟踪请求中的所接收完成以完成事务并且将高速缓存块转发到高速缓存C18/处理器C16。
现在转向图32,示出了例示存储器控制器C22A-C22m中的一致性控制器C24的一个实施方案基于接收到将处理的请求的操作的流程图。当已经经由任何期望的仲裁算法在于存储器控制器C22A-C22m中接收的针对服务的请求中选择请求时,可执行图32的操作。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致性控制器C24中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致性控制器C24可被配置为实现图32中示出的操作。
一致性控制器C24可被配置为基于请求的地址从目录C26读取目录条目。一致性控制器C24可被配置为基于如目录条目中所指示的请求的类型(例如,请求方针对高速缓存块请求的状态)和各种一致代理C14A-C14n中的高速缓存块的当前状态来确定将生成哪些窥探(框C70)。另外,一致性控制器C24可基于如目录中所指示的将接收窥探的一致代理C14A-C14n的当前状态生成将包括在每个窥探中的当前状态。一致性控制器C24可被配置为将当前状态插入窥探中(框C72)。一致性控制器C24还可被配置为生成完成计数并且将完成计数插入每个窥探中(框C74)。如先前所提及的,在一个实施方案中,完成计数可以是完成的数量减一,或者完成的总数。完成的数量可以是窥探的数量,并且在存储器控制器C22A-C22m将提供高速缓存块的情况下是来自存储器控制器C22A-C22m的填充完成的数量。在针对可高速缓存请求存在窥探的大多数情况下,窥探一致代理C14A-C14n中的一个窥探一致代理可提供高速缓存块,并且因此完成的数量可以是窥探的数量。然而,在无一致代理C14A-C14n具有高速缓存块的副本(无窥探)的情况下,例如,存储器控制器可提供填充完成。一致性控制器C24可被配置为使窥探排队以用于发射到一致代理C14A-C14n(框C76)。一旦窥探被成功地排队,一致性控制器C24就可被配置为更新目录条目以反映请求的完成(框C78)。例如,更新可改变在目录条目中跟踪的高速缓存状态,以匹配由窥探请求的高速缓存状态,改变指示哪个代理将把高速缓存块的副本提供给在事务完成时将具有处于独占、修改、拥有或一级共享状态的高速缓存块的一致代理C14A-C14n的代理标识符等。
现在转向图33,示出了例示一致代理C14A-C14n中的请求控制电路C60的一个实施方案基于接收到在请求缓冲器C62中未解决的请求的完成的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在请求控制电路C60中的组合式逻辑电路中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。请求控制电路C60可被配置为实现图33中示出的操作。
请求控制电路C60可被配置为访问请求缓冲器C62中的与所接收完成与其相关联的请求相关联的请求缓冲器条目。如果计数有效字段C66指示完成计数有效(决策框C80,“是”分支),则请求控制电路C60可被配置为使请求计数字段C68中的计数递减(框C82)。如果计数为零(决策框C84,“是”分支),则请求完成并且请求控制电路C60可被配置为将完成的指示(以及所接收高速缓存块,如果适用的话)转发到生成请求的高速缓存C18和/或处理器C16(框C86)。完成可致使更新高速缓存块的状态。如果在更新之后高速缓存块的新状态与待决窥探中的预期状态一致(决策框C88,“是”分支),则请求控制电路C60可被配置为处理待决窥探(框C90)。例如,请求控制电路C60可被配置为将窥探传递到高速缓存C18/处理器C16以生成对应于待决窥探的完成(并且改变如由窥探所指示的高速缓存块的状态)。
如果新状态与预期状态相同,则新状态可与预期状态一致。另外,如果预期状态是由目录C26针对新状态跟踪的状态,则新状态可与预期状态一致。例如,在一个实施方案中,修改状态在目录C26中被跟踪为独占状态,并且因此修改状态与预期的独占状态一致。例如,如果状态设置在由另一个一致代理C14A-C14n发射的填充完成中,则新状态可被修改,该另一个一致代理具有作为独占的高速缓存块并且本地修改高速缓存块。
如果计数有效字段C66指示完成计数有效(决策框C80)并且在递减之后完成计数不为零(决策框C84,“否”分支),则请求并未完成并且因此在请求缓冲器C62中保持待决(并且正等待请求完成的任何待决窥探可保持待决)。如果计数有效字段C66指示完成计数并不有效(决策框C80,“否”分支),则请求控制电路C60可被配置为利用设置在完成中的完成计数初始化完成计数字段C68(框C92)。请求控制电路C60仍可被配置为检查完成计数为零(例如,如果对于请求仅存在一次完成,则完成计数在完成中可为零)(决策框C84),并且处理可如上文所讨论那样继续。
图34是示出一致代理C14A-C14n的一个实施方案基于接收到窥探的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致代理14CA-C14n中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致代理14CA-C14n可被配置为实现如图34中示出的操作。
一致代理C14A-C14n可被配置为对照高速缓存C18中的状态检查窥探中的预期状态(决策框C100)。如果预期状态与高速缓存块的当前状态不一致(决策框C100,“否”分支),则完成未解决,这将把高速缓存块的当前状态改变为预期状态。完成对应于在对应于窥探的事务之前排序的事务。因此,一致代理C14A-C14n可被配置为使窥探待决,从而延迟对窥探的处理,直到当前状态改变为窥探中所指示的预期状态(框C102)。在一个实施方案中,待决窥探可被存储在专门针对待决窥探提供的缓冲器中。另选地,待决窥探可被并吞到正存储冲突请求的请求缓冲器C62中的条目中,如下面相对于图36更详细地讨论。
如果预期状态与当前状态一致(决策框C100,“是”分支),则一致代理C14A-C14n可被配置为基于窥探处理状态而改变(框C104)。即,窥探可指示期望的状态改变。一致代理C14A-C14n可被配置为生成完成(例如,在窥探是窥探转发请求的情况下为填充,在窥探是窥探退回请求的情况下为副本退回窥探响应,或在窥探是状态改变请求的情况下为确认(转发或退回,基于窥探类型))。一致代理可被配置为根据窥探生成具有完成计数的完成(框C106)并且对完成进行排队以用于发射到请求一致代理C14A-C14n(框CC108)。
使用本文所述的高速缓存一致性算法,高速缓存块可通过具有低消息带宽开销的冲突请求链从一个一致代理C14A-C14n发射到另一个一致代理。例如,图35是示出高速缓存块在4个一致代理CA0至CA3之间的发射的框图。类似于图29和图30,一致代理被列为CA0至CA3,并且与高速缓存块相关联的存储器控制器被示出为MC。CA0、CA1、CA2、CA3和MC的垂直线110、112、114、116和118分别示出对应于事务的各种消息的源(箭头的根部)和消息的目的地(箭头的头部)。时间在图35中从顶部至底部推进。在对应于图35的顶部的时间,一致代理CA3具有处于(在目录C26中被跟踪为独占的)修改状态的在事务中涉及的高速缓存块。图35中的事务全部是对相同高速缓存块的。
一致代理CA0利用CRdEx请求向存储器控制器发起读取独占事务(箭头120)。一致代理CA1和CA2也发起读取独占事务(分别为箭头122和124)。如箭头120、122和124在线118处的头部所指示,存储器控制器MC将事务排序为CA0,然后是CA1,并且最后是CA2。来自CA0的事务的目录状态是处于独占状态的CA3,并且因此,在当前高速缓存状态为独占的情况下发射窥探转发和失效(SnpFwdI)(箭头126)。一致代理CA3接收窥探并将具有数据的FillM完成转发给一致代理CA0(箭头128)。类似地,来自CA1的事务的目录状态是处于独占状态的一致代理CA0(来自对CA0的先前事务),并且因此存储器控制器MC向当前高速缓存状态为E的一致代理CA0发出SnpFwdI(箭头130),并且来自CA2的事务的目录状态是当前高速缓存状态为E的一致代理CA1(箭头132)。一旦一致代理CA0曾有机会对高速缓存块执行至少一个存储器操作,一致代理CA0就以到一致代理CA1的FillM完成作出响应(箭头134)。类似地,一旦一致代理CA1曾有机会对高速缓存块执行至少一个存储器操作,一致代理CA1就以到一致代理CA2的FillM完成(箭头136)对其窥探作出响应。虽然各种消息的顺序和定时可变化(例如,类似于图29和图30中所示的竞争条件),但一般来讲,当冲突请求解决时,高速缓存块可利用一个额外消息(FillM完成)从代理移动到代理。
在一个实施方案中,由于上述竞争条件,窥探可在其将窥探的填充完成(通过该窥探携载预期高速缓存状态检测到)之前被接收。另外,窥探可在Ack完成被收集并且填充完成可被处理之前被接收。Ack完成由窥探产生,并且因此取决于携载窥探的虚拟信道中的推进。因此,(在预期高速缓存状态上延迟等待的)冲突窥探可填充内部缓冲器并将压力返回到构造中,这可导致死锁。在一个实施方案中,一致代理C14A-C14n可被配置为将一个窥探转发和一个窥探失效并吞到请求缓冲器中的未解决请求中,而不是分配单独的条目。非冲突窥探或者将到达能够在没有进一步互连相依性的情况下处理的点的冲突窥探然后可绕过冲突窥探流通并且避免死锁。一个窥探转发和一个窥探失效的并吞可以是足够的,因为当进行窥探转发时,转发责任被转移到目标。因此,在请求方完成其当前请求并且在先前的窥探转发完成之后发出另一个新请求之前不会再次进行另一个窥探转发。当窥探失效完成时,请求方根据目录而失效并且在该请求方处理先前的失效之前将不会再次接收另一个失效,再次请求高速缓存块并获得新副本。
因此,一致代理C14A-C14n可被配置为通过检测由一致代理接收的对高速缓存块的窥探来帮助确保向前推进和/或防止死锁,对于该高速缓存块,一致代理具有已被排序在窥探之前的未解决请求。一致代理可被配置为将第二窥探并吞到未解决请求中(例如,并吞到存储请求的请求缓冲器条目中)。一致代理可在完成未解决请求之后处理所并吞窥探。例如,如果所并吞窥探是窥探转发请求,则一致代理可被配置为在完成未解决请求之后将高速缓存块转发给窥探转发窥探中所指示的另一个一致代理(并且可将高速缓存状态改变为由窥探转发请求所指示的状态)。如果所并吞窥探是窥探失效请求,则一致代理可将高速缓存状态更新为失效并且在完成未解决请求之后发射确认完成。将窥探并吞到冲突请求中可例如通过在每个请求缓冲器条目中包括用于描述所并吞窥探的数据的附加存储来实现。
图36是示出一致代理C14A-C14n的一个实施方案基于接收到窥探的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致代理C14A-C14n中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致代理C14A-C14n可被配置为实现如图36中示出的操作。例如,图36中示出的操作可以是检测具有与预期高速缓存状态不一致的预期高速缓存状态并且待决的窥探(图34中的决策框C100和框C102)的一部分。
一致代理C14A-C14n可被配置为将因缺乏一致高速缓存状态而待决的窥探的地址与请求缓冲器C62中的未解决请求(或待决请求)的地址进行比较。如果检测到地址冲突(决策框C140,“是”分支),则请求缓冲器C62可将窥探并吞到指派到针对其检测到地址冲突的待决请求的缓冲器条目中(框C142)。如果与待决请求不存在地址冲突(决策框C140,“否”分支),则一致代理C14A-C14n可被配置为针对窥探分配单独的缓冲器位置(例如,在请求缓冲器C62中或一致代理C14A-C14n中的另一个缓冲器中),并且可被配置为将描述窥探的数据存储在缓冲器条目中(框C144)。
如先前所提及的,在一个实施方案中,高速缓存一致性协议可支持可高速缓存请求和不可高速缓存请求两者,同时保持所涉及数据的一致性。不可高速缓存请求可例如由非一致代理C20A-C20p发出,并且非一致代理C20A-C20p可不具有一致地存储高速缓存块的能力。在一个实施方案中,一致代理C14A-C14n也可发出不可高速缓存请求,并且一致代理不可高速缓存响应于这种请求而提供的数据。因此,例如在给定非一致代理C20A-C20p请求的数据在一致代理C14A-C14n中的一个一致代理中的所修改高速缓存块中并且将被转发到给定非一致代理C20A-C20p并且预期所修改高速缓存块将由给定非一致代理C20A-C20p预留的情况下,针对不可高速缓存请求的窥探转发请求将是不适当的。
为了支持一致不可高速缓存事务,可扩展高速缓存一致性协议的实施方案可包括多种类型的窥探。例如,在一个实施方案中,窥探可包括窥探转发请求和窥探退回请求。如先前所提及的,窥探转发请求可致使将高速缓存块转发到请求代理。另一方面,窥探退回请求可致使将高速缓存块发射回到存储器控制器。在一个实施方案中,还可支持窥探失效请求以使(具有用于引导完成的转发和退回版本的)高速缓存块失效。
更具体地,接收请求的存储器控制器C22A-C22m(并且甚至更具体地,存储器控制器C22A-C22m中的一致性控制器C24)可被配置为从目录C26读取由请求中的地址标识的对应于高速缓存块的条目。存储器控制器C22A-C22m可被配置为根据条目向一致代理C14A-C14m中的具有高速缓存块的所高速缓存副本的给定代理发出窥探。窥探指示给定代理将基于第一请求是第一类型(例如,可高速缓存请求)而将高速缓存块发射到请求源。窥探指示给定代理将基于第一请求是第二类型(例如,不可高速缓存请求)而将第一高速缓存块发射到存储器控制器。存储器控制器C22A-C22n可被配置为基于从给定代理接收到高速缓存块以完成对请求源作出响应。另外,如同其他一致请求一样,存储器控制器C22A-C22n可被配置为基于针对不可高速缓存请求发出多个窥探更新目录C26中的条目以反映不可高速缓存请求的完成。
图37是示出在一个实施方案中一致地管理的不可高速缓存事务的示例的框图。图37可以是用于将窥探数据通过存储器控制器传递给请求方的4跨链协议的示例。非一致代理被列为NCA0,一致代理是作为CA1,并且与高速缓存块相关联的存储器控制器被列为MC。NCA0、CA1和MC的垂直线150、152和154示出对应于事务的各种消息的源(箭头的根部)和消息的目的地(箭头的头部)。时间在图37中从顶部至底部推进。
在对应于图37顶部的时间,一致代理CA1具有处于独占状态(E)的高速缓存块。NCA0向MC发出不可高速缓存的读取请求(NCRd)(箭头156)。MC根据目录26确定CA1具有包含由NCRd请求的数据的处于独占状态的高速缓存块,并且生成对CA1的窥探退回请求(SnpBkI(E))(箭头158)。CA1向MC提供具有高速缓存块数据的副本退回窥探响应(CpBkSR)(箭头160)。如果数据被修改,则MC可利用数据更新存储器,并且可在不可高速缓存读取响应(NCRdRsp)中将针对不可高速缓存读取请求的数据提供给NCA0(箭头162),从而完成请求。在一个实施方案中,可存在多于一种类型的NCRd请求:使窥探一致代理中的高速缓存块失效的请求和允许窥探一致代理保持高速缓存块的请求。上述讨论说明了失效。在其他情况下,窥探代理可将高速缓存块保持处于相同状态。
可以类似方式执行不可高速缓存写入请求,从而使用窥探退回请求来获得高速缓存块并且在将高速缓存块写入到存储器之前利用不可高速缓存写入数据修改高速缓存块。仍可提供不可高速缓存写入响应以向不可高速缓存代理(图37中的NCA0)通知写入完成。
图38是示出存储器控制器C22A-C22m(并且更具体地,在一个实施方案中,存储器控制器C22A-C22m中的一致性控制器24)的一个实施方案响应于请求的操作的流程图,其示出可高速缓存和不可高速缓存操作。图38中示出的操作可以是例如图32中示出的操作的一部分的更详细说明。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致性控制器C24中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致性控制器C24可被配置为实现图38中示出的操作。
一致性控制器C24可被配置为基于请求中的地址读取目录。如果请求是目录命中(决策框C170,“是”分支),则高速缓存块存在于一致代理C14A-C14n中的一个或多个高速缓存中。如果请求是不可高速缓存的(决策框C172,“是”分支),则一致性控制器C24可被配置为向负责提供高速缓存块副本的一致代理C14A-C14n发出窥探退回请求(以及如果适用的话向共享代理发出窥探失效请求(退回变体),框C174)。一致性控制器C24可被配置为更新目录以反映窥探完成(例如,使一致代理C14A-C14n中的高速缓存块失效,框C176)。一致性控制器C24可被配置为等待副本退回窥探响应(决策框C178,“是”分支)以及来自共享一致代理C14A-C14n的任何Ack窥探响应,并且可被配置为生成到请求代理的不可高速缓存完成(视情况为NCRdRsp或NCWrRsp)(框C180)。如果高速缓存块被修改,则数据也可由存储器控制器C22A-C22m写入到存储器。
如果请求是可高速缓存的(决策框C172,“否”分支),则一致性控制器C24可被配置为生成对负责转发高速缓存块的一致代理C14A-C14n的窥探转发请求(框C182),以及如果需要的话生成对其他高速缓存一致代理C14A-C14n的其他窥探。一致性控制器C24可更新目录C24以反映事务的完成(框C184)。
如果请求在目录C26中未命中(决策框C170,“否”分支),则在一致代理C14A-C14n中不存在高速缓存块的所高速缓存副本。在这种情况下,可不生成窥探,并且存储器控制器C22A-C22m可被配置为生成填充完成(对于可高速缓存请求)或不可高速缓存完成(对于不可高速缓存请求)以提供数据或完成请求(框C186)。在可高速缓存请求的情况下,一致性控制器C24可更新目录C26以针对高速缓存块创建条目,并且可将请求一致代理C14A-C14n初始化为具有由一致代理C14A-C14n请求的处于高速缓存状态的高速缓存块的副本(框C188)。
图39是示出可在一致代理C14A-C14n的一个实施方案中实现的示例性高速缓存状态的表C190。其他实施方案可采用不同的高速缓存状态、示出的高速缓存状态和其他高速缓存状态的子集、示出的高速缓存状态和其他高速缓存状态的超集等。修改状态(M)或“脏独占”状态可以是仅具有高速缓存块的所高速缓存副本(该副本是独占的)的一致代理C14A-C14n中的状态,并且所高速缓存副本中的数据已经相对于存储器中的对应数据被修改(例如,数据的至少一个字节不同于存储器中的对应字节)。所修改数据也可称为脏数据。拥有状态(O)或“脏共享”状态可以是具有高速缓存块的所修改副本但可与至少一个其他一致代理C14A-C14n共享副本的一致代理C14A-C14n中的状态(尽管其他一致代理C14A-C14n随后可以将共享高速缓存块逐出)。另一个一致代理C14A-C14n将具有处于二级共享状态的高速缓存块。独占状态(E)或“干净独占”状态可以是仅具有高速缓存块的所高速缓存副本但所高速缓存副本具有的数据与存储器中的对应数据相同的一致代理C14A-C14n中的状态。独占无数据(EnD)状态或“干净独占,无数据”状态可以是一致代理C14A-C14n中的类似于独占(E)状态,只是高速缓存块数据并未被递送到一致代理的状态。这种状态可在其中一致代理C14A-C14n将修改高速缓存块中的每个字节的情况下使用,并且因此在高速缓存块中供应先前数据可能没有益处或一致性方面的原因。EnD状态可以是用于减少互连件C28上的流量的优化,并且可不在其他实施方案中实现。一级共享(P)状态或“干净共享一级”状态可以是具有高速缓存块的共享副本但也负责基于窥探转发请求将高速缓存块转发到另一个一致代理的一致代理C14A-C14n中的状态。二级共享(S)状态或“干净共享二级”状态可以是具有高速缓存块的共享副本但在另一个一致代理C14A-C14n具有处于一级共享状态的高速缓存块的情况下不负责提供高速缓存块的一致代理C14A-C14n中的状态。在一些实施方案中,如果没有一致代理C14A-C14n具有处于一级共享状态的高速缓存块,则一致性控制器C24可选择二级共享代理以提供高速缓存块(并且可向所选择的一致代理发送窥探转发请求)。在其他实施方案中,如果不存在处于一级共享状态的一致代理C14A-C14n,则一致性控制器C24可致使存储器控制器C22A-C22m向请求方提供高速缓存块。失效状态(I)可以是不具有高速缓存块的所高速缓存副本的一致代理C14A-C14n中的状态。处于失效状态的一致代理C14A-C14n可先前不具有请求副本,或者可具有任何副本并且基于窥探或基于高速缓存块的逐出使副本失效以高速缓存不同的高速缓存块。
图40是示出可在可扩展高速缓存一致性协议的一个实施方案中使用的各种消息的表C192。可在其他实施方案中存在另选消息、所示出消息和附加消息的子集、所示出消息和附加消息的超集等。这些消息可携载链接来自相同事务的消息(例如,初始请求、窥探、完成)的事务标识符。初始请求和窥探可携载受事务影响的高速缓存块的地址。一些其他消息也可携载地址。在一些实施方案中,所有消息可携载地址。
可高速缓存读取事务可利用可高速缓存读取请求消息(CRd)发起。可存在CRd请求的各种版本以请求不同的高速缓存状态。例如,CRdEx可请求独占状态,CRdS可请求二级共享状态等。响应于可高速缓存读取请求而实际提供的高速缓存状态可至少与请求状态一样具许可性,并且可更具许可性。例如,CRdEx可接收处于独占或修改状态的高速缓存块。CRdS可接收处于一级共享、独占、拥有或修改状态的块。在一个实施方案中,可实现机会性CRd请求,并且可授予(不使高速缓存块的其他副本失效的)可能的最具许可性状态(例如,在没有其他一致代理具有所高速缓存副本的情况下为独占,在存在所高速缓存副本的情况下为拥有或一级共享,等等)。
改变为独占(CtoE)消息可由具有处于不允许修改的状态(例如,拥有、一级共享、二级共享)的高速缓存块的副本的一致代理使用,并且一致代理正尝试修改高速缓存块(例如,一致代理需要独占访问来将高速缓存块改变为修改)。在一个实施方案中,条件CtoE消息可用于存储条件指令。存储条件指令是加载保留/存储条件对的一部分,在该对中,加载获得高速缓存块的副本并且针对该高速缓存块设置保留。一致代理C14A-C14n可监视其他代理对高速缓存块的访问,并且可基于高速缓存块是否尚未被加载与存储之间的另一个一致代理C14A-C14n修改条件地执行存储(如果高速缓存块尚未被修改,则成功地存储,如果高速缓存块已经被修改,则不进行存储)。附加细节在下文提供。
在一个实施方案中,当一致代理C14A-C14n将修改整个高速缓存块时,可使用高速缓存读取独占、仅数据(CRdE-Donly)消息。如果高速缓存块在另一个一致代理C14A-C14n中未被修改,则请求一致代理C14A-C14n可使用EnD高速缓存状态并修改块的所有字节,而无需将高速缓存块中的先前数据传送给代理。如果高速缓存块被修改,则可将所修改高速缓存块传送到请求一致代理C14A-C14n,并且请求一致代理C14A-C14n可使用M高速缓存状态。
不可高速缓存事务可利用不可高速缓存读取和不可高速缓存写入(NCRd和NCWr)消息发起。
如前所述,窥探转发和窥探退回(分别为SnpFwd和SnpBk)可用于窥探。可存在用于请求在处理窥探之后接收一致代理C14A-C14n中的各种状态(例如,失效或共享)的消息。还可存在针对CRdE Donly请求的窥探转发消息,该窥探转发消息请求在高速缓存块被修改的情况下转发,否则不转发,并且在接收方处失效。在一个实施方案中,还可存在在表C192中示出为SnpInvFw和SnpInvBk的仅失效窥探转发请求和窥探退回请求(例如,致使接收方失效并分别向请求方或存储器控制器确认而无需返回数据的窥探)。
完成消息可包括填充消息(Fill)和确认消息(Ack)。填充消息可指定请求方在完成时将呈现的高速缓存块的状态。可高速缓存写回(CWB)消息可用于将高速缓存块发射到存储器控制器C22A-C22m(例如,基于将高速缓存块从高速缓存逐出)。副本退回窥探响应(CpBkSR)可用于将高速缓存块发射到存储器控制器C22A-C22m(例如,基于窥探退回消息)。不可高速缓存写入完成(NCWrRsp)和不可高速缓存读取完成(NCRdRsp)可用于完成不可高速缓存请求。
图41是示出一致性控制器C24的一个实施方案基于接收到条件改变为独占(CtoECond)消息的操作的流程图。例如,在一个实施方案中,图41可以是图32中的框C70的一部分的更详细描述。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致性控制器C24中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致性控制器C24可被配置为实现图41中示出的操作。
CtoECond消息可由一致代理C14A-C14n(“源”)基于存储条件指令的执行发出。如果源在存储条件指令之前丢失高速缓存块的副本(例如,副本不再有效),则存储条件指令可在源中本地失败。如果源仍具有(例如处于二级或一级共享状态,或拥有状态的)有效副本,则当执行存储条件指令时,仍可能的是另一个事务将被排序在来自源的改变为独占消息之前,该改变为独占消息致使源使其所高速缓存副本失效。使所高速缓存副本失效的相同事务也将致使存储条件指令在源中失败。为了避免高速缓存块失效以及将高速缓存块传送到存储条件指令将失败的源,CtoECond消息可由源提供并使用。
CtoECond消息可被定义为当该CtoECond消息被一致性控制器C24排序时具有至少两个可能的结果。如果在排序并处理CtoECond消息时源仍具有如目录C26中所指示的高速缓存块的有效副本,则CtoECond可类似于非条件CtoE消息进行:发出窥探并获得高速缓存块的独占状态。如果源不具有高速缓存块的有效副本,则一致性控制器C24可使CtoE事务失败,从而利用CtoE失败的指示将Ack完成返回到源。源可基于Ack完成终止CtoE事务。
如图41所示,一致性控制器C24可被配置为读取地址的目录条目(框C194)。如果源保持(例如处于共享状态的)高速缓存块的有效副本(决策框C196,“是”分支),则一致性控制器C24可被配置为基于目录条目中的高速缓存状态生成窥探(例如,用于使高速缓存块失效,使得源可改变为独占状态的窥探)(框C198)。如果源未保持高速缓存块的有效副本(决策框C196,“否”分支),则高速缓存控制器C24可被配置为将确认完成发射到源,从而指示CtoECond消息失败(框C200)。CtoE事务因此可终止。
现在转向图42,示出了例示一致性控制器C24的一个实施方案读取目录条目并确定窥探的操作的流程图(例如,在一个实施方案中,图32中的框C70的至少一部分)。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致性控制器C24中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致性控制器C24可被配置为实现图42中示出的操作。
如图42所示,一致性控制器C24可被配置为读取请求的地址的目录条目(框C202)。基于目录条目中的高速缓存状态,一致性控制器C24可被配置为生成窥探。例如,基于代理中的一个代理中的高速缓存状态至少是一级共享(决策框C204,“是”分支),一致性控制器C24可被配置为将SnpFwd窥探发射到该一级共享代理,从而指示一级共享代理将把高速缓存块发射到请求代理。对于(例如处于二级共享状态的)其他代理,一致性控制器C24可被配置为生成仅失效窥探(SnpInv),该SnpInv指示其他代理将不把高速缓存块发射到请求代理(框C206)。在一些情况下(例如,请求高速缓存块的共享副本的CRdS请求),其他代理不需要接收窥探,因为这些其他代理不需要改变状态。如果高速缓存状态是至少与一级共享一样具许可性的高速缓存状态(例如,图39的实施方案中的一级共享、拥有、独占或修改),则代理可具有作为至少一级共享的高速缓存状态。
如果没有代理具有作为至少一级共享的高速缓存状态(决策框C204,“否”分支),则一致性控制器C24可被配置为确定一个或多个代理是否具有处于二级共享状态的高速缓存块(决策框C208)。如果是(决策框C208,“是”分支),则一致性控制器C24可被配置为选择代理中具有二级共享状态的一个代理并且可将SnpFwd请求指令发射到所选择代理以便将高速缓存块转发到请求代理。一致性控制器C24可被配置为针对处于二级共享状态的其他代理生成SnpInv请求,这些SnpInv请求指示其他代理将不把高速缓存块发射到请求代理(框C210)。如上所述,如果其他代理不需要改变状态,则可不生成并发射SnpInv消息。
如果没有代理具有处于二级共享的高速缓存状态(决策框C208,“否”分支),则一致性控制器C24可被配置为生成填充完成并且可被配置为致使存储器控制器读取高速缓存块以用于发射到请求代理(框C212)。
图43是示出一致性控制器C24的一个实施方案响应于CRdE-Donly请求而读取目录条目并确定窥探的操作的流程图(例如,在一个实施方案中,图32中的框C70的至少一部分)。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致性控制器C24中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致性控制器C24可被配置为实现图43中示出的操作。
如上所述,CRdE-Donly请求可由要修改高速缓存块中的所有字节的一致代理C14A-C14n使用。因此,一致性控制器C24可致使其他代理使高速缓存块失效。如果代理修改了高速缓存块,则代理可将所修改高速缓存块供应给请求代理。否则,代理可不供应高速缓存块。
一致性控制器C24可被配置为读取请求的地址的目录条目(框C220)。基于目录条目中的高速缓存状态,一致性控制器C24可被配置为生成窥探。更具体地,如果给定代理可具有高速缓存块的所修改副本(例如,给定代理具有处于独占或一级状态的高速缓存块)(框C222,“是”分支),则高速缓存控制器C24可生成对代理的窥探转发-仅脏(SnpFwdDonly)以将高速缓存块发射到请求代理(框C224)。如上所述,SnpFwdDonly请求可致使接收代理在数据被修改的情况下发射高速缓存块,否则不发射高速缓存块。在任一情况下,接收代理可使高速缓存块失效。如果数据被修改并且提供所修改高速缓存块,则接收代理可发射填充完成。否则,接收代理可发射Ack完成。如果没有代理具有所修改副本(决策框C222,“否”分支),则一致性控制器C24可被配置为针对具有高速缓存块的所高速缓存副本的每个代理生成窥探失效(SnpInv)(框C226)。在另一个实施方案中,即使高速缓存块被修改,一致性控制器C24也可请求不转发数据,因为请求方要修改整个高速缓存块。即,一致性控制器C24可致使具有所修改副本的代理在不转发数据的情况下使数据失效。
基于本公开,一种系统可包括:多个一致代理,其中该多个一致代理中的给定代理包括用于高速缓存存储器数据的一个或多个高速缓存。该系统还可包括:存储器控制器,该存储器控制器耦接到一个或多个存储器设备,其中该存储器控制器包括目录,该目录被配置为跟踪该多个一致代理中的哪个一致代理正在高速缓存这些存储器设备中的多个高速缓存块的副本以及该多个一致代理中的所高速缓存副本的状态。其中基于该多个一致代理中的第一代理针对第一高速缓存块的第一请求,该存储器控制器可被配置为:从该目录读取对应于该第一高速缓存块的条目,根据该条目向该多个一致代理中的具有该第一高速缓存块的所高速缓存副本的第二代理发出窥探,并且将该第二代理中的该第一高速缓存块的第一状态的标识符包括在该窥探中。基于该窥探,该第二代理可被配置为:将该第一状态与该第二代理中的该第一高速缓存块的第二状态进行比较,并且基于该第一状态与该第二状态不匹配延迟对该窥探的处理,直到该第二状态响应于与不同于该第一请求的请求有关的不同通信而改变为该第一状态为止。在一个实施方案中,该存储器控制器可被配置为:确定指示该第一代理将针对该第一请求将接收的完成的数量的完成计数,其中该确定是基于来自该条目的这些状态;并且将该完成计数包括在基于该第一请求发出的多个窥探中,包括向该第二代理发出的该窥探。该第一代理被可配置为:基于从该多个一致代理中的一个一致代理接收到初始完成利用该完成计数来初始化完成计数器,基于从该多个一致代理中的另一个一致代理接收到后续完成更新该完成计数器,并且基于该完成计数器完成第一请求。在一个实施方案中,该存储器控制器可被配置为:基于根据该第一请求发出多个窥探更新该目录的该条目中的这些状态以反映该第一请求的完成。在一个实施方案中,该第一代理可被配置为:检测由该第一代理接收的对该第一高速缓存块的第二窥探,其中该第一代理可被配置为:将该第二窥探并吞到该第一请求中。在一个实施方案中,该第一代理可被配置为:在完成该第一请求之后处理该第二窥探。在一个实施方案中,该第一代理可被配置为:在完成该第一请求之后将该第一高速缓存块转发到在该第二窥探中指示的第三代理。在一个实施方案中,第三代理可被配置为基于存储条件指令生成对在该第三代理处处于有效状态的第二高速缓存块的条件改变为独占状态请求。该存储器控制器可被配置为:基于该目录中的与该第二高速缓存块相关联的第二条目确定该第三代理是否保持该第二高速缓存块的有效副本,并且该存储器控制器可被配置为:将指示失败的完成发射到该第三代理,并且基于确定该第三代理不再保持该第二高速缓存块的该有效副本终止该条件改变为独占请求。在一个实施方案中,该存储器控制器可被配置为:基于确定该第三代理保持该第二高速缓存块的该有效副本向该多个一致代理中的如由该第二条目指示的其他一致代理发出一个或多个窥探。在一个实施方案中,该窥探指示该第二代理将基于该第一状态是一级共享而将该第一高速缓存块发射到该第一代理,并且其中该窥探指示该第二代理将基于该第一状态是二级共享而不发射该第一高速缓存块。在一个实施方案中,该窥探指示该第二代理将发射该第一高速缓存块,即使在该第一状态是二级共享的情况下。
在另一个实施方案中,一种系统包括:多个一致代理,其中该多个一致代理中的给定代理包括用于高速缓存存储器数据的一个或多个高速缓存。该系统还包括:存储器控制器,该存储器控制器耦接到一个或多个存储器设备。该存储器控制器包括目录,该目录被配置为跟踪该多个一致代理中的哪个一致代理正在高速缓存该存储器设备中的多个高速缓存块的副本以及该多个一致代理中的所高速缓存副本的状态。基于该多个一致代理中的第一代理针对第一高速缓存块的第一请求,该存储器控制器可被配置为:从该目录读取对应于该第一高速缓存块的条目,并且根据该条目向该多个一致代理中的具有该第一高速缓存块的所高速缓存副本的第二代理发出窥探。该窥探可指示该第二代理将基于该条目指示该第二代理具有处于至少一级共享状态的该第一高速缓存块而将该第一高速缓存块发射到该第一代理。该窥探指示该第二代理将基于不同代理具有处于至少该一级共享状态的该第一高速缓存块而不将该第一高速缓存块发射到该第一代理。在一个实施方案中,如果该不同代理处于该一级共享状态,则该第一代理处于该第一高速缓存块的二级共享状态。在一个实施方案中,该窥探指示该第一代理将基于该不同代理具有处于至少该一级共享状态的该第一高速缓存块而使该第一高速缓存块失效。在一个实施方案中,该存储器控制器被配置为:基于该不同代理具有处于该一级共享状态的该第一高速缓存块以及该第一请求是针对该第一高速缓存块的共享副本的请求,不向该第二代理发出窥探。在一个实施方案中,该第一请求可针对该第一高速缓存块的独占状态,并且该第一代理要修改整个该第一高速缓存块。该窥探可指示如果该第一高速缓存块在该第二代理中处于修改状态,则该第二代理将发射该第一高速缓存块。在一个实施方案中,该窥探指示如果该第一高速缓存块在该第二代理中并不处于修改状态,则该第二代理将使该第一高速缓存块失效。
在另一个实施方案中,一种系统包括:多个一致代理,其中该多个一致代理中的给定代理包括用于高速缓存存储器数据的一个或多个高速缓存。该系统还包括:存储器控制器,该存储器控制器耦接到一个或多个存储器设备。该存储器控制器包括目录,该目录被配置为跟踪该多个一致代理中的哪个一致代理正在高速缓存该存储器设备中的多个高速缓存块的副本以及该多个一致代理中的所高速缓存副本的状态。基于针对第一高速缓存块的第一请求,该存储器控制器可被配置为:从该目录读取对应于该第一高速缓存块的条目,并且根据该条目向该多个一致代理中的具有该第一高速缓存块的所高速缓存副本的第二代理发出窥探。该窥探可指示该第二代理将基于与该第一请求相关联的属性具有第一值而将该第一高速缓存块发射到该第一请求的源,并且该窥探指示该第二代理将基于该属性具有第二值而将该第一高速缓存块发射到该存储器控制器。在一个实施方案中,该属性是请求的类型,该第一值是能高速缓存的,并且该第二值是不能高速缓存的。在另一个实施方案中,该属性是该第一请求的源。在一个实施方案中,该存储器控制器可被配置为:基于从该第二代理接收到该第一高速缓存块对该第一请求的该源作出响应。在一个实施方案中,该存储器控制器被配置为:基于根据该第一请求发出多个窥探更新该目录的该条目中的这些状态以反映该第一请求的完成。
IOA
图44至图48示出了可在SOC的各种实施方案中采用的输入/输出代理(IOA)的各种实施方案。IOA可插置在给定外围设备与互连结构之间。IOA代理可被配置为执行互连结构关于给定外围设备的一致性协议。在一个实施方案中,IOA确保使用一致性协议对来自给定外围设备的请求进行排序。在一个实施方案中,IOA被配置为将两个或更多个外围设备的网络耦接到互连结构。
在许多实例中,计算机系统实现数据/高速缓存一致性协议,其中在计算机系统内确保数据的一致视图。因此,对共享数据的改变通常以及时的方式贯穿计算机系统传播以便确保一致视图。计算机系统通常还包括外围设备诸如输入/输出(I/O)设备或与这些外围设备接口连接。然而,这些外围设备未被配置为理解或高效使用由计算机系统实现的高速缓存一致性模型。例如,外围设备常常为它们的事务使用比高速缓存一致性模型更严格的具体次序规则(下面进一步讨论)。许多外围设备也不具有高速缓存—也就是说,它们不是可高速缓存的设备。因此,外围设备可能花费相当长的时间来接收对它们的事务的完成确认,因为它们没有在本地高速缓存中完成。本公开尤其解决了与外围设备不能恰当地使用高速缓存一致性模型并且不具有高速缓存有关的这些技术问题。
本公开描述了用于实现I/O代理的各种技术,该I/O代理被配置为将外围设备桥接到一致结构并且实现用于处理与那些I/O设备相关联的事务的一致性机制。在下面描述的各种实施方案中,片上系统(SOC)包括存储器、存储器控制器和耦接到外围设备的I/O代理。I/O代理被配置为从以指定存储器地址为目标的外围设备接收读取事务请求和写入事务请求,这些指定存储器地址的数据可被存储在SOC的高速缓存行中。(高速缓存行也可被称为高速缓存块。)在各种实施方案中,外围设备的具体排序规则强制顺序地完成读取/写入事务(例如,相对于它们被接收的次序不是无序的)。因此,在一个实施方案中,I/O代理被配置为根据它们的执行次序在发起下一个发生的读取/写入事务之前完成读取/写入事务。但是为了以更高性能的方式执行那些事务,在各种实施方案中,I/O代理被配置为获得作为目标的高速缓存行的独占所有权,使得那些高速缓存行的数据不以有效状态高速缓存在SOC的其他高速缓存代理(例如,处理器内核)中。代替I/O代理在对第二事务进行工作之前等待第一事务完成,I/O代理可先行地获得第二事务作为目标的高速缓存行的独占所有权。作为获得独占所有权的一部分,在各种实施方案中,I/O代理接收那些高速缓存行的数据并且将该数据存储在I/O代理的本地高速缓存内。当第一事务完成时,I/O代理随后可在其本地高速缓存中完成第二事务,而不必发出对那些高速缓存行的数据的请求并且等待数据被返回。如下面更详细地讨论的,I/O代理可根据相关联事务的类型来获得独占读取所有权或独占写入所有权。
在一些情况下,在I/O代理已执行对应事务之前,I/O代理可能失去高速缓存行的独占所有权。例如,I/O代理可接收致使I/O代理放弃高速缓存行的独占所有权的窥探,包括致使存储在I/O代理处的高速缓存行的数据无效。如本文所用的“窥探”或“窥探请求”是指被传输到部件以请求高速缓存行的状态改变(例如,使存储在该部件的高速缓存内的高速缓存行的数据无效)的消息,并且如果该部件具有高速缓存行的排他性副本或以其他方式负责该高速缓存行,则该消息还可请求由该部件提供高速缓存行。在各种实施方案中,如果存在被定向到高速缓存行的阈值数量的剩余未处理事务,则I/O代理可重新获取高速缓存行的独占所有权。例如,如果存在以高速缓存行为目标的三个未处理的写入事务,则I/O代理可重新获取该高速缓存行的独占所有权。这可防止以特定高速缓存行为目标的剩余事务的不合理缓慢的串行化。在各种实施方案中,可使用更大或更小数量的未处理事务作为阈值。
这些技术可优于先前方法,因为这些技术允许保持外围设备的次序规则,同时通过实现一致性机制而部分或完全消除那些次序规则的负面效应。特别地,根据次序规则以特定次序执行事务的范例,其中在开始下一个发生的事务的工作之前完成事务可能是不合理地缓慢的。作为示例,将高速缓存行的数据读取到高速缓存中可花费超过500个时钟周期来发生。由此,如果下一个发生的事务直到先前事务完成才开始,则每个事务将花费至少500个时钟周期来完成,从而导致大量时钟周期被用于处理一组事务。通过如本公开中所公开的先行地获得相关高速缓存行的独占所有权,可避免用于每个事务的大量时钟周期。例如,当I/O代理正在处理一组事务时,I/O代理可在第一事务完成之前先行地开始高速缓存数据。因此,第二事务的数据可被高速缓存并且在第一事务完成时可用,使得I/O代理接着能够在其后不久完成第二事务。由此,事务的一部分可能不会各自花费例如超过500个时钟周期来完成。现在将从参考图44开始讨论这些技术的示例性应用。
现在转向图44,示出了示例性片上系统(SOC)D100的框图。在一个实施方案中,SOCD100可以是图1所示的SOC 10的实施方案。顾名思义,SOC D100的部件被集成到单个半导体基板上作为集成电路“芯片”。但在一些实施方案中,这些部件在计算系统中的两个或更多个离散芯片上实现。在例示的实施方案中,SOC D100包括高速缓存代理D110、分别耦接到存储器DD130A和130B的存储器控制器D120A和D120B以及输入/输出(I/O)集群D140。部件D110、D120和D140通过互连件D105耦接在一起。同样如图所示,高速缓存代理D110包括处理器D112和高速缓存D114,而I/O集群D140包括I/O代理D142和外围设备D144。在各种实施方案中,SOC D100以与所示不同的方式实现。例如,SOC D100可包括显示控制器、功率管理电路等,并且存储器D130A和D130B可包括在SOC D100上。作为另一示例,I/O集群D140可具有多个外围设备D144,该多个外围设备中的一个或多个外围设备可在SOC D100外部。因此,需注意,SOC D100的部件的数量(以及还有子部件的数量)可在实施方案之间变化。每个部件/子部件的数量可多于或少于图44所示的数量。
在各种实施方案中,高速缓存代理D110是包括用于高速缓存存储器数据的高速缓存或者可以其他方式控制高速缓存行并且潜在地在本地更新那些高速缓存行的数据的任何电路系统。高速缓存代理D110可参与高速缓存一致性协议以确保由一个高速缓存代理D110做出的对数据的更新对于随后读取该数据的其他高速缓存代理D110是可见的,并且由两个或更多个高速缓存代理D110以特定次序做出的更新(如在SOC D100诸如存储器控制器D120A-D120B内的排序点处确定的)被高速缓存代理D110以该次序观察到。高速缓存代理D110可包括例如处理单元(例如,CPU、GPU等)、固定功能电路系统、以及具有经由嵌入式处理器(或多个处理器)的处理器辅助的固定功能电路系统。由于I/O代理D142包括一组高速缓存,因此I/O代理D142可被认为是一种类型的高速缓存代理D110。但I/O代理D142与其他高速缓存代理D110不同,这至少是因为I/O代理D142充当有高速缓存能力的实体,该实体被配置为针对不具有它们自己的高速缓存的其他单独实体(例如,外围设备诸如显示器、连接USB的设备等)高速缓存数据。除此之外,I/O代理D142可临时高速缓存相对少量的高速缓存行以改善外围设备存储器访问时延,但一旦事务完成就可主动地引退高速缓存行。
在例示的实施方案中,高速缓存代理D110是具有可充当SOC D100的CPU的处理器D112的处理单元。在各种实施方案中,处理器D112包括被配置为执行由该处理器D112实现的指令集架构中所定义的指令的任何电路系统和/或微码。处理器D112可包括在具有SOCD100的其他部件的集成电路上实现的一个或多个处理器内核。处理器D112的那些单独处理器内核可共享公共末级高速缓存(例如,L2高速缓存),同时包括它们自己的用于存储数据和程序指令的相应高速缓存(例如,L0高速缓存和/或L1高速缓存)。处理器D112可执行系统的主控制软件,诸如操作系统。通常,由CPU执行的软件控制系统的其他部件,以实现系统的期望功能。处理器D112可进一步执行其他软件,诸如应用程序,并且因此可被称为应用处理器。高速缓存代理D110还可包括被配置为将高速缓存代理D110接口连接到SOC D100的其他部件(例如,到互连件D105的接口)的硬件。
在各种实施方案中,高速缓存D114是包括被配置为存储数据或程序指令的条目的存储阵列。由此,高速缓存D114可以是数据高速缓存或指令高速缓存,或共享指令/数据高速缓存。高速缓存D114可以是关联存储阵列(例如,完全关联或组关联,诸如4路组关联高速缓存)或直接映射存储阵列,并且可具有任何存储容量。在各种实施方案中,高速缓存行(或另选地,“高速缓存块”)是高速缓存DD114内的分配和解除分配的单元,并且可具有任何期望的大小(例如,32字节、64字节、128字节等)。在高速缓存代理DD110的操作期间,信息可从系统的其他部件被拉取到高速缓存D114中并且由处理器D112的处理器内核使用。例如,当处理器内核前进通过执行路径时,处理器内核可致使程序指令从存储器D130A-D130B被提取到高速缓存D114中,然后处理器内核可从高速缓存D114提取这些程序指令并加以执行。而且,在高速缓存代理D110的操作期间,可通过存储器控制器D120A-D120B将信息从高速缓存D114写入存储器(例如,存储器D130A-D130B)。
在各种实施方案中,存储器控制器D120包括被配置为从SOC D100的其他部件接收存储器请求(例如,加载/存储请求、指令提取请求等)以执行存储器操作(诸如,从存储器D130访问数据)的电路系统。存储器控制器D120可被配置为访问任何类型的存储器D130。存储器D130可使用各种不同的物理存储器介质来实现,诸如硬盘存储装置、软盘存储装置、可移动磁盘存储装置、闪存存储器、随机存取存储器(RAM-SRAM、EDO RAM、SDRAM、DDR SDRAM、RAMBUS RAM等)、只读存储器(PROM、EEPROM等)等。然而,SOC D100可用的存储器不限于主存储装置诸如存储器D130。相反,SOC D100还可包括其他形式的存储装置,诸如高速缓存代理D110中的高速缓存存储器(例如,L1高速缓存、L2高速缓存等)。在一些实施方案中,存储器控制器D120包括用于存储和排序要被呈现给存储器D130的存储器操作的队列。存储器控制器D120还可包括用于存储等待写入存储器D130的写入数据和等待返回给存储器操作来源的读取数据的数据缓冲区,诸如高速缓存代理D110。
如关于图45更详细地讨论的,存储器控制器D120可包括用于维持SOC D100内的高速缓存一致性的各种部件,包括跟踪高速缓存行的数据在SOC D100内的位置的部件。由此,在各种实施方案中,对高速缓存行数据的请求被路由通过存储器控制器D120,这些存储器控制器可从其他高速缓存代理D110和/或存储器D130A-D130B访问数据。除了访问数据之外,存储器控制器D120还可致使向将数据存储在它们的本地高速缓存内的高速缓存代理D110和I/O代理DD142发出窥探请求。因此,存储器控制器120可致使那些高速缓存代理D110和I/O代理D142无效和/或从它们的高速缓存中逐出数据以确保系统内的一致性。因此,在各种实施方案中,存储器控制器D120处理独占高速缓存行所有权请求,其中存储器控制器D120授予高速缓存行的部件独占所有权,同时使用窥探请求以确保数据不被高速缓存在其他高速缓存代理D110和I/O代理D142中。
在各种实施方案中,I/O集群D140包括可提供附加硬件功能的一个或多个外围设备D144(或简称为外围设备D144)和I/O代理D142。外围设备D144可包括例如视频外围设备(例如,GPU、混合器、视频编码器/解码器、扩展器、显示控制器等)和音频外围设备(例如,麦克风、扬声器、到麦克风和扬声器的接口、数字信号处理器、音频处理器、混频器等)。外围设备D144可包括用于SOC D100外部的各种接口(例如,通用串行总线(USB)、外围部件互连(PCI)和PCI Express(PCIe)、串行和并行端口等)的接口控制器。到外部部件的互连由图44中延伸到SOC D100外部的虚线箭头示出。外围设备D144还可包括联网外围设备诸如介质访问控制器(MAC)。虽然未示出,但在各种实施方案中,SOC D100包括具有相应组外围设备D144的多个I/O集群D140。作为示例,SOC D100可包括具有外部显示外围设备D144的第一I/O集群D140、具有USB外围设备D144的第二I/O集群D140、以及具有视频编码器外围设备D144的第三I/O集群D140。这些I/O集群D140中的每个I/O集群可包括其自己的I/O代理D142。
在各种实施方案中,I/O代理D142包括被配置为将其外围设备D144桥接到互连件D105并且实现用于处理与那些外围设备D144相关联的事务的一致性机制的电路系统。如关于图45更详细地讨论的,I/O代理D142可从外围设备D144接收将数据读取和/或写入到与存储器D130A-D130B相关联的高速缓存行的事务请求。在各种实施方案中,响应于那些请求,I/O代理D142与存储器控制器D120通信以获得对目标高速缓存行的独占所有权。因此,存储器控制器D120可向I/O代理D142授予独占所有权,这可涉及向I/O代理D142提供高速缓存行数据并且向其他高速缓存代理D110和I/O代理D142发送窥探请求。在已获得高速缓存行的独占所有权之后,I/O代理D142可开始完成以高速缓存行为目标的事务。响应于完成事务,I/O代理D142可向请求外围设备D144发送事务已完成的确认。在一些实施方案中,I/O代理D142不获得对于不需要以指定次序完成的松弛有序请求的独占所有权。
在各种实施方案中,互连件D105是用于在SOC D100的部件之间通信的任何基于通信的互连件和/或协议。例如,互连件D105可使得高速缓存代理D110内的处理器D112能够与I/O集群D140内的外围设备D144交互。在各种实施方案中,互连件D105是基于总线的,包括共享总线配置、交叉开关配置和具有桥的分层总线。互连件D105可以是基于分组的,并且可以是具有桥的分层、交叉开关、点到点或其他互连件。
现在转向图45,示出了涉及高速缓存代理D110、存储器控制器D120、I/O代理D142和外围设备D144的交互的示例性元件的框图。在例示的实施方案中,存储器控制器120包括一致性控制器D210和目录D220。在一些情况下,所例示的实施方案可以与所示不同的方式实现。例如,可存在多个高速缓存代理D110、多个存储器控制器D120和/或多个I/O代理D142。
如所提到的,存储器控制器D120可维持SOC D100内的高速缓存一致性,包括跟踪高速缓存行在SOC D100中的位置。因此,在各种实施方案中,一致性控制器D210被配置为实现高速缓存一致性协议的存储器控制器部分。高速缓存一致性协议可指定可在高速缓存代理D110、I/O代理D142和存储器控制器D120(或一致性控制器D210)之间传输以便完成一致事务的消息或命令。那些消息可包括事务请求D205、窥探D225和窥探响应D227(或者另选地,“完成”)。在各种实施方案中,事务请求D205是发起事务并且指定所请求的高速缓存行/块(例如,以及该高速缓存行的地址)以及请求方将接收该高速缓存行所处的状态(或者最小状态,在各种情况下,可提供更具许可性状态)的消息。事务请求D205可以是请求方试图将数据写入高速缓存行的写入事务或请求方试图读取高速缓存行的数据的读取事务。例如,事务请求D205可指定非松弛有序动态随机存取存储器(DRAM)请求。在一些实施方案中,一致性控制器D210还被配置为向存储器D130发出存储器请求D222以代表SOC D100的部件从存储器D130访问数据并且接收可包括所请求数据的存储器响应D224。
如所描绘的,I/O代理D142从外围设备D144接收事务请求D205。I/O代理D142可从给定外围设备D144接收一系列写入事务请求D205、一系列读取事务请求D205、或读取事务请求和写入事务请求D205的组合。例如,在设定时间间隔内,I/O代理D142可从外围设备D144A接收四个读取事务请求D205并且从外围设备D144B接收三个写入事务请求D205。在各种实施方案中,从外围设备D144接收的事务请求D205必须以特定次序完成(例如,以从外围设备D144接收这些事务请求的次序完成)。在各种实施方案中,I/O代理D142通过先行地获得目标高速缓存行的独占所有权来对稍后的请求D205执行工作,而不是在开始对次序中的下一个事务请求D205进行工作之前一直等到事务请求D205完成。因此,I/O代理D142可向存储器控制器D120(具体地一致性控制器D210)发出独占所有权请求D215。在一些实例中,一组事务请求D205可以由不同存储器控制器D120管理的高速缓存行为目标,并且由此I/O代理D142可基于那些事务请求D205向适当的存储器控制器D120发出独占所有权请求D215。对于读取事务请求D205,I/O代理D142可获得独占读取所有权;对于写入事务请求D205,I/O代理D142可获得独占写入所有权。
在各种实施方案中,一致性控制器D210是被配置为从互连件D105(例如,经由包括在存储器控制器D120中的一个或多个队列)接收以映射到存储器控制器D120所耦接到的存储器D130的高速缓存行为目标的请求(例如,独占所有权请求D215)的电路系统。一致性控制器D210可处理那些请求并且生成具有所请求高速缓存行的数据的响应(例如,独占所有权响应D217),同时还维持SOC D100中的高速缓存一致性。为了维持高速缓存一致性,一致性控制器D210可使用目录D220。在各种实施方案中,目录D220是具有一组条目的存储阵列,每个条目可跟踪系统内的相应高速缓存行的一致性状态。在一些实施方案中,条目还跟踪高速缓存行的数据的位置。例如,目录D220的条目可指示特定高速缓存行的数据以有效状态被高速缓存在高速缓存代理D110的高速缓存D114中。(虽然讨论了独占所有权,但在一些情况下,出于读取目的,高速缓存行可在多个具有高速缓存能力的实体(例如,高速缓存代理D110)之间共享,并且因此可提供共享所有权。)为了提供高速缓存行的独占所有权,一致性控制器D210可确保高速缓存行不以有效状态存储在存储器D130和存储器控制器D120之外。因此,在各种实施方案中,基于与由独占所有权请求D215作为目标的高速缓存行相关联的目录条目,一致性控制器D210确定哪些部件(例如,高速缓存代理D110、I/O代理D142等)将接收窥探D225和窥探D225的类型(例如,无效、改变为拥有等)。例如,存储器控制器D120可确定高速缓存代理110存储由I/O代理D142请求的高速缓存行的数据,并且因此可向高速缓存代理D110发出窥探D225,如图45所示。在一些实施方案中,一致性控制器D210不以具体部件为目标,而是广播由SOC D100的许多部件观察到的窥探D225。
在各种实施方案中,可支持至少两种类型的窥探:窥探转发和窥探退回。窥探转发消息可用于致使部件(例如,高速缓存代理D110)将高速缓存行的数据转发到请求部件,而窥探退回消息可用于致使部件将高速缓存行的数据返回到存储器控制器D120。支持窥探转发流和窥探退回流可允许三跨链(窥探转发)行为和四跨链(窥探退回)行为两者。例如,窥探转发可用于在将高速缓存行提供给部件时最小化消息的数量,因为部件可存储高速缓存行并且潜在地使用其中的数据。另一方面,非可高速缓存部件可不存储整个高速缓存行,并且因此退回到存储器的副本可确保全高速缓存行数据被捕获在存储器控制器D120中。在各种实施方案中,高速缓存代理D110从存储器控制器D120接收窥探D225,处理该窥探D225以更新高速缓存行状态(例如,使高速缓存行无效),并且将高速缓存行的数据的副本(如果由窥探D225指定)提供回到初始所有权请求方或存储器控制器D120。在各种实施方案中,窥探响应D227(或“完成”)是指示已作出状态改变并且提供高速缓存行数据的副本(如果适用)的消息。当使用窥探转发机制时,通过互连件D105以三个跨链将数据提供给请求部件:从请求部件到存储器控制器D120的请求、从存储器控制器D120到高速缓存的窥探、以及高速缓存部件对请求部件的窥探响应。当使用窥探退回机制时,可发生四个跨链:如在三跨链协议中的请求和窥探,高速缓存部件对存储器控制器D120的窥探响应、以及从存储器控制器D120到请求部件的数据。
在一些实施方案中,一致性控制器D210可在生成并传输窥探D225时而非在接收到窥探响应D227时更新目录D220。一旦所请求高速缓存行已被存储器控制器D120回收,在各种实施方案中,一致性控制器D210就经由独占所有权响应D217向所有权请求方(例如,I/O代理D142)授予独占读取(或写入)所有权。独占所有权响应D217可包括所请求高速缓存行的数据。在各种实施方案中,一致性控制器D210更新目录D220以指示高速缓存行已被授予所有权请求方。
例如,I/O代理D142可从外围设备D144A接收一系列读取事务请求D205。对于那些请求中的给定请求,I/O代理D142可向存储器控制器D120发送针对与具体高速缓存行相关联的数据的独占读取所有权请求D215(或者如果高速缓存行由另一存储器控制器D120管理,则将独占读取所有权请求D215发送到该其他存储器控制器D120)。一致性控制器D210可基于目录D220的条目确定高速缓存代理D110当前以有效状态存储与具体高速缓存行相关联的数据。因此,一致性控制器D210向高速缓存代理D110发送窥探D225,该窥探致使高速缓存代理D110放弃该高速缓存行的所有权并且发回窥探响应D227,该窥探响应可包括高速缓存行数据。在接收到该窥探响应D227之后,一致性控制器D210可生成独占所有权响应D217,然后向I/O代理D142发送该独占所有权响应,从而向I/O代理D142提供高速缓存行数据以及高速缓存行的独占所有权。
在接收到高速缓存行的独占所有权之后,在各种实施方案中,I/O代理D142等待直到可完成对应事务为止(根据排序规则),也就是说,等待直到对应事务变成最高级事务并且存在针对该事务的排序依赖性解析为止。例如,I/O代理D142可从外围设备D144接收事务请求D205以执行写入事务A-D。I/O代理D142可获得与事务C相关联的高速缓存行的独占所有权;然而,事务A和B可能尚未完成。因此,在写入与事务C相关联的高速缓存行的相关数据之前,I/O代理D142等待直到事务A和B已完成为止。在完成给定事务之后,在各种实施方案中,I/O代理D142向事务请求方(例如,外围设备D144A)提供指示所请求的事务已被执行的事务响应D207。在各种情况下,I/O代理D142可获得高速缓存行的独占读取所有权,对高速缓存行执行一组读取事务,并且此后释放高速缓存行的独占读取所有权而不在保持独占读取所有权的同时执行对高速缓存行的写入。
在一些情况下,I/O代理D142可能接收以同一高速缓存行为目标的多个事务请求D205(在合理较短时间段内),并且因此I/O代理D142可执行批量读取和写入。作为示例,从外围设备D144A接收的两个写入事务请求D205可能分别以高速缓存行的下部部分和上部部分为目标。因此,I/O代理D142可获取高速缓存行的独占写入所有权并且保留与高速缓存行相关联的数据,直到写入事务中的至少两个写入事务已完成为止。因此,在各种实施方案中,I/O代理D142可在以同一高速缓存行为目标的事务之间转发执行所有权。也就是说,I/O代理D142不必为每个单独的事务请求D205发送所有权请求D215。在一些情况下,I/O代理D142可将执行所有权从读取事务转发到写入事务(或者反过来),但在其他情况下,I/O代理D142仅在相同类型的事务之间(例如,从读取事务到另一读取事务)转发执行所有权。
在一些情况下,在I/O代理D142已对高速缓存行执行相关事务之前,I/O代理D142可能失去高速缓存行的独占所有权。作为示例,在等待事务变为最高级以使得其可被执行时,作为另一I/O代理D142试图获得高速缓存行的独占所有权的结果,I/O代理D142可从存储器控制器D120接收窥探D225。在各种实施方案中,在放弃高速缓存行的独占所有权之后,I/O代理D142确定是否重新获取丢失的高速缓存行的所有权。如果丢失的高速缓存行与一个未决事务相关联,则在许多情况下,I/O代理D142不重新获取高速缓存行的独占所有权;然而,在一些情况下,如果未决事务落后于设定数量的事务(并且因此不将变成高级事务),则I/O代理D142可发出对高速缓存行的独占所有权请求D215。但在各种实施方案中,如果存在被定向到高速缓存行的阈值数量的未决事务(例如,两个未决事务),则I/O代理D142重新获取高速缓存行的独占所有权。
现在转向图46A,示出了I/O代理D142的与处理写入事务相关联的示例性元件的框图。在例示的实施方案中,I/O代理D142包括I/O代理控制器D310和一致性高速缓存D320。如图所示,一致性高速缓存D320包括所提取的数据高速缓存D322、所合并的数据高速缓存D324和新数据高速缓存D326。在一些实施方案中,I/O代理D142以与所示不同的方式实现。作为示例,I/O代理D142可不包括用于从存储器拉取的数据和待作为写入事务的一部分写入的数据的单独高速缓存。
在各种实施方案中,I/O代理控制器D310是被配置为接收和处理与耦接到I/O代理D142的外围设备D144相关联的事务的电路系统。在例示的实施方案中,I/O代理控制器D310从外围设备D144接收写入事务请求D205。写入事务请求D205指定目的地存储器地址并且可包括待写入的数据或对该数据的位置的标引。为了处理写入事务,在各种实施方案中,I/O代理D142使用高速缓存D320。在各种实施方案中,一致性高速缓存D320是包括被配置为存储数据或程序指令的条目的存储阵列。类似于高速缓存D114,一致性高速缓存D320可以是关联存储阵列(例如,完全关联或组关联,诸如4路关联高速缓存)或直接映射存储阵列,并且可具有任何存储容量和/或任何高速缓存行大小(例如,32字节、64字节等)。
在各种实施方案中,所提取的数据高速缓存D322用于存储响应于发出独占所有权请求D215而获得的数据。具体地,在从外围设备D144接收到写入事务请求D205之后,I/O代理D142可接着向管理存储在目的地/目标存储器地址处的数据的特定存储器控制器D120发出独占写入所有权请求D215。由该存储器控制器D120返回的数据由I/O代理控制器D310存储在所提取的数据高速缓存D322中,如图所示。在各种实施方案中,I/O代理D142将该数据与包括在写入事务请求D205中的数据分开存储,以便允许在排序解决方案之前窥探所提取的数据。因此,如图所示,I/O代理D142可接收致使I/O代理D142提供窥探响应D227的窥探D225,从而释放从特定存储器控制器D120接收的数据。
在各种实施方案中,新数据高速缓存D326用于存储包括在写入事务请求D205中的数据,直到解决了排序依赖性为止。一旦I/O代理D142已从特定存储器控制器D120接收到相关数据并且一旦写入事务已变为高级事务,I/O代理D142就可将来自所提取的数据高速缓存D322的相关数据与来自新数据高速缓存D326的对应写入数据合并。在各种实施方案中,所合并的数据高速缓存D324用于存储所合并的数据。在各种情况下,写入事务可以高速缓存行的一部分而非全部为目标。因此,所合并的数据可包括已被写入事务改变的部分和尚未被改变的部分。在一些情况下,I/O代理D142可接收一组写入事务请求D205,该组写入事务请求一起以高速缓存行的多个或所有部分为目标。由此,在处理该组写入事务时,可改变高速缓存行的大部分(或整个高速缓存行)。作为示例,I/O代理D142可处理四个写入事务请求D205,该四个写入事务请求各自以同一128位高速缓存行的不同32位部分为目标,因此用新数据替换整个行内容。在一些情况下,写入事务请求D205是全高速缓存行写入,并且因此针对该写入事务从所提取的数据高速缓存D322访问的数据由该一个写入事务请求D205完全替换。在各种实施方案中,一旦高速缓存行的整个内容已被替换或者I/O代理D142已完成以该高速缓存行为目标的所有相关写入事务,I/O代理D142就释放高速缓存行的独占写入所有权,然后可从一致性高速缓存D320逐出数据。
现在转向图46B,示出了I/O代理D142的与处理读取事务相关联的示例性元件的框图。在例示的实施方案中,I/O代理D142包括I/O代理控制器D310和所提取的数据高速缓存D322。在一些实施方案中,I/O代理D142以与所示不同的方式实现。
由于I/O代理D142不针对读取事务写入数据,因此在各种实施方案中,I/O代理D142不使用所合并的数据高速缓存D324和新数据高速缓存D326来处理读取事务,由此,在例示的实施方案中未示出这些高速缓存。因此,在接收到读取事务请求D205之后,I/O代理D142可向适当的存储器控制器D120发出独占读取所有权请求D215,并且接收回包括目标高速缓存行的数据的独占所有权响应D217。一旦I/O代理D142已接收到相关数据并且一旦读取事务已变为高级未决事务,I/O代理D142就可完成读取事务。在各种实施方案中,一旦已读取高速缓存行的整个内容或I/O代理D142已完成以该高速缓存行为目标的所有相关读取事务(因为不同读取事务可以该高速缓存行的不同部分为目标),I/O代理D142就释放高速缓存行的独占读取所有权,然后可从所提取的数据高速缓存D322逐出数据。
现在转向图47,示出了处理从外围设备D144接收的读取事务请求D205的示例。虽然该示例涉及读取事务请求D205,但以下论述也可应用于处理写入事务请求D205。如图所示,I/O代理D142从外围设备D144接收读取事务请求D205A,之后是读取事务请求D205B。响应于接收到事务请求D205A-D205B,I/O代理D142针对事务请求D205A向存储器控制器D120B发出独占读取所有权请求D215A,并且针对事务请求D205B,I/O代理D142向存储器控制器D120A发出独占读取所有权请求D215B。虽然在例示的实施方案中I/O代理D142与两个不同存储器控制器DD120通信,但在一些情况下,读取事务请求D205A-D205B可以由同一存储器控制器D120管理的高速缓存行为目标并且因此I/O代理D142可仅与该存储器控制器D120通信以完成读取事务请求D205A-D205B。
如进一步描绘的,针对事务请求D205B的目标高速缓存行,在存储器控制器D120A处发生目录未命中,从而指示目标高速缓存行的数据未以有效状态存储在存储器D130之外。存储器控制器D120A将独占读取所有权响应D217B返回到I/O代理D142,该独占读取所有权响应授予高速缓存行的独占读取所有权并且还可包括与该高速缓存行相关联的数据。同样如图所示,对于事务请求D205A的目标高速缓存行,在存储器控制器D120B处发生目录命中。存储器控制器D120B可基于其目录D220确定所例示的高速缓存代理D110高速缓存目标高速缓存行的数据。因此,存储器控制器D120B向该高速缓存代理D110发出窥探D225,并且接收窥探响应D227,该窥探响应可包括与目标高速缓存行相关联的数据。存储器控制器D120B将独占读取所有权响应D217A返回到I/O代理D142,该独占读取所有权响应授予目标高速缓存行的独占读取所有权并且还可包括与该高速缓存行相关联的数据。
如图所示,I/O代理D142在接收到独占读取所有权响应D217A之前接收到独占读取所有权响应D217B。在各种实施方案中,外围设备D144的事务次序规则强制事务请求D205A-D205B必须以特定次序(例如,它们被接收的次序)完成。因此,由于读取事务请求D205A在I/O代理D142接收到独占读取所有权响应D217B时尚未完成,因此在接收到响应D217B后,I/O代理D142保持推测的独占读取所有权但不完成对应读取事务请求D205B。一旦I/O代理D142接收到独占读取所有权响应D217A,I/O代理D142就可接着完成事务请求D205A并且向外围设备D144发出完成请求D205A。此后,I/O代理D142可完成事务请求D205B并且还向外围设备D144发出完成请求D205B。由于I/O代理D142先行地获得与读取事务请求D205B相关联的高速缓存行的独占读取所有权,因此I/O代理D142不必在完成读取事务请求D205A之后发出对该高速缓存行的请求(假设I/O代理D142尚未失去高速缓存行的所有权)。相反,I/O代理D142可在完成读取事务请求D205A之后相对快地完成读取事务请求D205B,并且因此不会招致与将该高速缓存行提取到I/O代理D142的一致性高速缓存D320中相关联的延迟(例如,500个时钟周期)的大部分或全部延迟。
现在转向图48,示出了方法500的流程图。方法500是由I/O代理电路(例如,I/O代理142)执行以便处理从外围部件(例如,外围设备144)接收的一组事务请求(例如,事务请求D205)的方法的一个实施方案。在一些实施方案中,方法500包括比所示更多或更少的步骤—例如,I/O代理电路可在处理该组事务请求之后从其高速缓存(例如,一致性高速缓存D330)逐出数据。
方法500开始于步骤D510,其中I/O代理电路从外围部件接收一组事务请求以执行被定向到多个高速缓存行中的一个或多个高速缓存行的一组读取事务(该组读取事务包括至少一个读取事务)。在一些情况下,I/O代理接收执行写入事务或者读取事务和写入事务的混合的请求。I/O代理可从多个外围部件接收那些事务请求。
在步骤520中,I/O代理电路向被配置为管理对多个高速缓存行中的第一高速缓存行的访问的第一存储器控制器电路(例如,存储器控制器D120)发出对第一高速缓存行的独占读取所有权的请求(例如,独占所有权请求D215),使得第一高速缓存行的数据不以有效状态高速缓存在存储器和I/O代理电路之外。对第一高速缓存行的独占读取所有权的请求可致使窥探请求(例如,窥探D225)发送到另一I/O代理电路(或高速缓存代理D110)以释放第一高速缓存行的独占读取所有权。
在步骤530中,I/O代理电路接收第一高速缓存行的排他性读取所有权,包括接收第一高速缓存行的数据。在一些实例中,I/O代理电路可接收被定向到第一高速缓存行的窥探请求,并且可接着在完成该组读取事务的执行之前释放第一高速缓存行的排他性读取所有权,包括使存储在I/O代理电路处的第一高速缓存行的数据无效。此后,I/O代理电路可确定该组读取事务中的至少阈值数量的剩余未处理读取事务被定向到第一高速缓存行,并且响应于该确定,向第一存储器控制器电路发送重建第一高速缓存行的排他性读取所有权的请求。但是如果I/O代理电路确定该组读取事务中的少于阈值数量的剩余未处理读取事务被定向到第一高速缓存行,则I/O代理电路可处理剩余读取事务而不重建第一高速缓存行的排他性读取所有权。
在步骤540中,I/O代理电路执行关于数据的该组读取事务。在一些情况下,I/O代理电路可释放第一高速缓存行的独占读取所有权,而不在保持独占读取所有权的同时执行对第一高速缓存行的写入。I/O代理电路可确定该组读取事务中的至少两个读取事务以第一高速缓存行的至少两个不同部分为目标。响应于该确定,I/O代理电路可在释放第一高速缓存行的排他性读取所有权之前处理读取事务中的多个读取事务。
在一些情况下,I/O代理电路可从另一外围部件接收执行被定向到多个高速缓存行中的一个或多个高速缓存行的一组写入事务的一组请求。I/O代理电路可向被配置为管理对多个高速缓存行中的第二高速缓存行的访问的第二存储器控制器电路发出对第二高速缓存行的独占写入所有权的请求,使得:第二高速缓存行的数据不以有效状态高速缓存在存储器和I/O代理电路之外。因此,I/O代理电路可接收第二高速缓存行的数据并且执行关于第二高速缓存行的数据的该组写入事务。在一些情况下,该组写入事务中的一个写入事务可涉及将数据写入第二高速缓存行的第一部分。I/O代理电路可将第二高速缓存行的数据与写入事务的数据合并,使得更新第一部分(例如,较低64位),但第二高速缓存行的第二部分(例如,较高64位)不变。在该组写入事务涉及写入第二高速缓存行的不同部分的那些情况下,I/O代理电路可响应于写入第二高速缓存行的所有部分而释放第二高速缓存行的排他性写入所有权。
D2D电路
图49至图55示出了D2D电路26的各种实施方案。片上系统(SOC)集成电路(IC)通常包括用作系统的中央处理单元(CPU)的一个或多个处理器,以及各种其他部件,诸如存储器控制器和外围部件。包括一个或多个附加IC的附加部件可与特定SOC IC一起包括以形成给定设备。增加包括在SOC IC上的处理器和/或其他离散部件的数量对于提高性能可能是所需的。另外,可通过减少除SOC IC之外的形成设备所需的其他部件的数量来在设备中实现成本节省。如果将整个系统的更大部分并入到单个IC中,则设备可能更紧凑(大小更小)。此外,可通过将更多的部件并入到SOC中来实现整个设备的功率消耗降低。
给定SOC可用于各种应用中,具有不同的性能、成本和功率考虑。例如,对于成本敏感型应用,性能可能不如成本和功率消耗重要。另一方面,对于性能导向的应用,可不强调成本和功率消耗。因此,可利用一系列的SOC设计来支持多种应用。
增加给定SOC设计的重复使用对于降低与设计、验证、制造和评估新SOC设计相关联的成本可能是所需的。因此,需要用于针对一系列的应用扩展单个SOC设计的技术。
如上所述,给定IC设计可用于具有一系列的性能和成本考虑的多种应用中。此外,与设计、验证、制造和评估新IC设计相比,重新使用现有IC设计可降低成本。用于跨应用范围扩展单个IC设计的一种技术是在强调性能超过成本的应用中利用IC的多个实例,并且在成本敏感的应用中使用IC的单个实例。
利用IC的多个实例可带来若干挑战。一些应用(例如,移动设备)具有用于包括多个IC的有限空间。此外,为了减少与IC间通信相关联的延迟,外部IC间接口可包括大量引脚,从而允许在两个或更多个IC之间并行交换大量位。例如,用于多核SOC的接口可利用具有并行行进的数百或甚至一千或更多信号的全系统通信总线。为了将两个或更多个这样的SOC耦接在一起,可能需要提供对通信总线的重要部分的接入的接口,可能需要跨两个或更多个管芯布线的一百个或更多个引脚。此外,为了匹配或甚至接近通信总线的内部通信频率,IC间接口的大量引脚的定时特性应当是一致的,以避免相同数据字的不同位在不同时钟周期到达。创建具有单个引脚布置的大型高速接口以使得相同IC管芯的两个或更多个实例可在小的物理空间中耦接在一起可对IC设计者提出重大挑战。
如下文将进一步解释的,本公开描述“互补”IC间接口的使用。本公开认识到,此类IC间接口支持在有限空间中耦接相同IC设计的两个或更多个实例,并且提供IC设计的可扩展性以支持一系列应用。这样的可扩展接口可包括引脚布置,该引脚布置允许两个IC在两个IC面对面放置或沿着两个管芯的共同边缘放置时在两个IC之间几乎没有到没有导线交叉的情况下物理地耦接。为了增加跨越接口的引脚的性能特性的一致性,可重复用于较小数量的引脚(例如,十六个、三十二个等)的单个设计,
直到实现用于接口的所需数量的引脚为止。这样的IC间接口可通过经由IC的两个或更多个实例的耦接实现性能增加来允许IC用于广泛的应用范围。该接口可进一步使得两个或更多个IC能够以允许耦接的IC用于移动应用或其中用于多个IC的物理空间有限的其他应用中的方式耦接在一起。
当具有“互补功能”的引脚被定位成使得它们具有“互补布局”时,两个IC间接口在本公开的意义内可称为“互补”。如果一个集成电路上的那些引脚中的第一引脚被设计成由另一个集成电路上的那些引脚中的第二引脚接收,则一对接口引脚具有“互补功能”。发射和接收是互补功能的一个示例,因为提供数据字的特定位的输出信号的一个IC上的发射引脚被设计成耦接到接受数据字的特定位作为输入信号的另一个IC上的接收引脚。类似地,携带时钟信号输出的引脚被认为具有与能够接收时钟信号作为输入的相关联的引脚互补的功能。
需注意,术语“对称轴线”在整个本公开中使用。对称轴线的各种实施方案在图49、图50、图51、图52、图53A和图53B中示出,并且在下文中参照这些图进行描述。
当引脚相对于接口的对称轴线定位时,具有互补功能的引脚具有互补布局,使得具有接口的第一集成电路可定位成靠近或耦接到集成电路的第二实例,使得具有互补功能的引脚对准。此类引脚也可被称为处于“互补位置”。互补布局的示例将是用于特定信号的发射引脚(例如,数据总线的位0和位1)分别在对称轴线的一侧上定位成距对称轴线最远和第二远,其中互补接收引脚(例如,数据总线的位0和位1)在对称轴线的相对侧上放置成距对称轴线最远和第二远。在这样的实施方案中,具有互补接口的IC的第一实例可相对于具有相同IC间接口的IC的第二实例定位,使得第一实例的发射引脚与第二实例的接收引脚对准,并且使得第一实例的接收引脚与第二实例的发射引脚对准。如将关于图53A和图53B进一步解释的,当两个接口的周边对齐并且可通过所讨论的引脚绘制垂直于两个接口的直线时,两个相同接口上的引脚被认为是“对准的”。下文关于图53A和图53B进一步描述关于接口的引脚的对准的概念。
这种互补引脚布局使得第一实例和第二实例能够经由它们各自的外部接口耦接,而这两个实例之间没有任何信号路径交叉。具有互补功能以及互补位置的一对接口引脚被称为“互补引脚”。本文使用发射引脚和接收引脚对来演示互补引脚的示例。然而,在其他实施方案中,互补引脚可包括双向引脚对,该双向引脚对被配置为使得可基于一个或多个控制信号的设置在任一方向上发送信号。例如,数据总线的互补引脚可被配置为根据数据正被读取或写入来发送或接收数据。
需注意,如本文所提及的,当接口的互补引脚功能的仅一部分处于互补位置时,该接口仍可被认为是互补的。例如,给定IC间接口可包括与多个通信总线(诸如,存储器总线、显示器总线、网络总线等中的两者或更多者)相关联的引脚。当具有与所包括的总线中的至少一个总线相关联的互补功能的引脚相对于给定接口的对称轴线以互补布局布置时,给定IC间接口被认为是互补的。接口的其他总线和/或与特定通信总线不直接相关的其他信号可不具有处于互补位置的引脚。
需注意,在整个本公开所示出的示例中,参考使用相同设计的两个或更多个IC。可设想,具有相同物理引脚布局的相同外部接口可用于耦接不同设计的IC。例如,不同IC设计的族可包括跨该族的相同外部接口设计,以便实现IC中的两个或更多个IC的实例的各种组合。此类各种组合可跨广泛的应用范围提供高度可扩展的系统解决方案,从而允许例如在成本敏感的应用中使用该族的更小、更便宜的成员以及在注重性能的应用中使用该族的更昂贵、更高性能的成员。该族的成员还可与用于在降低的功率模式中使用的小的低功率成员以及用于当需要执行复杂过程和/或许多并行过程时使用的高性能成员组合。
在一些实施方案中,外部接口沿着IC的管芯的一个边缘物理地定位。这样的物理位置可支持多种多管芯配置,诸如将两个或更多个管芯放置在共平面表面上,其中包括外部接口的边缘被取向为最接近相邻管芯以在耦接外部接口时减少导线长度。在另一个示例中,一对管芯中的一个管芯可面向上放置,而另一个管芯面向下放置,并且然后通过它们的相应接口对准。在其中仅包括IC中的单个IC的实施方案中,沿着管芯的一个边缘放置外部接口可允许例如在晶圆锯操作期间物理地移除外部接口。
图49示出了包括经由各自的外部接口耦接的IC的两个实例的系统的一个实施方案的框图。如图所示,系统E100包括分别经由集成电路E101a和E101b(统称为集成电路E101)的外部接口E110a和E110b(统称为外部接口E110)耦接的集成电路E101a和E101b。在一个实施方案中,集成电路E101可以是图1所示的SOC 10的示例。对称轴线E140被示为垂直于接口E110a和E110b并穿过其中心定位的竖直虚线。对称轴线提供了针对包括在外部接口E110中的引脚的物理布局的参考,这些引脚包括与特定总线相关联的发射引脚E120a和E120b以及接收引脚E125a和E125b。需注意,如图所示,接口E110a和E110b分别位于集成电路E101a和E101b的中心。然而,在其他实施方案中,外部接口可定位成更靠近集成电路的特定侧。
如图所示,集成电路E101a包括具有物理引脚布局的外部接口E110a,该物理引脚布局具有用于特定总线的相对于对称轴线E140位于互补位置E130中的发射引脚E120a和接收引脚E125a。集成电路E101a是以有限量的带宽执行任何特定功能的IC设计。例如,集成电路E101a可以是通用微处理器或微控制器、数字信号处理器、图形或音频处理器、或其他类型的片上系统。在一些应用中,集成电路E101的单个实例可提供合适的性能带宽。在其他应用中,多个集成电路E101可用于增加性能带宽。在一些应用中,多个集成电路E101可被配置为单个系统,其中多个集成电路的存在对于在单个系统上执行的软件是透明的。
如图49所示,外部接口E110b中的接收引脚E125b与外部接口E110a的发射引脚E120a互补。因此,经由发射引脚E120a发送的I/O信号E115a与由接收引脚E125b接收到的I/O信号E115a是共同的。以类似的方式,外部接口E110a的接收引脚E125a与外部接口E110b的发射引脚E120b互补。因此,由发射引脚E120b发射的I/O信号E115b与由接收引脚E125a接收到的I/O信号E115b是共同的。I/O信号E115a可例如对应于集成电路E101a和E101b中的特定总线的数据位0。因此,I/O信号E115b也将对应于集成电路E101a和E101b中的特定总线的数据位0。
如图所示,通过相对于对称轴线E140以相同顺序放置发射引脚E120a和接收引脚E120a来实现互补引脚布局,每个引脚是距对称轴线E140的第十个引脚。在例示的实施方案中,发射引脚E120a和接收引脚E120a还被示为位于距对称轴线E140相同的物理距离E135处,但在该对称轴线的相对侧上。因此,外部接口E110的两个实例可能够直接耦接到彼此。尽管当集成电路E101b旋转到与集成电路E101a相对的位置时,这种物理引脚对称性可实现期望的引脚对准,但是这种程度的引脚对称性不被认为是针对互补接口的所有实施方案的要求。
如图所示,集成电路E101a被耦接到第二实例,集成电路E101b。集成电路E101a和E101b是相同IC的两个实例,并且因此包括相同电路、相同特征和(如图所示)相同外部接口E110的相应实例。因此,集成电路E101b包括具有物理引脚布局的外部接口E110b,该物理引脚布局具有用于给定输入/输出(I/O)信号的相对于对称轴线E140位于互补位置中的发射引脚E120b和接收引脚E125b。
为了耦接集成电路E101,集成电路E101的第一实例和第二实例的外部接口E110被定位成使得集成电路E101a上的用于I/O信号E115的发射引脚E120a和接收引脚E125a分别与集成电路E101b上的用于I/O信号E115的接收引脚E125b和发射引脚E120b对准。通过将集成电路E101b的管芯旋转180度并且将两个集成电路E101的公共边缘放置成彼此相邻,集成电路E101a的发射引脚E120a被物理地定位成与集成电路E101b的接收引脚E125b相邻。类似地,集成电路E101a的接收引脚E125a被物理地定位成与集成电路E101b的发射引脚E120b相邻。如本文所用,“相邻”是指两个或更多个电路元件被布置成使得耦接该两个元件的导线不与类似元件的邻近集合的导线交叉的物理位置。例如,就两个外部接口的引脚而言,相邻引脚指示从第一实例的给定引脚到第二实例的互补引脚的导线不与用于耦接第一实例和第二实例的任何邻近引脚的导线交叉。
经由相应导线E145,发射引脚E120a被耦接到接收引脚E125b,并且接收引脚E125a被耦接到发射引脚E120b。需注意,如本文所用,“导线”是指允许信号在外部接口E110的耦接的发射引脚和接收引脚对之间传送的任何合适的导电介质。例如,导线可对应于附接在发射引脚E120a与接收引脚E125b之间的焊丝。另外,可使用内插器件将外部接口E110a的引脚耦接到外部接口E110b的引脚。在一些实施方案中,集成电路E101a可翻转并面对面地附接到集成电路E101b,两个集成电路管芯之间有或没有内插器件。
外部接口E110的其他引脚也可被布置在类似的互补位置中,使得对于外部接口E110的一组发射引脚,互补的一组接收引脚相对于对称轴线E140以相同顺序位于该组发射引脚的相对侧上。这种布局导致对称的引脚布置,其中距对称轴线E140相同数量的引脚但在相对侧上的一对引脚具有互补的功能,例如,该对引脚中的一个引脚是发射引脚而另一个是接收引脚。
使用该互补引脚布局,由集成电路E101a发送数据包括经由位于距对称轴线E140特定距离处的发射引脚E120a发送数据分组的一部分,以及由集成电路E101b经由位于距对称轴线E140相同特定距离处的接收引脚E125b接收数据分组的该部分。类似地,数据分组的剩余部分由其他发射引脚与第一部分并行地发送到与对称轴线E140等距定位的互补接收引脚。需注意,互补引脚布局还可导致连接在外部接口E110a与E110b之间的导线E145在长度上类似。这种相似性可帮助使得能够并行地发送以及接收数据分组,从而减少数据分组的不同位以及用于对数据分组进行采样的任何时钟信号之间的偏斜。
通过利用上述互补引脚布局,可在集成电路上实现外部接口,该外部接口允许集成电路的多个实例以使得能够在空间受约束的应用中使用同时满足应用的性能要求的方式耦接在一起。跨增加的应用范围重复使用现有集成电路可降低与以其他方式设计新集成电路以满足该增加范围的一个或多个应用的性能要求相关联的设计和生产成本。
需注意,图49所示的系统100仅为一个示例。图49的图示经简化以突出与本公开相关的特征。各种实施方案可包括电路元件的不同配置。例如,外部接口E110被示为具有二十个引脚。在其他实施方案中,外部接口中可包括任何合适数量的引脚,包括例如超过一千个引脚。虽然仅示出集成电路的两个实例,但可设想在其他实施方案中可包括附加实例。对称轴线E140被描绘为通过集成电路E101a和E101b的中心。在其他实施方案中,外部接口以及因此对称轴线可偏离集成电路的中心定位。
图49所示的集成电路仅被示为具有外部接口。各种集成电路可包括任何合适数量的附加电路块。具有附加电路块的集成电路的一个示例在图50中示出。
移到图50,示出了具有外部接口的集成电路的实施方案的图示。如图所示,集成电路101包括耦接到片上路由器E240a-E240e的外部接口E110,该片上路由器继而被耦接到包括总线电路E250、E255和E258的若干总线电路中的相应总线电路。各种总线电路被耦接到功能电路E260a-E260f的相应集合。外部接口E110被示为具有多个发射引脚E120和接收引脚E125,以及相关联的发射器电路E230和接收器电路E235。如图所示,集成电路E101对应于用于图49中的集成电路E101a和E101b两者的IC设计。
如图所示,总线电路E250-E258被配置为在多个功能电路E260a-E260f(统称为功能电路E260)之间传送给定数据。总线电路E250、E255和E258提供各种功能电路集合(包括外部接口E110与功能电路E260的相应集合)之间的相应通信路径。总线电路E250-E258中的每个总线电路可支持相应的网络协议集合和/或特定类型的数据。例如,总线电路E258可用于传送图形数据,而总线电路E250可支持通用数据,并且总线电路E255被用于音频数据。
总线电路E250、E255和258可共同形成集成电路E101内的通信结构以用于在各种功能电路E260与未示出的附加功能电路之间传送数据事务。为了访问外部接口E110并且因此访问集成电路E101的另一实例,总线电路E250-E258中的每一者耦接到片上路由器E240中的相应一个或多个,该片上路由器继而耦接到包括在外部接口E110中的一个或多个发射器电路E230和接收器电路E235。如图所示,片上路由器E240a和E240d提供到总线电路E250中的不同接入点,并且可物理地位于集成电路E101上的不同位置处,诸如靠近相关联的发射器电路和接收器电路。类似地,片上路由器E240b和E240c提供到总线电路E255中的不同接入点,并且片上路由器E240e提供到总线电路E258中的接入点。
如图所示,外部接口E110中的多个发射器电路E230耦接到特定发射引脚集合E220,并且多个接收器电路E235耦接到特定接收引脚集合E225。这些发射器电路E230和接收器电路E235可由它们对应的发射引脚集合E220和接收引脚集合E225来物理地定位。这些电路的这种共同定位可减少在集成电路E101的第一实例中的发射器电路E230集合中的给定一者断言特定信号电平时的时间点与集成电路E101的第二实例上的接收器电路集合中的对应一者接收所断言的信号电平时的稍后时间点之间的时序偏斜。在发射器电路E230和/或接收器电路E235远离其相应发射引脚和接收引脚而放置的IC设计中,该时序偏斜可增加。
特定发射引脚集合E220相对于外部接口E110的对称轴线E140以特定布局布置。特定接收引脚集合E225相对于对称轴线E140以与该特定布局互补的布局布置。因此,当集成电路E101的两个实例彼此面对放置时,其中这些实例中的一个实例从另一个实例翻转E180度,给定发射引脚E120与对应接收引脚E125对准。外部接口E110被配置为在总线电路E250-E258与集成电路E101的另一个实例之间传送特定数据。
片上路由器E240经由多个信号在相关联的总线电路E250-E258与外部接口E110之间传送特定数据。片上路由器E240可被配置为将一个或多个数据分组排队以发送到总线电路E250-E258中的相应一个总线电路,以及/或者将从相应总线电路接收到的一个或多个数据分组排队。例如,片上路由器E240a可经由外部接口E110从集成电路E101的另一个实例接收一系列数据分组。在一些实施方案中,片上路由器E240a可缓冲该系列的一个或多个数据分组,同时在发送接收到的数据分组之前等待总线电路E250中的可用带宽。也可发生相反的情况,其中片上路由器E240a缓冲来自总线电路E250的数据分组,同时等待带宽将这些分组发送到集成电路E101的另一个实例。在其他实施方案中,片上路由器E240a可使功能电路E260a或E260b延迟发送数据分组,直到总线E250上的带宽和/或目的地电路中的资源可用于接收数据分组为止。此外,片上路由器E240可包括用于确定接收到的数据分组的最终目的地的逻辑电路,例如,功能电路E260中的特定一个(或多个)功能电路。在一些实施方案中,片上路由器E240可使用一种类型的数据协议将从外部接口E110接收到的数据信号转换为与相关联的总线电路兼容的不同类型的数据协议。
如所公开的,集成电路E101包括对应于多个发射引脚E120和多个接收引脚E125中的相应引脚的多个发射器电路E230和多个接收器电路E235。发射器电路E230包括用于将数据信号驱动到对应发射引脚E120上的电路系统。例如,发射器电路E230可包括驱动器电路,这些驱动器电路被配置为从由相关联的片上路由器E240生成的信号接收特定电压电平并且然后在相关联的发射引脚E120上生成对应电压电平,使得集成电路E101的另一个实例中的对应接收器电路E235可检测该电压电平。接收器电路E235可例如包括输入电路,这些输入电路被配置为检测接收引脚E125中的对应一个接收引脚上的接收到的电压电平是高于还是低于特定电压阈值,并且然后在发送到相关联的片上路由器E240的信号上生成对应逻辑电平。如图所示,发射器电路E230和接收器电路E235相对于对称轴线E140以对应于特定互补布局的物理布局布置。
片上路由器E240包括耦接到公共总线电路(例如,总线电路E250)的一对片上路由器(例如,片上路由器E240a和E240d)。片上路由器E240a被耦接到外部接口E110的位于对称轴线E140的左侧上的特定发射引脚和接收引脚集合。片上路由器E240d被耦接到外部接口的位于对称轴线E140的右侧上的与特定发射引脚和接收引脚集合互补的不同发射引脚和接收引脚集合。例如,耦接到片上路由器E240a的给定发射引脚E120具有耦接到片上路由器E240d的对应互补接收引脚E125。
集成电路E101的第一实例的特定功能电路(例如,功能电路E260a)与集成电路E101的第二实例的不同功能电路(例如,功能电路E260b的第二实例)之间的数据交换的示例包括由第一实例中的功能电路E260a经由第一实例的外部接口E110的发射引脚集合E220发送第一数据。该发送包括使用片上路由器E240a经由外部接口E110向第二实例发射特定信号集合。由第二实例接收第一数据包括由第二实例经由在第二实例中耦接到片上路由器E240d的外部接口E110的接收引脚集合E225接收特定信号集合。片上路由器E240d然后可经由功能电路E260b的第二实例的总线电路E250将接收到的第一数据路由到该第二实例。
从第二实例的功能电路E260b发送到第一实例的功能电路E260a的数据重复该过程。集成电路E101的第二实例经由第二实例的外部接口E110的发射引脚集合E220发送第二数据,包括使用第二实例的片上路由器E240a经由外部接口E110向第一实例发射不同的信号集合。由第一实例经由第一实例的外部接口E110的接收引脚集合E225接收第二数据包括使用第一实例的片上路由器E240d经由外部接口E110从第二实例接收不同的信号集合。接收到的第二数据然后经由第一实例的总线电路E250被路由到功能电路E260a。因此,可使用对应的互补发射引脚E120和接收引脚E125的集合在集成电路E101的两个实例之间交换数据。
此外,片上路由器E240a经由总线电路E250被耦接到片上路由器E240d并且被耦接到发射引脚集合E220。类似地,片上路由器E240d被耦接到接收引脚集合E225。因此,第一实例中的功能电路E260a可使用片上路由器E240a和E240d的互补集合经由外部接口E110发送和接收数据。第二实例的功能电路E260b可类似地使用第二实例的片上路由器E240a和E240d的互补集合经由外部接口E110发送和接收数据。因此,第一实例和第二实例的耦接的外部接口E110可使得该两个实例的相应通信结构能够充当单个一致通信结构,从而允许以类似于在相同管芯上的两个功能电路之间交换数据分组的方式在相对管芯上的功能电路之间交换数据分组。从功能角度来看,集成电路E101的两个实例可作为单个集成电路来执行。
需注意,图50的实施方案是一个示例。在其他实施方案中,可包括元件的不同组合。例如,可包括不同数量的总线电路和/或片上路由器。尽管图50描绘了包括在外部接口E110中的E26个引脚,但是在其他实施方案中,可包括任何适当数量的引脚。
在图49和图50的描述中,外部接口110的各种引脚对被描述为互补的。在一些实施方案中,跨IC的第一实例的特定的发射引脚集合发射的数据位的次序可不直接与IC的第二实例的互补的接收引脚集合对准。图51示出了演示可如何解决数据位的未对准的IC的实施方案。
转向图51,示出了集成电路E101的两个实例,经由外部接口E110的它们相应的实例耦接。如图所示,系统E300描绘了接收到的数据与传输数据未对准的实施方案。系统E300包括集成电路E101a和E101b,每个集成电路具有各自的外部接口E110a和E110b,以及各自的一对片上路由器:集成电路E101a中的片上路由器E340a和E340b以及集成电路E101b上的片上路由器E340c和E340d。对于例示的示例,集成电路E101a的片上路由器E340a对应于集成电路E101b的片上路由器E340c。以类似的方式,片上路由器E340b对应于片上路由器E340d。集成电路E101a和E101b中的每个集成电路还包括接口封装器E350a和E350b中的相应一个接口封装器,这些接口封装器被配置为在相应片上路由器与外部接口之间路由个别信号。
如图所示,外部接口E110a和E110b的发射引脚和接收引脚被分组为引脚集合,包括相应的发射器电路和接收器电路。这些引脚集合具有共同数量的引脚,在例示的示例中为八个,但可使用任何合适数量。该共同数量的引脚可用于使引脚集合的设计标准化。每个引脚集合可包括用于控制时钟信号、功率等的公共信号集合。例如,给定集合中的每个引脚接收相同门控时钟信号并且可耦接到相同门控功率节点和/或相同门控接地参考节点。利用针对引脚集合的少量(例如,一个或两个)设计可减少外部接口的开发时间以及增加外部接口E110a和E110b的引脚中的每个引脚的放置以及性能特性(例如,上升时间和下降时间)的一致性。如先前所公开的,尽管针对外部接口E110的每个实例仅说示出了三十二个引脚,但是外部接口E110实际上可包括数百或数千个引脚。因此,使将在接口设计中实现为一个单元的引脚集合标准化可导致用于设计和验证外部接口E110所需的时间的显著减少。
多个片上路由器E340a-E340d中的各个片上路由器被指派给引脚集合中的相应的一个或多个引脚集合。例如,片上路由器E340a被指派给发射引脚集合E320a和接收引脚集合E325a。类似地,片上路由器EE340b-340d被指派给相应的发射引脚集合和相应的接收引脚集合。在各种实施方案中,这些指派可以是固定的或可以是可编程的,例如,通过设置特定配置寄存器(未示出)来指派引脚集合。需注意,在所描绘的实施方案中,接收引脚和发射引脚被分组为单独集合。在其他实施方案中,如下面将示出的,引脚集合可包括发射引脚和接收引脚两者。
此外,多个片上路由器E340a-E340d中的各个片上路由器被指派给相应的总线电路,并且因此被耦接到包括在相同集成电路E101上的多个功能电路。在一些实施方案中,片上路由器E340的物理取向可以优先于该片上路由器所耦接到的特定总线电路来实现。例如,片上路由器E340a和E340b可被实例化,使得它们从一个旋转180度到另一个,以便与环绕集成电路E101a的公共总线电路对准。在这样的实施方案中,片上路由器E340b的引脚可不与外部接口E110a的接收引脚集合E325b和/或发射引脚集合E320b对准。另外,接口封装器350a可包括相同部件的从一个到另一个以180度实例化的若干实例。在这种情况下,接口封装器E350a的发射引脚和接收引脚可不与外部接口E110a的引脚对准。因此,可能需要通过接口封装器E350a重新路由引脚信号的能力。
如图所示,片上路由器E340a-E340d中的每个片上路由器包括六个输出信号和六个输入信号,这六个输出信号和六个输入信号不同于引脚的共同数量八。因此,指派给每个片上路由器E340的每个引脚集合E320和E325中的两个引脚未被使用。片上路由器E340a-E340d各自支持特定网络协议,如上文关于图50所述。在一些情况下,诸如图51所示,特定网络协议可不包括与包括在引脚集合中的共同数量的引脚对准的多个引脚。由于移除额外引脚可能影响剩余引脚的性能特性(例如,剩余引脚中的每个引脚所经历的寄生电容可不同,从而影响上升时间和下降时间),因此在一些实施方案中,将无关引脚留在相应集合中。
如图所示,每个发射引脚集合E320包括发射缓冲器,并且类似地,每个接收引脚集合E325包括接收缓冲器。由于每个集合中包括八个发射引脚或八个接收引脚,因此相应的发射缓冲器和接收缓冲器可作为数据字节来访问。例如,片上路由器E340a可向片上路由器E340d发送数据。片上路由器E340a向接口封装器E350a发送六个输出信号。接口封装器E350a被配置为将发射引脚集合E320a路由到片上路由器E340a中的默认引脚指派。如图所示,该默认指派是直通指派,其中发射引脚集合E320a的位0被耦接到片上路由器E340a的位0,依此类推,直到发射引脚集合E320a的位5被指派给片上路由器E340a的位5。该位指派假设位0对应于外部接口E110a中的引脚集合的最左侧引脚。
需注意,集成电路E101b相对于集成电路E101a旋转180度。因此,位0对应于外部接口E110b中的引脚集合的最右侧引脚。如图所示,由于外部接口E110与E110b之间的导线E145是直跨的,因此发射引脚集合E320的位0被耦接到接收引脚集合E325d的位7,并且类似地,发射引脚集合E320a的位5被耦接到接收引脚集合E325d的位2。因此,接口封装器E350b使用非默认引脚指派将接收引脚集合E325d路由到片上路由器E340d。
以类似方式,将数据从片上路由器E340d发送到片上路由器E340a可包括由片上路由器E340d使用非默认引脚指派经由外部接口E110b的发射引脚集合E320d发送信号以将发射引脚集合E320d路由到片上路由器E340d。由片上路由器E340a经由外部接口E110a的接收引脚集合E325a接收数据包括使用默认引脚指派将接收引脚集合E325a路由到片上路由器E340a。
在一些实施方案中,接口封装器E350a和E350b可在给定片上路由器E340不传送数据的任何给定时钟周期期间在任何给定时钟周期上调节给定的片上路由器E340与所指派的引脚集合(或多个引脚集合)的发射引脚和接收引脚之间的路由。例如,特定量的数据可在片上路由器E340b与片上路由器E340c之间发送。接口封装器E350a针对特定数据的第一部分使用第一引脚指派在片上路由器E340b与发射引脚集合E320b之间路由多个信号,并且然后针对特定数据的第二部分使用不同于第一引脚指派的第二引脚指派在片上路由器E340b与发射引脚集合E320b之间重新路由多个信号。
集成电路E101a和E101b例如可各自包括能够执行特定指令集架构的指令的一个或多个处理内核。因此,特定程序的指令可使得内核在特定时间点或针对特定类型的数据修改接口封装器E350a和/或E350b中的引脚指派。例如,可使用一个引脚指派来发送图像数据,并且然后针对音频数据或针对与图像数据相关联的命令切换到不同引脚指派。此外,当相同IC上的不同路由器正在发送或接收数据时,接口封装器E350a和E350b可能够针对一个片上路由器重新路由引脚分配。
需注意,图51的示例仅用于演示所公开的概念。系统E300已经被简化以清楚地示出所描述的技术。在其他实施方案中,附加的发射引脚和接收引脚集合可被包括在外部接口以及附加的片上路由器中。为了清楚起见,省略了集成电路E101a和E101b的其他电路块。
图51描述了如何实现和利用外部接口中的引脚集合。可利用各种技术来实现此类引脚集合。在图51中,外部接口的引脚被分组为与接收引脚集合分开的发射引脚集合。图52示出了用于对包括发射引脚和接收引脚两者的引脚集合进行分组的另一个示例。
前进到图52,示出了具有外部接口的集成电路的实施方案的框图。在例示的实施方案中,集成电路E101包括外部接口E410和片上路由器E440a-E440d(统称为片上路由器E440)。外部接口E410包括四个发射引脚和接收引脚集合,束E450a-E450d(统称为束E450),其中发射引脚和接收引脚相对于对称轴线E140以互补布局布置。所示的束E450a-E450d中的每个束包括八个引脚、四个发射引脚和四个接收引脚。
如图所示,外部接口E410的发射引脚和接收引脚被分组为引脚集合,束E450a-E450d,其中束E450中的每个束具有共同数量的引脚(八个)。片上路由器E440被指派给束E450中的相应一个束。然而,在其他实施方案中,片上路由器E440中的一个或多个片上路由器可被指派给两个或更多个束E450。如上所述,可使用标准化的束E450来实现发射引脚和接收引脚集合,以便增加跨外部接口E410的引脚的一致性。在每个束E450内,所包括的发射引脚和接收引脚共享公共功率信号和时钟信号。
每个束E450可被耦接到任何适当的功率信号和时钟信号。如图所示,束E450a和E450d被耦接以接收功率信号E460a和时钟信号E465a,而束E450b和E450c被耦接以接收功率信号E460b和时钟信号E465b。在一些实施方案中,可独立于功率信号E460b来控制功率信号E460a,包括例如使用不同电压电平和/或实现不同功率门以启用/停用相应束E450。以类似方式,还可独立于时钟信号E465b来控制时钟信号E465a。因此,时钟信号E465a可独立于时钟信号E465b而被启用和/或设置为特定频率。在本实施方案中,束E450a和E450d是互补对,束E450b和E450c也是如此。除了使用标准化引脚束来实现束E450中的每个束之外,针对束E450的互补对使用公共功率和时钟信号还可增加互补对的两个束E450之间的性能一致性。
如图所示,将片上路由器E440a和E440d分别指派给束E450a和E450d。以类似的方式,将片上路由器E440b和E440c分别指派给束E450b和E450c。片上路由器E440a和E440d包括与包括在标准化束中的引脚相同数量的发射引脚和接收引脚,导致束E450a和E450d中没有未使用的引脚。相比之下,片上路由器E440b和E440c包括比包括在标准化束中的共同数量的引脚更少的发射引脚和接收引脚,分别导致束E450b和E450c中有一个未使用的发射引脚和一个未使用的接收引脚。
如图所示,片上路由器E440a和E440d可使用相应束的所有发射引脚经由束E450a和E450d发送数据分组。然而,在不同的时间点处,片上路由器E440a和E440d可发送多个数据分组,其中该多个数据分组中的一些数据分组包括较少数量的位,导致比相应束E450的所有发射引脚更少的引脚被使用。同样地,当接收数据分组时,可使用比束E450a和E450d中的所有接收引脚更少的引脚来接收给定数据分组。
需注意,图52仅仅是所公开概念的一个示例。尽管示出了四个片上路由器和四个引脚束,但是在其他实施方案中可包括任何合适的数量。如图所示,在每个引脚束内示出了四个发射引脚和四个接收引脚。在其他实施方案中,可包括任何合适数量的发射引脚和接收引脚。在一些实施方案中,发射引脚的数量可不同于接收引脚的数量。在其他实施方案中,发射引脚和接收引脚可在单独的束中实现。
在图49和图51中,示出了经由它们各自的外部接口耦接的两个集成电路。在一些实施方案中,两个集成电路可放置在共平面表面上,其中两个IC面向相同方向并且其中一个IC被旋转使得它们各自的外部接口的引脚以允许两个外部接口的引脚在不与任何导线交叉的情况下耦接的方式对准。在其他实施方案中,如图53A和图53B所示,两个IC可面对面地附接,其中它们各自的外部接口对准。图53B进一步描绘了经由非对准外部接口耦接的两个管芯的示例。
现在前进到图53A,描绘了用于经由外部接口将两个集成电路附接在一起的两个实施方案。在一个实施方案中,系统E500示出了使用焊料凸块E540将集成电路管芯E501a耦接到集成电路管芯E501b。在另一个实施方案中,系统E505示出了使用内插器件E530以及两组焊料凸块E545耦接到集成电路管芯E501b的集成电路管芯E501a。在本实施方案中,集成电路管芯E501a和E501b对应于图49中的集成电路E101a和E101b。
如图49所示,集成电路E101a和E101b的外部接口可使用导线(例如,焊接的焊丝或沉积在电路板上的微带导体)与放置在共平面表面上的两个管芯耦接,两个管芯的面面向相同方向。这种技术可实现低成本组装解决方案,但可能需要大于两个管芯的占用面积的相关联电路板的表面积。为了减小该占用面积,系统E500包括面对面放置的两个集成电路管芯E501a和E501b,其中各自的外部接口的引脚对准并且使用焊料凸块E540直接焊接到彼此。例如,发射引脚E120a被直接焊接到接收引脚E125b,并且接收引脚E125a被直接焊接到发射引脚E120b。上文针对图49中的外部接口E110所描述的互补引脚布局使得能够在相同接口的不同实例之间进行该直接焊接。与对称轴线E140等距的互补引脚对的放置提供了实现直接连接的对准。
系统E505呈现与系统E500类似的解决方案,但添加了内插器件E530a以提供每个管芯的外部接口之间的导电连接。在系统E505中,集成电路管芯E501a的发射引脚E120a被焊接到内插器件E530a的特定引脚。该特定引脚然后被焊接到接收引脚E125b。以类似的方式,接收引脚E125a被焊接到内插器件E530a的不同引脚,该不同引脚又被焊接到发射引脚E120b。尽管内插器件E530a可允许将集成电路管芯E501a的引脚路由到集成电路管芯E501b的未物理对准的引脚,但是使用集成电路管芯E501a和E501b的外部接口的互补引脚布局允许内插器件E530a在两个管芯之间具有直通的导电路径。与两个管芯上的未对准引脚之间的路由连接相比,此类直连接可减少集成电路E501a与E501b的引脚之间的物理路径。内插器件E530a的使用可进一步允许外部接口的一个或多个引脚或集成电路管芯E501a和E501b中的任一者的其他引脚的路由到内插器件E530的边缘,在该边缘处引脚可例如耦接到其他集成电路。
在图53A中,集成电路E501a和E501b的外部接口的引脚被描绘为具有与对称轴线E140等距的互补引脚。在一些实施方案中,并非接口的所有引脚都可包括这种等距引脚布局。现在转向图53B,示出了两个耦接的IC的另外两个示例。然而,包括在系统E510和E515中的IC不包括都与对称轴线等距的引脚。
如图所示,系统E510演示了包括互补引脚的外部接口的示例。类似于集成电路管芯E501a和E501b,集成电路管芯E502a和E502b是通过公共外部接口设计耦接的相同集成电路设计的两个实例。集成电路管芯E502a和E502b的外部接口的引脚包括用于两个总线(总线E560和总线E565)的发射引脚和接收引脚。用于总线E565的引脚每个管芯被分成两个部分,集成电路管芯E502a上的总线E565a和E565b,以及集成电路管芯E502b上的总线E565c和E565d。每个管芯还包括用于总线E560(集成电路管芯E502a上的E560a以及集成电路管芯E502b上的总线E560b)的相应引脚。总线E565a和E565d的互补引脚与对称轴线E140不等距,并且尽管引脚以相同的顺序布置,但是平行于管芯的边缘的直线不能通过总线E565a和E565d的引脚绘制,并且类似于总线E565b和E565c的引脚。因此,总线E565的引脚不对准。
如图所示,总线E560a的具有互补功能的引脚也没有被布置成与对称轴线E140等距。然而,与总线E565的引脚不同,可通过总线E560a和E560b的互补的引脚对来绘制平行于管芯的边缘的线。因此,总线E560的引脚被对准。
如所呈现的,系统E515演示了不互补的外部接口的示例。类似于系统E510,系统E515包括相同集成电路设计的两个实例,集成电路管芯E503a和E503b。在系统E515中,外部接口的引脚未对准,并且因此,多个信号路径交叉。例如,发射引脚E120a与接收引脚E125b之间的信号路径与来自发射引脚E121a和接收引脚E126b的路径交叉。在对称轴线E140的相对侧上,发射引脚E120b与接收引脚E125a之间的信号路径与来自发射引脚E121b和接收引脚E126a的路径交叉。由于这种未对准,集成电路E503a和E503b不被认为具有互补接口。
需注意,外部接口的互补引脚的对准可导致相邻信号之间的噪声耦接的减少。当两个或更多个信号路径交叉时,携带信号的导线可紧密接近,这继而可增加对噪声耦接的敏感性,在噪声耦接中,第一信号路径从第二信号路径上的信号转变接收电磁干扰。两个信号路径越近,对在两个路径之间传输的噪声的敏感性越大。通过对准接口的引脚,可在相邻信号路径之间保持合适的距离,从而将噪声敏感性降低到可接受的水平。对准的引脚布局可进一步减小通过内插器件的信号路径的长度,这可减小互补的引脚对之间的阻抗,从而允许系统在较低电压电平和/或较高时钟频率下进行操作。
还需注意,图53A和图53B的示例仅用于演示所公开的技术。可设想用于耦接两个或更多个IC管芯的其他技术。例如,在一些实施方案中,两个或更多个IC管芯中的每个IC管芯的引脚可直接耦接到电路板,其中管芯之间的连接路由穿过该电路板。
上文关于图49至图53描述的电路和技术可使用各种方法来耦接两个外部接口。下文关于图54和图55描述了与耦接接口相关联的两种方法。
现在移到图54,示出了用于将两个集成电路耦接在一起的方法的实施方案的流程图。方法E600可由包括集成电路的两个或更多个实例的系统(诸如图49中的系统E100)来执行。共同参考图49和图54,方法E600可开始于框E610。
在框E610处,方法E600包括由集成电路E101a经由外部接口E110a的发射引脚集合向集成电路E101b发送第一数据。如图所示,集成电路E101a和E101b是公共集成电路设计的两个实例。如此,两个实例的物理引脚布局是相同的。然而,在其他实施方案中,可设想可使用两个不同集成电路的相应实例。在图49中,集成电路E101a的外部接口E110a的发射引脚被耦接到集成电路E101b的外部接口E110b的相应接收引脚,包括发射引脚E120a被耦接到接收引脚E125b。因此,集成电路E101a可使用外部接口E110a将第一数据发送到集成电路E101b。
方法E600在框E620处还包括由集成电路E101a经由外部接口E110a的接收引脚集合从集成电路E101b接收第二数据。
如图所示,外部接口E110a的接收引脚被耦接到外部接口E110b的相应接收引脚,包括接收引脚E125a被耦接到发射引脚E120b。该发射引脚集合和该接收引脚集合相对于集成电路E101的对称轴线E140位于互补位置中。因此,发射引脚E120a和E120b对应于公共集成电路设计中的相同发射引脚。同样,接收引脚E125a和E125b对应于公共集成电路设计中的相同接收引脚。外部接口相对于对称轴线E140的该互补引脚布局允许公共集成电路设计的两个实例通过其各自的外部接口耦接,而无需重新路由外部接口的任何引脚。相反,外部接口E110a与E110b之间的直接连接可以是可能的,而不跨越任何相关联的导线。用于耦接公共集成电路的两个实例的这种技术可允许具有大量引脚(例如,大于一千个引脚)的外部接口。
在一些实施方案中,方法E600可在框E620中结束,或在其他实施方案中,可响应于将在两个集成电路E101a与E101b之间交换的新数据而重复。需注意,图54的方法仅仅是用于耦接两个集成电路的示例。
现在转向图55,示出了用于在外部接口的引脚与一个或多个片上路由器之间路由信号的方法的实施方案的流程图。以与上文方法E600类似的方式,方法E700可由具有两个或更多个集成电路的系统(诸如图51中的系统E300)来执行。共同参考图51和图55,方法E700在框E710中开始。
方法E700在框E710处包括由集成电路E101a使用非默认引脚指派将发射引脚集合E320b路由到片上路由器E340b以经由发射引脚集合E320a发送第一数据。如图51所示,集成电路E101a包括接口封装器E350a,该接口封装器被配置为将信号从片上路由器E340a和E340b路由到外部接口E110a中的相应的发射引脚和接收引脚集合。接口封装器E350a可使用默认引脚指派来将发射引脚集合E320b路由到来自片上路由器E340b的输出信号。然而,在一些条件下,接口封装器E350a可被配置为使用非默认引脚指派将输出信号从片上路由器E340b重新路由到发射引脚集合E320b。例如,如图51所示,片上路由器E340b具有比包括在发射引脚集合E320b中的发射引脚的数量更少的输出信号。非默认引脚指派可用于调节集成电路E101b接收第一数据的各个位的位置。
在框E720处,方法E700包括由集成电路E101a使用默认引脚指派将接收引脚集合E325a路由到片上路由器E340a以经由接收引脚集合E325a接收第二数据。如图所示,在一些情况下,接口封装器E350a可被进一步配置为使用默认引脚指派来将接收引脚集合E325a耦接到片上路由器E340a,例如,当集成电路E101b中的接口封装器E350b在从外部接口E110b中的发射引脚集合E320d发送第二数据之前使用非默认引脚指派来重新路由引脚指派以使得第二数据的各个位以期望的次序到达时。
默认和非默认引脚指派的此类使用可增加耦接在一起的两个集成电路的外部接口的灵活性。通过允许信号在外部接口与片上路由器之间重新路由信号,与经由两个外部接口之间的导线重新路由信号相比,可增加在两个外部接口之间传递的信号的一致性。此外,接口封装器的可编程路由能力可增加外部接口的灵活性,从而潜在地允许外部接口用于在集成电路之间传送的增加数量的数据类型,而不需要在发送之前预处理数据或后处理接收到的数据以便将所传送数据位放置于适当位位置中。
需注意,图55的方法仅是用于在片上路由器与外部接口之间路由数据的示例。方法E700可由图49至图53中公开的集成电路的任何实例来执行。设想了所公开的方法的变型,包括方法E600和E700的操作的组合。例如,方法E700的框E710可在方法E600中的框E610的执行之前执行,并且框E720可在方法E600的框E620的执行之前执行。
散列
图56中图68示出了可由SOC 10的一个实施方案采用的地址散列机制的各种实施方案。在一个实施方案中,散列电路系统被配置为根据选择性可编程散列协议将存储器请求流量分配到系统存储器。可编程散列协议的至少一个编程将一系列存储器请求均匀地分配在系统中的多个存储器控制器上以用于系列中的多种存储器请求。可编程散列协议的至少一个编程以指定粒度将存储器空间内的相邻请求分配到物理上远离的存储器接口。
存在各种计算机系统,包括系统中的处理器和其他硬件代理经由存储器地址空间(与例如映射到具体I/O设备的I/O地址空间相比)可直接访问的大量系统内存。系统存储器通常被实施为多个动态随机存取存储器(DRAM)设备。在其他情况下,也可使用其他类型的存储器,诸如静态随机存取存储器(SRAM)设备、各种类型的磁存储器设备(例如,MRAM)、诸如闪存或只读存储器(ROM)的非易失性存储器设备、其他类型的随机存取存储器设备。在一些情况下,除了被映射到RAM设备的存储器地址空间的部分之外,还可将存储器地址空间的一部分映射到这样的设备(并且也可使用存储器映射的I/O设备)。
存储器地址到存储器设备的映射可能会强烈影响存储器系统的性能(例如,在可持续带宽和存储器等待时间方面)。例如,典型的非统一存储器架构(NUMA)系统由包括处理器、外围设备和存储器的计算节点构成。计算节点进行通信,并且一个计算节点可访问另一个计算节点中的数据,但是等待时间增加。以大的连续部分(例如,一个节点包括地址0到N-1,其中N为节点中存储器的字节数,另一个节点包括地址N到2N-1等)映射存储器地址空间。这种映射以访问非本地存储器为代价优化了对本地存储器的访问。然而,这种映射也在将虚拟页面映射到物理页面的方式以及给定进程可在系统中执行以实现更高性能的计算节点选择两个方面约束了操作系统。另外,进程对大量数据的访问的带宽和等待时间受到给定本地存储器系统的性能的限制,并且在访问另一个计算节点中的存储器的情况下会受到影响。
图56是形成系统的多个片上系统(SOC)F10的一个实施方案的框图。SOC F10可为公共集成电路设计的实例,并且因此更详细地示出了SOC F10中的一个SOC。SOC F10的其他实例可类似。例如,SOC F10可以是图1所示的SOC 10的实例。在例示的实施方案中,SOC F10包括多个存储器控制器F12A-F12H、一个或多个处理器集群(P集群)F14A-F14B、一个或多个图形处理单元(GPU)F16A-F16B、一个或多个I/O集群F18A-F18B以及包括西互连件(IC)F20A和东IC F20B的通信结构。I/O集群F18A-F18B、P集群F14A-F14B和GPU F16A-F16B可耦接到西IC F20A和东IC F20B。西IC F20A可耦接到存储器控制器F12A-F12D,而东IC F20B可耦接到存储器控制器F12E-F12H。
图56所示的系统还包括耦接到存储器控制器F12A-F12H的多个存储器设备F28。在图56的示例中,59个存储器设备F28耦接到每个存储器控制器F12A-F12H。其他实施方案可具有耦接到给定存储器控制器F12A-F12H的更多或更少的存储器设备F28。此外,不同的存储器控制器F12A-F12H可具有不同数量的存储器设备F28。存储器设备F28可在容量和配置上变化,也可具有一致的容量和配置(例如,体、体组、行大小、等级等)。在该具体实施中,每个存储器设备F28可经由独立的通道耦接到其相应的存储器控制器F12A-F12H。在其他实施方案中,可支持由两个或更多个存储器设备F28共享的通道。在一个实施方案中,在芯片上芯片(CoC)或封装上封装(PoP)具体实施中,存储器设备F28可安装在对应SOC F10上。在另一个实施方案中,在多芯片模块(MCM)具体实施中,存储器设备F28可与SOC F10一起封装。在又一个实施方案中,存储器设备F28可安装在一个或多个存储器模块上,诸如单列直插式存储器模块(SIMM)、双列直插式存储器模块(DIMM)等。在一个实施方案中,存储器设备F28可以是动态随机存取存储器(DRAM),诸如同步DRAM(SDRAM),并且更具体地为双倍数据速率(DDR)SDRAM。在一个实施方案中,存储器设备F28可被实施为低功率(LP)DDR SDRAM规范,也称为移动DDR(mDDR)SDRAM。
在一个实施方案中,互连件F20A-F20B还可耦接到SOC F10的另一个实例的非SOC接口,从而将系统扩展到多于一个SOC(例如,多于一个半导体管芯,其中SOC F10的给定实例可在单个半导体管芯上实施,但是多个实例可被耦接以形成系统)。因此,系统可扩展到其上实施SOC F10的实例的两个或更多个半导体管芯。例如,两个或更多个半导体管芯可配置为单个系统,其中多个半导体管芯的存在对于在单个系统上执行的软件是透明的。在实施方案中,可使管芯到管芯通信中的延迟最小化,使得与作为对多管芯系统的软件透明性的一个方面的管芯内通信相比,管芯到管芯通信通常不会产生显著的额外时延。在其他实施方案中,SOC F10中的通信结构可不具有物理上不同的互连件F20A-F20B,而是可为系统中的源硬件代理(传输存储器请求)与存储器控制器F12A-F12H之间的完全互连件(例如,完全交叉开关)。在一个实施方案中,出于散列和路由的目的,这样的实施方案在逻辑上仍然可包括互连件F20A-F20B的概念。
存储器控制器F12A在图56中更详细地示出,并且可包括控制电路F24和各种内部缓冲器F26。其他存储器控制器F12B-F12H可类似。控制电路F24耦接到内部缓冲器F26和存储器位置配置寄存器F22F(下文讨论)。一般来讲,控制电路F24可被配置为控制对存储器控制器F12A所耦接到的存储器设备F28的存取,包括控制到存储器设备F28的通道、执行校准、确保正确刷新等。控制电路F24还可被配置为调度尝试最小化时延、最大化存储器带宽等的存储器请求。在一个实施方案中,存储器控制器F12A-F12H可采用存储器高速缓存来减少存储器时延,并且控制电路F24可被配置为针对存储器请求访问存储器高速缓存,并且处理存储器高速缓存中的命中和未命中,以及从存储器高速缓存中逐出。在一个实施方案中,存储器控制器F12A-F12H可管理与其附接的存储器的一致性(例如,基于目录的一致性方案),并且控制电路F24可被配置为管理一致性。到存储器设备F28的通道可包括到设备的物理连接,以及低级别通信电路系统(例如,物理层(PHY)电路系统)。
如图56所示,I/O集群F18A-F18B、P集群F14A-F14B、GPU F16A-FF16B和存储器控制器F12A-F12H包括存储器位置配置(MLC)寄存器(附图标号F22A-F22H、F22J-F22N和F22P)。在一些实施方案中,西IC F20A和东IC F20B还可包括存储器位置配置寄存器。因为系统包括多个存储器控制器F12A-F12H(并且可能在SOC F10的多个实例中包括存储器控制器的多个集合),所以可以对存储器请求所访问的地址进行解码(例如,散列)以确定存储器控制器F12A-F12H,并最终确定映射到该地址的具体存储器设备F28。也就是说,可在将存储器地址映射到存储器设备中的存储器位置的存储器地址空间内限定存储器地址。存储器地址空间中的给定存储器地址唯一地识别耦接到多个存储器控制器F12A-F12H中的一个存储器控制器的存储器设备F28中的一个存储器设备中的存储器位置。MLC寄存器F22A-F22H、F22J-F22N和F22P可被编程以描述映射,使得对由MLC寄存器F22A-F22H、F22J-F22N和F22P指定的存储器地址位进行散列可识别存储器控制器F12A-F12H,并最终识别存储器请求所指向的存储器设备F28(并且在一个实施方案中,存储器设备F28内的体组和/或体)。
在给定电路中可能有多于一个MLC寄存器。例如,在粒度级别的分层结构中,每个粒度级别可存在MLC寄存器来识别存储器控制器F12A-F12H。由给定电路解码的级别的数量可取决于给定电路使用多少粒度级别来确定如何将存储器请求路由到正确的存储器控制器F12A-F12H,并且在一些情况下路由到正确的存储器控制器F12A-F12H内的甚至更低的粒度级别。存储器控制器F12A-F12H可包括至少下至具体存储器设备F28的每个层级的MLC寄存器。通常,粒度级别可被视为多个存储器控制器F12A-F12H中的至少两个存储器控制器的2的递归幂。因此,虽然MLC寄存器F22A-F22H、F22J-F22N和F22P被给予相同的通用附图标记,但MLC寄存器F22A-F22H、F22J-F22N和F22P可能不都是同一组寄存器。然而,对应于相同粒度级别的寄存器F22A-F22H、F22J-F22N和F22P的实例可为相同的,并且可被一致地编程。下文还将讨论附加细节。
存储器控制器F12A-F12H可物理地分布在其上实施SOC F10的集成电路管芯上。因此,系统中的存储器控制器可物理地分布在多个集成电路管芯上,并且物理地分布在集成电路管芯内。也就是说,存储器控制器F12A-F12H可分布在其上形成SOC F10的半导体管芯的区域上。例如,在图56中,SOC F10内的存储器控制器F12A-F12H的位置可表示SOC F10管芯区域内的那些存储器控制器F12A-F12H的物理位置。因此,确定给定存储器请求所映射到的存储器控制器F12A-F12H(“目标存储器控制器”)可用于通过SOC F10中的通信结构将存储器请求路由到目标存储器控制器。通信结构可包括例如西IC F20A和东IC F20B,并且还可包括图56中未示出的附加互连件。在其他实施方案中,存储器控制器F12A-F12H可不是物理分布的。然而,诸如本文描述的散列机制可用于识别目标存储器控制器F12A-F12H。
I/O集群F18A-F18B、P集群F14A-F14B和GPU F16A-F16B可为被配置为使用存储器地址通过存储器控制器F12A-F12H访问存储器设备F28中的数据的硬件代理的示例。也可包括其他硬件代理。通常,硬件代理可为硬件电路,该硬件电路可为存储器请求(例如,读或写请求)的源。基于MLC寄存器的内容,请求从硬件代理路由到目标存储器控制器。
在一个实施方案中,存储器地址可通过存储器控制器F12A-F12H(以及系统中包括的SOC F10的其他实例中的对应存储器控制器)映射,以将页面内的数据分布到整个存储器系统。这种方案可为访问页面中大多数或所有数据的应用程序提高通信结构和存储器控制器的带宽利用率。也就是说,存储器地址空间内的给定页面可被划分为多个块,并且给定页面的多个块可分布在系统中的多个存储器控制器上。页面可为虚拟存储器系统中的存储器分配单位。也就是说,当将内存分配给应用程序或其他进程/线程时,内存是以页面为单位分配的。虚拟存储器系统从应用程序所使用的虚拟地址和存储器地址空间中的物理地址创建翻译,这识别存储器设备F28中的位置。页面大小因实施方案而异。例如,可使用F16千字节(16kB)页面大小。可使用更小或更大的页面大小(例如,4kB、8kB、1兆字节(MB)、4MB等)。在一些实施方案中,系统中同时支持多个页面大小。通常,页面与页面大小的边界对齐(例如,16kB的页面被分配在16kB的边界上,使得最低有效的F14个地址位形成页面内的偏移,并且剩余的地址位识别页面)。
给定页面被划分成的块数可与系统中的存储器控制器和/或存储器通道的数量相关。例如,块数可等于存储器控制器的数量(或存储器通道的数量)。在这样的实施方案中,如果页面中的所有数据都被访问,则可向每个存储器控制器/存储器通道发送相等数量的存储器请求。其他实施方案可具有的块数等于存储器控制器数量的倍数,或者等于存储器控制器数量的分数(例如,2的幂次分数),使得页面分布在存储器控制器的子集上。
在一个实施方案中,MLC寄存器可被编程为将页面的相邻块映射到在系统的SOCF10内物理上彼此远离的存储器控制器。因此,访问页面的连续块的访问模式可分布在系统上,利用通信结构的不同部分,并且以最小的方式相互干扰(或者可能根本不干扰)。例如,对相邻块的存储器请求可通过通信结构采取不同的路径,从而不会消耗相同的结构资源(例如,互连件F20A-F20B的部分)。也就是说,路径可至少部分不重叠。在一些情况下,路径可完全不重叠。下文关于图57提供了有关存储器访问的分布的附加细节。最大化存储器访问的分布可通过减少总等待时间和增加带宽利用率来提高系统的整体性能。另外,由于类似的性能可发生在任何P集群F14A-F14B中的任何类似的处理器上,因此可实现将进程调度到处理器的灵活性。
MLC寄存器F22A-F22H、F22J-F22N、F22P可独立地指定地址位,这些地址位被散列以针对给定的存储器地址选择系统中的每个粒度级别。例如,第一粒度级别可选择存储器请求被路由到的半导体管芯。第二粒度级别可选择切片,该切片可为一组存储器控制器(例如,上面的4个存储器控制器FF12A-12B和F12E-F12F可形成切片,而下面的4个存储器控制器F12C-F12D和F12F-F12G可形成另一个切片)。其他粒度级别可包括选择“侧面”(图1中的东或西),以及切片内的一行。存储器控制器F12A-F12H内可存在附加的粒度级别,最终导致选定的存储器设备F28(并且在一个实施方案中,可能是设备F28内的体组和体)。在各种实施方案中,可支持任何数量的粒度级别。例如,如果包括多于两个管芯,则可存在比管芯级别更粗的一个或多个粒度级别,以该粒度级别选择管芯组。
每个粒度级别的地址位的独立规范可在系统中提供显著的灵活性。另外,对SOCF10本身的设计的改变可通过使用MLC寄存器中的不同编程来管理,并且因此存储器系统和/或互连件中的硬件不需要改变来适应地址到存储器设备的不同映射。此外,MLC寄存器中的可编程性可允许在包括SOC F10的给定产品中减少存储器设备F28,从而在该产品中不需要全部存储器设备F28的情况下降低成本和功耗。
在一个实施方案中,每个粒度级别是二进制确定:来自散列的二进制0的结果选择该级别的一个结果,而来自散列的二进制1的结果选择另一个结果。散列可为对针对通过编程MLC寄存器的级别选择的输入位的任何组合逻辑运算。在一个实施方案中,散列可为异或缩位,其中地址位彼此异或,从而产生二进制输出。其他实施方案可产生多位输出值以在多于两个结果中进行选择。
给定存储器控制器F12A-F12H中的内部缓冲器F26可被配置为存储大量存储器请求。内部缓冲器F26可包括诸如事务表的静态缓冲器,该静态缓冲器跟踪给定存储器控制器F12A-F12H中正在处理的各种存储器请求的状态以及请求在被处理时可流经的各种流水线阶段。由请求访问的存储器地址可为描述该请求的数据的重要部分,并且因此可为存储请求以及通过给定存储器控制器F12A-F12H内的各种资源移动请求的功耗的重要组成部份。在一个实施方案中,存储器控制器F12A-F12H可被配置为从用于确定目标存储器控制器的每组地址位(对应于每个粒度级别)中丢弃地址位。在一个实施方案中,剩余的地址位,连同请求在目标存储器控制器处的事实可用于在需要时恢复丢失的地址位。在一些实施方案中,所丢弃的位可为不包括在对应于任何其他粒度级别的任何其他散列中的地址位。由于操作是独立的,因此从其他级别中排除所丢弃的位可允许并行恢复所丢弃的位。如果给定的所丢弃的位没有从其他级别中排除,则该所丢弃的位可首先被恢复,然后用于恢复其他所丢弃的位。因此,排除可能是对恢复的优化。其他实施方案可能不需要恢复原始地址,并且因此所丢弃的位不需要对每个散列是唯一的,或者在不实施排除的情况下可以串行方式恢复位。剩余的地址位(没有所丢弃的位)可形成紧凑管道地址,该管道地址可在存储器控制器内部用于处理。不需要丢弃的地址位,因为耦接到给定存储器控制器F12A-F12H的存储器设备F28中的内存量可使用紧凑管道地址来唯一寻址。在一个实施方案中,MLC寄存器F22A-F22H、F22J-FF22N和F22P可包括可编程的寄存器以识别丢弃位。
图56中的SOC F10包括特定数量的存储器控制器F12A-F12H、P集群F14A-F14B、GPUF16A-F16B和I/O集群F18A-F18B。通常,根据需要,各种实施方案可包括任何数量的存储器控制器F12A-F12H、P集群F14A-F14B、GPU F16A-F16B和I/O集群F18A-F18B。如上所述,P集群F14A-F14B、GPU F16A-F16B和I/O集群F18A-F18B通常包括被配置为实施本文所述的针对每个部件的操作的硬件电路。类似地,存储器控制器F12A-F12H通常包括硬件电路(存储器控制器电路)来实施本文所述的针对每个部件的操作。互连件F20A-F20B和其他通信结构通常包括用于在其他部件中传输通信(例如,存储器请求)的电路。互连件F20A-F20B可包括点对点接口、共享总线接口和/或一个或两个接口的分层结构。该结构可为电路交换的、分组交换的等。
图57是示出了对于一个实施方案的多个存储器控制器和SOC管芯上的物理/逻辑布置的一个实施方案的框图。针对SOC F10的在图57中示出为管芯0和管芯1(例如,由短虚线30分开)的两个实例示出了存储器控制器F12A-F12H。管芯0可为虚线30上方例示的部分,而管芯1可为虚线30下方的部分。给定管芯上的存储器控制器F12A-F12H可基于存储器控制器F12A-F12H的物理位置被划分为切片。例如,在图57中,切片0可包括物理上位于管芯0或管芯1的一半上的存储器控制器F12A-F12B和F12E-F12F。切片1可包括物理上位于管芯0或管芯1的另一半上的存储器控制器F12C-F12D和F12G-F12H。管芯上切片由图57中的虚线32界定。在切片内,存储器控制器F12A-F12H可基于切片中的物理位置被划分为行。例如,管芯0的切片0在图56中被示出为包括两行,即行0中虚线34上方的物理上定位在切片0占据的一半区域上的存储器控制器F12A和F12E。切片1行1的存储器控制器F12B和F12F物理上定位在切片0占据的另一半区域上,在切片0占据的另一半区域上的虚线34之下。其他切片可类似地被划分为行。另外,给定存储器控制器F12A-F12H可经由西互连件F20A或东互连件F20B到达。
另外,为了识别存储器地址所映射到的给定管芯0或1上的给定存储器控制器F12A-F12H,存储器地址可以多个粒度级别进行散列。在该实施方案中,级别可包括管芯级别、切片级别、行级别和侧面级别(东或西)。管芯级别可指定多个集成电路管芯中的哪个集成电路管芯包括给定存储器控制器。切片级别可指定管芯内的多个切片中的哪个切片包括给定存储器控制器,其中管芯上的多个存储器控制器基于给定集成电路管芯上的物理位置被逻辑地划分为多个切片,并且给定切片包括管芯内的多个存储器控制器中的至少两个存储器控制器。在给定切片内,存储器控制器可基于管芯上的物理位置,并且更具体地给定切片内的物理位置被逻辑地划分为多个行。行级别可指定多个行中的哪一行包括给定存储器控制器。同样基于管芯中的物理位置,并且更具体地给定行内的物理位置,该行可被划分为多个侧面。侧面级别可指定给定行中的哪一行包括给定存储器控制器。
其他实施方案可基于存储器控制器12A-12H、管芯数量等包括更多或更少的级别。例如,包括多于两个管芯的实施方案可包括多个粒度级别来选择管芯(例如,在四管芯具体实施中,管芯组可用于对SOC 10对进行分组,并且管芯级别可在所选对中的管芯中进行选择)。类似地,每个管芯包括四个存储器控制器而不是8个存储器控制器的实施方式可消除切片级别或行级别中的一者。包括单个管芯而不是多个管芯的实施方式可消除管芯级别。
在每个粒度级别,基于地址位子集的散列进行二进制确定,以选择一个或另一个级别。因此,散列可对地址位进行逻辑运算,以生成二进制输出(一位,0或1)。任何逻辑函数都可用于散列。在一个实施方案中,例如,可使用异或(XOR)缩位,其中散列将地址位的子集异或在一起以产生结果。XOR缩位也可提供散列的可逆性。可逆性可允许恢复所丢弃的位,但是将二进制结果与未被丢弃的地址位(每级别一个所丢弃的位)进行异或处理。特别地,在一个实施方案中,被丢弃的地址位可从用于其他级别的地址位的子集中排除。散列中的其他位可在散列之间共享,但不是要所丢弃的位。虽然在该实施方案中使用了XOR缩位,但是其他实施方案可实施任何逻辑可逆的布尔运算作为散列。
图58是用于确定服务特定存储器地址的存储器控制器F12A-F12H(和管芯)(也就是说,特定存储器地址映射到的存储器控制器)的二元决策树的一个实施方案的框图。决策树可包括确定管芯(附图标记F40)、管芯上切片(附图标记F42)、切片中的行(附图标记F44)以及行中的侧面(附图标记F46)。在一个实施方案中,可存在附加的二元决策来指导在存储器控制器内处理存储器请求。例如,图58的实施方案可包括平面级别F48和管道级别F50。内部粒度级别可将存储器请求映射到存储受存储器请求影响的数据的具体存储器设备F28。也就是说,最精细的粒度级别可为映射到具体存储器设备F28的级别。存储器平面可为独立的,从而允许多个存储器请求并行进行。另外,包括在存储器控制器中的各种结构(例如,用于高速缓存先前在存储器设备F28中访问的数据的存储器高速缓存、诸如复制标签或目录的一致性控制硬件、各种缓冲器和队列等)可在平面中划分,并且因此存储器结构可以更小并且更容易的方式设计以满足给定操作频率下的时序等。
因此,对于给定大小的硬件结构,可通过并行处理和更高的可实现时钟频率来提高性能。在其他实施方案中,存储器控制器内也可有附加的内部粒度级别。
图58所示的二元决策树并不意味着对管芯级别F40、切片级别F42、行级别F44、侧面级别F46、平面级别F48和管道F50的确定是连续进行的。用于执行确定的逻辑可并行操作,选择地址位的集合并执行散列以生成所得的二进制决策。
返回到图57,映射到存储器控制器F12A-F12H和管芯0和1的地址的可编程性可在物理上远离的存储器控制器F12A-F12H中提供连续地址的分布。也就是说,例如,如果源正在访问存储器页面的连续地址,则存储器请求可分布在不同的存储器控制器上(以某种地址粒度)。例如,连续的高速缓存块(例如,对齐的64字节或128字节块)可被映射到不同的存储器控制器F12A-F12H。也可使用更小粒度的映射(例如,256字节、512字节或1千字节的块可映射到不同的存储器控制器)。也就是说,访问同一块中的数据的多个连续存储器地址可被路由到同一存储器控制器,然后接下来的多个连续存储器地址可被路由到不同的存储器控制器。
将连续块映射到物理上分布的存储器控制器F12A-F12H可能具有性能益处。例如,由于存储器控制器F12A-F12H彼此独立,因此如果访问完整的页面,则该组存储器控制器F12A-F12H中的可用带宽作为一个整体可被更充分地利用。另外,在一些实施方案中,通信结构中的存储器请求的路由可为部分不重叠或完全不重叠的。也就是说,对于部分不重叠路由,通信结构的作为一个存储器请求的路由的一部分的至少一个片段可能不是另一个存储器请求的路由的一部分,并且反之亦然。完全不重叠的路由可使用不同的、完全分开的结构部分(例如,没有段是相同的)。因此,通信结构中的流量可分散开,并且可能不会像流量可能会干扰的那样相互干扰。
因此,MLC寄存器F22A-F22H、F22J-F22N和F22P可用数据来编程,使得当第一地址和第二地址是在第二粒度级处的相邻地址时,电路系统将具有第一地址的第一存储器请求路由到多个存储器控制器中的第一存储器控制器并且
将具有第二地址的第二存储器请求路由到多个存储器控制器中的物理上远离第一存储器控制器的第二存储器控制器。在一个实施方案中,通过通信结构的第一存储器请求的第一路由和通过通信结构的第二存储器请求的第二路由完全不重叠。在其他情况下,第一路由和第二路由可能部分不重叠。一个或多个寄存器可编程有数据,该数据使得通信结构以将多个存储器请求分布到物理上远离的存储器控制器的模式将对于连续地址的多个存储器请求路由到多个存储器控制器中的不同存储器控制器。
例如,在图57中,管芯0和管芯1上的存储器控制器F12A-F12H被标记为MC0至MC15。从页面中的地址0开始,在MLC寄存器F22A-F22H、F22J-F22N和F22P的编程中限定的粒度级别的连续地址可首先访问MC0(管芯0中的存储器控制器F12A),然后是MC1(管芯1中的存储器控制器F12G),MC2(管芯1中的存储器控制器F12D),MC3(管芯0中的存储器控制器F12F),MC4(管芯1中的存储器控制器F12A),MC5(管芯0中的存储器控制器F12G),MC6(管芯0中的存储器控制器F12D),MC7(管芯1中的存储器控制器F12F)、MC8(管芯0中的存储器控制器F12C)、MC9(管芯1中的存储器控制器F12E)、MC10(管芯1中的存储器控制器F12B)、MC11(管芯0中的存储器控制器F12H)、MC12(管芯1中的存储器控制器F12C)、MC13(管芯0中的存储器控制器F12E)、MC14(管芯0中的存储器控制器F12B),然后是MC15(管芯1中的存储器控制器F12H)。如果第二粒度级别小于页面大小的1/N,其中N为系统中的存储器控制器的数量(例如,在该实施方案中为F16),则MC15后的下一个连续访问可返回到MC0。虽然更随机的访问模式可能导致存储器请求路由到物理上接近的存储器控制器,但是更常见的常规访问模式(即使涉及其中一个或多个存储器控制器以上文顺序被跳过的跨距)可很好地分布在系统中。
图59是示出了多个存储器位置配置寄存器F60和F62的一个实施方案的框图。通常,给定硬件代理中的寄存器F60可编程有数据,该数据识别哪些地址位以多个粒度级别中的一个或多个粒度级别被包括在散列中。在例示的实施方案中,寄存器F60可包括对应于先前描述的级别的管芯寄存器、切片寄存器、行寄存器、侧面寄存器、平面寄存器和管道寄存器,以及在存储数据的存储器设备F28内限定体组和体的体组(BankG)和体寄存器(对于DRAM存储器设备同时具有体组和体的实施方案)。应当注意,尽管在图59中针对每个粒度级别示出了分开的寄存器F60,但是根据需要,其他实施方案可将两个或更多粒度级别组合为单个寄存器内的字段。
管芯寄存器在一个实施方案中以分解图示出,而其他寄存器F60可类似。在例示的实施方案中,管芯寄存器可包括倒置字段F66和掩码字段F68。倒置字段F66可为具有指示倒置的设置状态和指示不倒置的清除状态的位(或者反之亦然,或者可使用多位值)。掩码字段F68可为对应于相应地址位的位字段。掩码位中的设置状态可指示相应的地址位被包括在散列中,而清除状态可指示相应的地址位从该粒度级别的散列中排除(或者反之亦然)。
倒置字段F66可用于指定选定地址位的散列结果要被倒置。该倒置可允许在确定存储器控制器时有附加灵活性。例如,对全零掩码进行编程会产生任何地址在该粒度级别的二进制0,从而每次都强制执行相同的决策方向。如果任何地址在给定粒度级别都需要二进制1,则可将掩码编程为全零,并且可设置倒置位。
MLC寄存器F22A-F22H、F22J-F22N和F22P中的每一者可包括寄存器F60的子集或全部,这取决于硬件代理和该硬件代理用来路由存储器请求的粒度级别。通常,如果需要,则给定硬件代理可采用下至体级别(图59中带波浪括号标记的“体”)的所有粒度级别。然而,一些硬件代理不需要实施那么多的粒度级别。例如,硬件代理可采用管芯、切片、行和侧面粒度级别,将存储器请求递送到位于目标管芯上的目标存储器控制器F12A-F12H(图59中带波浪括号标记的“MC”)。存储器控制器F12A-F12H可处理剩余散列级别。另一个硬件代理可具有到达给定存储器控制器F12A-F12H的两个路由,每个平面一个路由。因此,这种硬件代理可采用管芯、切片、行、侧面和平面寄存器(图59中带波浪括号标记的“平面”)。又另一个硬件代理可包括管芯、切片、行、侧面和平面粒度级别以及管道级别,从而识别所需通道(图59中带波浪括号标记的“通道”)。因此,第一硬件代理可被编程用于多个粒度级别中的第一数量,并且第二硬件代理可被编程用于多个粒度级别中的第二数量,其中第二数量不同于第一数量。
在其他实施方案中,可以不同于其他粒度级别的方式来指定体组、体和其他设备内粒度级别,并且因此可为不包括在寄存器F60中的单独限定的寄存器。在仍其他实施方案中,体组、体和其他设备内粒度级别可固定在硬件中。
可包括在一些MLC寄存器组F22A-F22H、F22J-F22N和F22P中的另一组寄存器是图59所示的丢弃寄存器F62。具体地,在一个实施方案中,丢弃寄存器F62可包括在存储器控制器F12A-F12H中的MLC寄存器F22F-F22H和F22J-F22N中。丢弃寄存器F62可包括用于每个粒度级别的寄存器,并且可被编程以识别与目标存储器控制器F12A-F12H要丢弃的该粒度级别相对应的地址位子集中的至少一个地址位。指定位是在对应寄存器F60中被指定为包括在该粒度级别的散列中的位的位之一。在一个实施方案中,被丢弃的地址位可被专门包括在该粒度级别的散列中(例如,被丢弃的地址位在寄存器F60中未以任何其他粒度级别指定)。包括在给定散列中的其他位可在其他粒度级别中共享,但是所丢弃的位对于给定粒度级别可能是唯一的。丢弃寄存器F62可以任何方式被编程以指示要被丢弃的地址位(例如,位数可被指定为十六进制数,或者位掩码可如图59所示使用)。位掩码可包括用于每个地址位的位(或者每个可选择的地址位,如果一些地址位不适合丢弃的话)。位掩码可为“独热”掩码,其中有且仅有一个设置位,该设置位可指示选定的丢弃位。在其他实施方案中,单个丢弃寄存器F62中的单个位掩码可为每个粒度级别指定丢弃位,并且因此可能不是独热掩码。
存储器控制器可经由丢弃寄存器F62编程以指定丢弃位。存储器控制器(并且更具体地,控制电路F24)可被配置为针对每个存储器请求生成内部地址(上文提及的“紧凑管道地址”,或简称为“紧凑地址”)以用于在内部缓冲器F26中的存储器控制器内部使用并且寻址存储器设备F28。可通过丢弃一些或所有指定的地址位,并将剩余的地址位一起移位来生成紧凑管道地址。
如先前所提及的,具有地址副本的大量内部缓冲器可通过移除不必要的地址位来节省功率。另外,利用可逆散列函数,可恢复所丢弃的位,以恢复完整的地址。给定存储器控制器F12A-F12H中的存储器请求的存在提供了给定粒度级别的散列的结果,并且用该粒度级别中包括的其他地址位来对结果进行散列化得到被丢弃的地址位。如果对请求的响应、出于一致性原因的窥探等而需要恢复完整地址,则恢复完整地址可能是有用的。
现在转向图60,示出了例示在启动/上电期间SOC的一个实施方案的操作的流程图。例如,图60所示的操作可由处理器执行的指令来执行(例如,被执行为初始化系统以执行操作系统的低级别启动代码)。另选地,图60所示的操作的全部或一部分可在启动期间由硬件电路系统执行。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在SOC F10中以组合式逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。
启动代码可识别SOC配置(例如,包括SOC F10实例、诸如包括较少存储器控制器F12A-F12H的部分SOC或系统支持的多个SOC设计中的一个SOC设计的SOC设计差异的一个或多个芯片、耦接到每个存储器控制器F12A-F12H的存储器设备F28等)(框F70)。识别配置通常可为在针对存储器请求确定目的地的数量(例如,系统中的存储器控制器F12A-F12H的数量、每个存储器控制器F12A-F12H中的平面的数量、在使用期间将被启用的存储器控制器F12A-F12H的数量等)的练习。给定存储器控制器F12A-F12H在使用期间可能是不可用的,例如,在存储器设备F28没有出现在给定存储器控制器F12A-F12H处,或在存储器设备F28中存在硬件故障的情况下不可用。在其他情况下,给定存储器控制器F12A-F12H在某些测试模式或诊断模式下可能不可用。识别配置还可包括确定可用的内存总量(例如,耦接到每个存储器控制器F12A-F12H的存储器设备F28的数量和存储器设备F28的容量)。
这些确定可能会影响要被映射到每个存储器控制器F12A-F12H的页面内的连续块的大小,该大小表示在存储器控制器F12A-F12H(和SOC F10实例,当提供多于一个实例时)间分散页面内的存储器请求与将请求分组到相同地址可能获得的效率之间的折衷。启动代码因此可确定要映射到每个存储器控制器F12A-F12H的块大小(框F72)。在其他模式下,可使用地址到存储器控制器F12A-F12H的线性映射(例如,将存储器控制器F12A-F12H上的存储器设备F28整体映射到存储器地址空间中的地址的邻接块),或者可使用在一个或多个粒度级别处交错并且在其他粒度级别处线性的混合。启动代码可确定如何对MLC寄存器F22A-F22H、F22J-F22N和F22P进行编程,以向存储器控制器F12A-F12H提供所需的地址映射(框F74)。例如,掩码寄存器F60可被编程为选择每个粒度级别的地址位,而丢弃位寄存器F62可被编程为选择针对每个粒度级别的丢弃位。
图61是示出了各种SOC部件针对存储器请求确定从针对该存储器请求的源部件到所识别的存储器控制器F12A-F12H的路由的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在SOC F10中以组合式逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。
该部件可将寄存器F60应用于存储器请求的地址,以确定诸如管芯、切片、行、侧面等各种粒度级别(框F76)。基于粒度级别的结果,部件可通过结构将存储器请求路由到所识别的存储器控制器F12A-F12H(框F78)。
图62是示出了存储器控制器F12A-F12H响应于存储器请求的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在SOC F10中以组合式逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。
存储器控制器F12A-F12H可使用平面、管道、体组和体掩码寄存器F60来识别存储器请求的平面、管道、体组和体(框F80)。例如,存储器控制器F12A-F12H可将来自对应寄存器F60的掩码与地址进行逻辑与处理,从而逻辑组合这些位(例如,XOR缩位)并且在指示的情况下倒置。存储器控制器F12A-F12H可使用来自丢弃寄存器F62的丢弃掩码以丢弃由每个粒度级别(例如,管芯、切片、行、侧面、平面、管道、体组和体)指定的地址位,并且可将剩余的地址位一起移位以形成紧凑管道地址(框F82)。例如,存储器控制器F12A-F12H可用丢弃掩码的逆的逻辑与来掩码地址,并且可将剩余的位一起移位。另选地,存储器控制器F12A-F12H可简单地将地址位一起移位,从而自然地丢弃所识别的位。存储器控制器F12A-F12H可执行指定的存储器请求(例如,读或写)(框F84),并且可响应于源(例如,如果写不是记入式写,则用读数据或写完成)。如果在处理期间出于响应或其他原因需要完整地址,则可从紧凑管道地址、每个级别的寄存器F60的内容以及对应于接收存储器请求的存储器控制器F12A-F12H的每个级别的已知结果中恢复完整地址(框F86)。
系统中的大量存储器控制器F12A-F12H以及耦接到存储器控制器F12A-F12H的大量存储器设备F28可为系统中功耗的重要来源。在操作期间的某些点,相对少量的存储器可能处于活跃使用中,并且当对那些切片的访问不频繁时,可通过禁用存储器控制器/存储器设备的一个或多个切片来节省功率。禁用切片可包括减少切片中的功耗并且使得切片不可用直到切片被重新启用的任何机制。在一个实施方案中,当切片被禁用时,数据可由存储器设备F28保留。因此,存储器设备F28的电源可保持激活,但存储器设备F28可被置于较低功率模式下(例如,DRAM设备可置于自刷新模式下,其中设备内部生成刷新操作以保留数据,但无法从SOC F10中访问,直到退出自刷新模式)。切片中的存储器控制器F12A-F12H也可处于低功率模式下(例如,时钟门控)。切片中的存储器控制器F12A-F12H可为电源门控的,并且因此可在启用切片时和禁用后上电和重新配置。
在一个实施方案中,软件(例如,操作系统的一部分)可监测系统中的活动,以确定一个或多个切片是否可能被禁用。该软件还可监测在禁用时间期间访问切片中的数据的尝试,并且可根据需要重新启用切片。此外,在一个实施方案中,监测器软件可在禁用切片之前检测到切片中以大于指定速率的速率访问的数据页面,并且可将这些页面复制到不会被禁用的另一个切片(将这些页面的虚拟地址重映射到物理地址转换)。因此,切片中的一些页面可保持可用,并且可在切片被禁用时被访问。重新分配正被访问的页面并禁用切片的过程在本文中称为“折叠”切片。重新启用折叠切片可被称为“展开”切片,并且重新启用的过程可包括重映射先前重新分配的页面,以将页面分散在可用切片上(并且如果在切片被折叠时间期间修改重新分配的页面中的数据,则将数据复制到重新分配的物理页面)。
图63是示出了监测系统操作以确定是否重叠还是展开存储器的一个实施方案的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。包括由SOCF10上的一个或多个处理器执行的多个指令的一个或多个代码序列(“代码”)可导致包括如下文所示操作的操作。例如,存储器监测器和折叠/展开代码可包括指令,当这些指令被SOCF10上的处理器执行时可使得包括SOC的系统执行包括图63所示操作的操作。
存储器监测器和折叠/展开代码可监测系统中的情况以识别折叠切片的机会或指示折叠切片将被展开的活动(框F90)。可被监测的活动可包括例如对给定切片中包括的各种页面的访问速率。如果给定切片内的页面没有以高于阈值速率的速率访问(或者大量页面没有以高于阈值速率的速率访问),则给定切片可能是折叠的候选,因为该切片经常是空闲的。SOC内的处理器中的功率状态可为由存储器监测器和折叠/展开代码监测的另一个因素,因为处于较低功率状态的处理器可能不太频繁地访问存储器。特别地,处于休眠状态的处理器无法访问存储器页面。可监测SOC F10中的通信结构上所消耗的带宽。也可监测其他系统因素。例如,由于系统检测到供应电力的蓄电池达到低充电状态,存储器可能被折叠。另一个因素可能是电源的变化,例如,系统连接到连续的、有效的无限电源(例如,壁式插座)并且不插电的,因此该系统现在依赖于蓄电池电源。另一个因素可为系统温度过载、电源过载等,折叠存储器可减少热或电负载。在各种实施方案中,可监测指示系统中活动级别的任何一组因素。
如果该活动指示一个或多个存储器切片可被折叠而不会对性能产生显著影响(决策框F92,“是”分支),则存储器监测器和折叠/展开代码可启动至少一个切片的折叠(框F94)。如果该活动指示对存储器的需求可能会增加(或可能很快增加)(决策框F96,“是”分支),则存储器监测器和折叠/展开代码可启动展开(框F98)。
在一个实施方案中,切片的折叠可为渐进的并且分阶段发生。图64是示出了切片的逐渐折叠的一个实施方案的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。由SOC F10上的一个或多个处理器执行的代码可使得包括如下文所示的操作的操作。
折叠过程可从确定要折叠的切片开始(框F100)。可通过确定切片是切片中最不频繁访问的切片或最不频繁访问的切片中的切片来选择切片。可随机选择切片(在一个实施方案中,不包括可被指定为保持活动的切片)。可基于切片中缺少有线和/或写入时复制页面(下文讨论)来选择切片,或者切片可具有比其他切片更少的有线和/或写入时复制页面。可基于切片与其他折叠切片的相对独立性(例如,物理距离、在通信结构中缺少与其他折叠切片的共享片段等)来选择切片。任何一个或多个因素可用于确定切片。切片可被标记为折叠。在一个实施方案中,折叠过程可禁用2的幂的切片,从而匹配用于散列的二元决策树。至少一个切片可被指定为不可展开的,并且可保持活动以确保数据在存储器系统中可访问。
启动折叠可包括禁止向折叠切片中的物理页面分配新的内存。因此,存储器监测器和折叠/展开代码可与虚拟存储器页面分配器代码进行通信,该虚拟存储器页面分配器代码为尚未被映射到存储器中的虚拟页面分配物理页面,以使得虚拟存储器页面分配器停止分配切片中的物理页面(框F102)。停用/禁用还可能潜在地等待切片中的有线页面变成无线的。有线页面可为不允许被虚拟存储器系统页出的页面。例如,内核代码的页面和相关数据结构的页面可用导线连接。当分配写入时复制页面时,该写入时复制页面可被分配给保持活动并且因此不被分配给折叠切片的切片。写入时复制页面可用于允许独立代码序列(例如,进程或一个或多个进程内的线程)共享页面,只要没有独立代码序列写入页面。当独立的代码序列确实生成写时,该写可使得虚拟存储器页面分配器分配新的页面并将数据复制到新分配的页面。
因此,虚拟存储器页面分配器可知道哪些物理页面被映射到哪些切片。在一个实施方案中,当使用折叠时,可采用地址到存储器的线性映射,而不是将每个页面的块分散在不同的存储器控制器/存储器上。另选地,地址的映射可与给定切片相连,但是页面可在切片内的存储器控制器/存储器通道中分散。在一个特定实施方案中,地址空间可作为单个连续块被映射到每个切片(例如,一个切片可被映射到地址0到slice_size-1,另一个切片可被映射到地址slice_size到2*slice_size-1等)。其他机制可使用页面边界之间的交错,或者将页面映射到可折叠/展开为单元的有限数量的切片,等等。
在切片被折叠的过渡期间,可在一定时间段内跟踪选定(折叠)切片中的页面,以确定哪些页面被主动访问(框F104)。例如,页面表转换中的访问位可用于跟踪哪些页面被访问(周期性地检查访问位并且在检查时清除,使得可检测到新的访问)。被发现是活动的和脏的页面(数据自加载到存储器中后已经被修改)可被移动到将保持活动的切片。也就是说,页面可被虚拟存储器页面分配器重映射到不同的切片(框F106)。被发现是活动的但干净的页面(在初始加载到存储器后未被修改)可被可选地重映射到不同的切片(框F108)。如果活动但干净的页面没有被重映射,则在切片被折叠后对页面的访问可能导致切片被再次启用/激活,从而可能限制可实现的功率节省。因此,一般意图可能是主动访问的页面不保留在禁用/折叠切片中。
一旦上文完成,切片中的存储器设备F28(例如,DRAM)可被主动置于自刷新(框F110)。另选地,存储器设备F28可自然地下降到自刷新,因为访问不随时间发生,依靠内置于存储器控制器F12A-F12H硬件中的功率管理机制以引起到自刷新的转变。根据那些设备的限定,其他类型的存储器设备可被主动置于低功率模式(或者可被允许自然下降)。任选地,切片中的存储器控制器F12A-F12H可由于缺少流量而被降低到较低功率状态,但是如果存储器请求发生,则可继续监听和响应存储器请求(框F112)。
在一个实施方案中,如果不需要折叠切片中的数据的置信度足够高,则可在当前折叠之上应用硬折叠作为更积极的模式。也就是说,如果长时间无法访问折叠切片,则存储器设备F28实际上可能被断电。
展开(重新启用或激活)切片可为渐进的,也可为快速的。当正在运行的应用程序所需的活动内存或带宽的量不断增加,并且接近当前活动切片可能无法满足需求并且因此限制性能的阈值时,可能会发生渐进展开。快速展开可能发生在大量存储器分配或带宽需求显著增加的情况下(例如,在显示器接通,启动新的应用程序,用户参与系统,诸如解锁系统或通过按下按钮或其他输入设备与系统交互等)。
图65是示出了展开存储器切片的一个实施方案的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。由SOC F10上的一个或多个处理器执行的代码可使得包括如下文所示的操作的操作。
可选择要展开的切片(框F120),或诸如上文讨论的2的幂数量的切片的多个切片。可使用用于选择一个或多个切片的任何机制。例如,如果发生对折叠切片的存储器访问,则可选择该切片。可随机选择切片。可基于切片与其他非折叠切片的相对独立性(例如,物理距离、在通信结构中缺少与非折叠切片的共享片段等)来选择切片。任何因素或因素的组合可用于选择用于折叠的切片。
可任选地增加展开切片中的存储器控制器F12A-F12H的功率状态,和/或可主动地使DRAM退出自刷新(或者对于其他类型的存储器设备F28,退出其他低功率模式)(框F122)。另选地,当展开的存储器切片内的物理页面到达时,响应于存储器请求的到达,存储器控制器F12A-F12H和存储器设备F28可自然地转变到更高的性能/功率状态。存储器监测器和折叠/展开代码可通知虚拟存储器页面分配器选定存储器切片内的物理页面分配可用于分配(框F124)。随着时间的推移,虚拟存储器页面分配器可将选定存储器切片内的页面分配给新请求的页面(框F126)。另选地或除了分配新请求的页面之外,虚拟存储器页面分配器可将先前在选定存储器切片内分配的页面重新定位回到选定存储器切片。在其他实施方案中,虚拟存储器页面分配器可快速地将页面重新定位到选定切片。
切片可如先前关于图57所描述的那样被限定(例如,切片可为比行更粗的颗粒)。在其他实施方案中,出于存储器折叠的目的,切片可为下至单个存储器通道(例如,单个存储器设备F28)的任何大小。其他实施方案可将切片限定为一个或多个存储器控制器F12A-F12H。通常,切片是多个页面被映射到的物理存储器资源。在一个实施方案中,映射可根据MLC寄存器F22A-F22H、F22J-F22N和F22P的编程来确定。在另一个实施方案中,映射可以硬件的形式固定,或可以另一种方式编程。
在一个实施方案中,对切片大小的选择可部分地基于系统中感兴趣的低功率用例所使用的数据容量和带宽。例如,可选择切片大小,使得单个切片可维持系统的主显示器,并且具有用于容纳操作系统和少量后台应用程序的存储器容量。用例可能包括例如看电影、播放音乐、打开屏幕保护程序,但在后台获取电子邮件或下载更新。
图66是示出用于折叠存储器切片(例如,用于禁用或停用切片)的方法的一个实施方案的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。由SOC F10上的一个或多个处理器执行的代码可使得包括如下文所示的操作的操作。
该方法可包括检测是否要禁用存储器系统中的多个存储器切片中的第一存储器切片(决策框F130)。如果检测指示第一存储器切片将不被禁用(决策框F130,“否”分支),则该方法可完成。如果检测指示第一存储器切片将被禁用,则该方法可继续(决策框F130,“是”分支)。基于检测到第一存储器切片将被禁用,该方法可包括将第一存储器切片内的物理页面子集复制到多个存储器切片中的另一个存储器切片。可以大于阈值速率的速率访问物理页面子集中的数据(框F132)。该方法可包括基于检测到第一存储器切片将被禁用,将对应于物理页面的子集的虚拟地址重映射到另一个存储器切片(框F134)。该方法还可包括基于检测到第一存储器切片将被禁用而禁用第一存储器切片(框F136)。在一个实施方案中,禁用第一存储器切片可包括在自刷新模式下,主动将一个或多个动态存取存储器(DRAM)放置在第一存储器切片中。在另一个实施方案中,禁用第一存储器切片可包括由于无法访问而允许位于第一存储器切片中的一个或多个动态存取存储器(DRAM)转变到自刷新模式。在一个实施方案中,存储器系统包括多个存储器控制器,并且物理存储器资源包括多个存储器控制器中的至少一个存储器控制器。在另一个实施方案中,存储器系统包括多个存储器通道,并且给定的动态存取存储器(DRAM)耦接到多个存储器通道中的一个存储器通道。给定存储器切片包括多个存储器通道中的至少一个存储器通道。例如,在一个实施方案中,给定存储器切片是多个存储器通道中的一个存储器通道。
在一个实施方案中,确定第一存储器切片将被禁用可包括:检测到对第一存储器切片的访问速率低于第一阈值;以及识别比第二阈值更频繁访问的物理页面的子集。
在一个实施方案中,该方法还可包括基于检测到访问速率低于第一阈值,禁用将对应于第一存储器切片的多个物理页面分配给存储器分配器中的虚拟地址。该方法还可包括在禁用多个物理页面的分配之后执行识别。在一个实施方案中,复制包括将来自子集的包括已经在存储器系统中修改的数据的一个或多个物理页面的数据复制到另一存储器切片。在一些实施方案中,复制还包括在复制来自一个或多个物理页面的数据之后,复制来自子集的剩余物理页面的数据。
根据上文所述,系统可包括一个或多个存储器控制器,该一个或多个存储器控制器耦接到形成存储器系统的一个或多个存储器设备,其中存储器系统包括多个存储器切片,并且其中多个存储器切片中的给定的存储器切片是多个物理页面被映射到的物理存储器资源。该系统还可包括一个或多个处理器;以及非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储多个指令,该多个指令当由一个或多个处理器执行时使得系统执行包括如上文强调的方法的操作。非暂态计算机可读存储介质也是实施方案。
图67是示出用于散列地址以将对该地址的存储器请求路由到目标存储器控制器并且在一些情况下路由到目标存储器设备和/或存储器设备中的体组和/或体的方法的一个实施方案的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。SOCF10的各种部件(诸如源硬件代理、通信结构部件和/或存储器控制器部件)可被配置为执行方法的部分或全部。
该方法可包括生成具有存储器地址空间中的第一地址的存储器请求,该存储器地址空间被映射到具有多个存储器控制器的系统中的存储器设备,该多个存储器控制器物理地分布在一个或多个集成电路管芯上(框F140)。在一个实施方案中,存储器地址空间中的给定存储器地址唯一地识别耦接到多个存储器控制器中的一个存储器控制器的存储器设备中的一个存储器设备中的存储器位置,存储器地址空间内的给定页面被划分为多个块,并且给定页面的多个块分布在多个存储器控制器上。该方法还可包括散列来自第一地址的独立指定的地址位集合,以将存储器请求引导到多个存储器控制器中的第一存储器控制器,其中独立指定的地址位集合以多个粒度级别定位第一存储器控制器(框F142)。该方法仍还可包括基于散列将存储器请求路由到第一存储器控制器(框F144)。
在一个实施方案中,一个或多个集成电路管芯是多个集成电路管芯;多个粒度级别包括管芯级别;并且管芯级别指定多个集成电路管芯中的哪个集成电路管芯包括第一存储器控制器。在一个实施方案中,基于给定集成电路管芯上的物理位置,将给定集成电路管芯上的多个存储器控制器逻辑地划分为多个切片;多个存储器控制器中的至少两个存储器控制器被包括在多个切片中的给定切片中;多个粒度级别包括切片级别;并且切片级别指定多个切片中的哪个切片包括第一存储器控制器。在一个实施方案中,基于给定集成电路管芯上的物理位置,将给定切片中的至少两个存储器控制器逻辑地划分为多个行;多个粒度级别包括行级别;并且行级别指定多个行中的哪一行包括第一存储器控制器。在一个实施方案中,多个行包括基于给定集成电路管芯上的物理位置的多个侧面;所个粒度级别包括侧面级别;并且侧面级别指定多个行中的给定行的哪个侧面包括第一存储器控制器。在一个实施方案中,生成存储器请求的多个硬件代理中的给定硬件代理包括一个或多个寄存器,并且该方法还包括用数据编程一个或多个寄存器,该数据识别哪些地址位以多个粒度级别中的一个或多个粒度级别被包括在散列中。在一个实施方案中,多个硬件代理中的第一硬件代理可被编程用于多个粒度级别中的第一数量,并且多个硬件代理中的第二硬件代理可被编程用于多个粒度级别中的第二数量,其中第二数量不同于第一数量。在一个实施方案中,多个存储器控制器中的给定存储器控制器包括一个或多个寄存器,该一个或多个寄存器可编程有数据,该数据识别哪些地址位被包括在多个粒度级别和给定存储器控制器内部的一个或多个其他粒度级别中。
图68是示出了用于丢弃地址位以在存储器控制器中形成紧凑管道地址的方法的一个实施方案的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。存储器控制器可被配置为执行方法的部分或全部。
该方法可包括在系统中多个内存控制器中的第一个内存控制器处接收包括多个地址位的地址。该地址被路由到第一存储器控制器,并且由第一存储器控制器控制的多个存储器设备中的第一存储器设备是基于多个地址位的集合的多个散列进行选择的(框F150)。该方法还可包括丢弃多个地址位中的多个地址位(框F152)。多个地址位中的多个地址位中的给定位被包括在多个散列中的一个散列中并且从多个散列中的剩余散列中排除。该方法可包括使多个地址位中的剩余地址位移位以形成在第一存储器控制器内使用的紧凑地址(框F154)。
在一个实施方案中,该方法还可包括基于在多个散列中使用的多个地址位的集合以及对第一存储器控制器的识别来恢复多个地址位中的多个地址位。在一个实施方案中,该方法还可包括基于紧凑地址访问由存储器控制器控制的存储器设备。在一个实施方案中,该方法还可包括对多个配置寄存器编程以识别被包括在多个散列中的相应散列中的多个地址位的集合中。在一个实施方案中,该编程可包括用识别多个地址位的集合的位掩码编程多个配置寄存器。在一个实施方案中,该方法还包括对多个配置寄存器编程以识别该多个地址位中的被丢弃的该多个地址位。在一个实施方案中,编程包括用独热位掩码对多个配置寄存器进行编程。
来自公共数据库的多次流片
集成电路包括集成到单个半导体基板或“芯片”上的各种数字逻辑电路和/或模拟电路。存在多种集成电路,从固定功能硬件到微处理器到包括处理器、集成存储器控制器和形成可以是系统中心的高度集成芯片的各种其他部件的片上系统(SOC)。
给定集成电路可以设计用于各种系统(例如,“现成”部件)中。给定集成电路可以包括允许其在各种系统中使用的一组部件,但是特定系统可能不需要所有部件或所有部件的完整功能和/或性能。额外的部件/功能实际上被浪费,导致沉没成本和系统中的功率(至少,泄漏功率)消耗。对于至少有时在有限电源(例如,电池)而不是壁式插座的基本上无限的电源上操作的便携式系统,电源的低效使用导致有限电源的低效使用,并且甚至导致针对有限电源的充电需求之间的不可接受的短时间。
因此,将集成电路功能与给定系统的需求匹配对于生产高质量产品是重要的。然而,用于许多不同系统的定制集成电路设计也表示在针对每个集成电路的设计和验证工作方面的成本。
在实施方案中,集成电路的方法和设计支持基于通用设计数据库的集成电路的不同具体实施的多于一个流片,以及最终制造。设计可以支持完整实例,其中在设计中包括的所有电路部件包括在所制造的芯片中,以及包括所制造的芯片中的电路部件的子集的一个或多个部分实例。部分实例可以在较小的管芯上制造,但是部分实例的电路部件及其物理布置和布线可以与完整实例内的对应区域相同。也就是说,可以通过从设计数据库中去除完整实例的区域的一部分和其上的部件来创建部分实例以生产该部分实例。设计、验证、合成、执行定时分析、执行设计规则检查、执行电分析等的工作可以跨完整实例和部分实例进行共享。另外,在实施方案中,适用于具有不同计算要求、形状因数、成本结构、电源限制等的各种产品的集成电路芯片可以由相同的设计过程支持。
例如,完整实例可以包括一定数量的计算单元(例如,中央处理单元(CPU)处理器、图形处理单元(GPU)、附接到CPU处理器的协处理器、其他特殊处理器,诸如数字信号处理器、图像信号处理器等)。部分实例可以包括更少的计算单元。完整实例可以经由多个存储器控制器包括一定量的存储器容量,并且部分实例可以包括支持较低存储器容量的更少的存储器控制器。完整实例可以包括一定数量的输入输出(I/O)设备和/或接口(也称为外围设备/接口或简称为外围设备)。部分实例可以具有更少的I/O设备/接口。
在实施方案中,部分实例还可以包括短线区域。短线区域可以向包括在部分实例中的电路部件提供针对输入信号的终端,其中完整实例中的针对那些输入信号的源极是去除的区域中的电路部件,并且因此在不存在短线的情况下不连接该输入信号。从电路部件到去除的区域中的电路部件的输出信号可以至少到达短线的边缘并且可以不连接。在实施方案中,短线区域可以包括金属化以根据需要将输入信号连接到电源(数字一)或地线(数字零)线(例如,电力网和接地网),以在部分实例中提供电路部件的适当功能。例如,部分实例中的电源管理器块可以从去除的电路部件接收输入,并且输入可以电源或地连接,以指示去除的电路部件被断电、空闲等,使得电源管理器块在改变电源状态时不等待去除的电路部件的响应。在实施方案中,短线区域可以仅包括金属化(布线)。也就是说,短线区域可以不包括有源电路系统(例如,形成在半导体基板中的晶体管)。金属化层(或金属层)形成在半导体基板的表面区域上方,以在有源电路元件之间提供导线互连(或在短线区域中提供数字一/零值)。以这种方式管理部分实例设计可以使部分实例的验证量相对于完整实例中的工作量最小化。例如,可能不需要额外的定时验证,其他物理设计验证可能是最小的等。
图69是示出集成电路的完整实例和若干部分实例的一个实施方案的框图。集成电路的完整实例由花括号G12(“芯片1”)指示,并且集成电路的部分实例由花括号G14和G16(“芯片2”和“芯片3”)指示。该完整实例,芯片1,包括多个电路部件G10A-G10D。用于完整实例的半导体基板芯片或管芯的表面上的电路部件G10A-G10D的物理位置(附图标号G18)由电路部件10A-10D的放置指示。图69是简化的表示,并且可以存在更多的电路部件且物理布置可能比图69中所示的更多样化。电路部件G10A-G10D之间的各种互连用于图69中未示出的部件间通信。可以在半导体基板表面上方的金属化层中实现互连以及电路部件G10A-G10D本身内的互连。
每个部分实例对应于图69中的“分割线”G20A-G20B。该分割线从包括在各部分实例中的电路部件G10A-G10D中划分包括在完整实例中的那些电路部件G10A-G10D。因此,例如,芯片2由分割线G20A定义,并且包括电路部件G10A-G10C但不包括电路部件G10D。类似地,芯片3由分割线G20B定义,并且包括电路部件G10A-G10B但不包括电路部件G10C-G10D。分割线可以在设计数据库中定义,或者可以是设计过程的一部分,但是可能不在设计数据库中明确地表示。
通常,设计数据库可包括存储电路部件G10A-G10D及其互连件的描述的多个计算机文件。设计数据库可以包括例如以硬件描述语言(HDL)诸如Verilog、VHDL等表示的电路的寄存器传输级(RTL)描述。设计数据库可以包括来自电路编辑器工具的电路描述,用于直接实现而不是使用标准单元的库从RTL描述合成的电路。设计数据库可以包括由合成产生的网格列表,描述标准单元实例及其互连。设计数据库可以包括电路部件及其互连的物理布局描述,并且可以包括流片描述文件,其中根据可以用于创建针对集成电路制造工艺的掩模的几何形状和层来描述该集成电路。流片描述文件可以用图形设计系统(GDSII)格式、开放艺术品系统交换标准(OASIS)格式等表示。上述任何组合可以包括在设计数据库中。
分割线G20A-G20B将芯片G18区域划分为子区域,电路部件G10A-G10D的子集在这些子区域内被实例化。例如,分割线G20B将芯片G18区域划分为第一子区域(在如图69中定向的线G20B上方)和第二子区域(在线G20B下方)。分割线G20A进一步将第二子区域划分为第三子区域和第四子区域,其中第三子区域与第一子区域相邻或邻接第一子区域。第一子区域和第二子区域的组合表示完整实例。单独的第一子区域(以及短线区域)表示最小部分实例(芯片3)。在该示例中,第一子区域和第三子区域表示其他部分实例(芯片2)。
电路部件在给定子区域内的物理位置以及在电路部件内和电路部件之间的互连,可能不会在完整实例和部分实例之间改变。因此,当完整实例内的电路部件满足针对完整实例的成功制造和使用的定时要求、物理设计要求和电气要求时,则针对最大部分的部分实例也应满足相同的要求。可能需要验证短线区域内的物理设计要求和电气要求,并且可以将某些物理设计要求应用于如下文所讨论的子区域,诸如拐角排除区、受控塌缩芯片连接(C4)凸块排除区等。然而,在一个实施方案中,一旦整个实例被验证并且准备好流片,部分实例的流片可以最小工作量进行。
图70至图72示出了图69中所示的针对实施方案的部分实例和完整实例。图72是完整实例,并且因此包括电路部件G10A-G10D。图70和图71分别对应于芯片3和芯片2。因此,图70中的部分实例包括来自第一子区域的电路部件G10A-G10B以及短线区域G22(短线1)。图71中的部分实例包括来自第一子区域的电路部件G10A-G10B、来自第二子区域的电路部件G10C以及短线区域G24(短线2)。
电路部件可以是被布置成实现IC的特定部件的任何一组电路(例如,处理器,诸如CPU或GPU、处理器或GPU的集群、存储器控制器、通信结构或其部分、外围设备或外围接口电路等)。给定电路部件可以具有层级结构。例如,处理器集群电路部件可以具有处理器的多个实例,该多个实例可以是放置在该集群所占据的区域内的相同处理器设计的复制品。
根据该描述,一种方法可以包括在对应于集成电路设计的设计数据库中定义在半导体基板上制造时集成电路设计要占据的区域。例如,该区域可以是如图69和图72中所示的完整实例的区域。该方法还可以包括定义分割线(其可以是多条分割线中的一条分割线)。分割线可以将区域划分为第一子区域和第二子区域,其中该第一子区域和该第二子区域的组合表示完整实例。第一子区域和短线区域表示集成电路的部分实例,该部分实例包括比完整实例更少的电路部件。在设计数据库中,在第一子区域中定义包括在集成电路的完整实例和部分实例两者中的多个电路部件的物理位置。该多个电路部件在第一子区域内的相对位置和该多个电路部件在第一子区域内的互连在完整实例和部分实例中可以保持不变。在第二子区域中定义包括在完整实例但从部分实例中排除的另一多个电路部件的物理位置。在设计数据库中还定义了短线区域。短线区域可以包括针对原本横穿第一子区域与第二子区域之间的分割线的导线的终端。短线区域可以确保在部分实例中不存在第二子区域的情况下第一子区域中的多个电路部件的正确操作。可以使用第一子区域和第二子区域产生针对完整实例的第一数据集,该第一数据集定义用于制造完整实例的完整实例。还可以使用第一子区域和短线区域来产生针对部分实例的第二数据集。第二数据集定义用于制造部分实例的部分实例。在实施方案中,该方法还可以包括在第二子区域中定义第二分割线,将该第二子区域划分为第三子区域和第四子区域。第三子区域可以与第一子区域相邻,并且第三子区域和第一子区域可以表示集成电路的第二部分实例。该方法还可以包括使用第一子区域、第三子区域和第二短线区域来产生针对第二部分实例的第三数据集。第三数据集定义用于制造第二部分实例的第二部分实例。
如上所述,短线区域可以不包括电路系统。例如,短线区域可以不包括有源电路系统,诸如形成在半导体基板中的晶体管或其他电路。短线区域也可以不包括可以形成在金属化层中的电路(例如,显式电阻器、电感器或电容器)。虽然金属化层具有寄生性质(例如,电阻、电感和电容),但是可能不允许明确定义的电路。短线区域可以仅包括在半导体基板的表面区域上方的一个或多个金属化层中的布线。
另一种方法可以包括例如在半导体制造设施或“代工厂”处接收第一数据集和第二数据集。该方法还可以包括基于第一数据集制造集成电路的第一多个完整实例,以及基于第二数据集制造集成电路的第二多个部分实例。
根据本公开实现部分实例的集成电路可以包括物理地布置在形成该集成电路的半导体基板的表面上的多个电路部件;以及沿着该表面的单个边缘(例如,短线区域)的多个导线终端。该多个导线终端可以电连接到集成电路的多根供电线,以在作为到多个电路部件中的一个或多个电路部件的输入的导线上提供固定数字逻辑电平。电源线可以是集成电路的金属化层中的电源网(例如,电源和/或地线)的一部分。电源网和接地网也可以被称为电力网和地网。通过导线终端终止的输入线被定向成与单个边缘相交,并且缺乏被配置为驱动集成电路内的导线的电路(例如,在部分实例中不存在的第二子区域中的电路部件在完整实例中驱动导线)。沿着包括多个导线终端的单个边缘的区域也不包括有源电路元件。例如,沿着单个边缘的区域可以仅包括在半导体基板的表面区域上方的一个或多个金属化层中的布线。
本文描述的方法可以影响针对集成电路的总体设计过程的各种区域。例如,平面规划是设计过程的要素,其中各种电路部件被分配到半导体基板上的区域。在平面规划期间,可以考虑部分实例的存在和分割线的位置,从而确保包括在所有实例中的电路部件在第一子区域中并且其他电路部件包括在第二子区域(或第三和第四子区域等)中。另外,可以仔细设计子区域的形状以提供完整实例和部分实例两者中的区域的有效使用。可以在整个完整实例中提供电路部件之间的通信的主总线或其他互连可以被设计成正确地管理各种实例中的通信(例如,在部分实例中,可以在短线区域中终止总线或者可以在短线区域中不连接总线,并且因此不应在短线区域的方向上传输通信)。平面规划图也可以考虑对针对完整实例和部分实例两者的流片的要求(例如,如下文进一步详细讨论的各种排除区)。另外,平面规划图可以尝试使横穿分割线的导线数量最小化以简化对部分实例将正确操作的验证。
在实施方案中,在平面规划阶段的考虑因素可以包括对可能会受到对部分实例的分割的影响的某些关键连接件的定义。时钟互连和模拟互连可以是示例。时钟互连(或“时钟树”)通常被设计成使得从时钟发生器或时钟源到在电路部件中的各种状态元件处的时钟终端的距离和电气负载大致相同或“平衡”。状态元件可以包括例如触发器(“触发器”)、寄存器、锁存器、存储器阵列和其他计时存储设备。
为了保持集成电路设计的各种实例之间的平衡,可以在每个子区域中的本地时钟源和该子区域内的状态元件之间定义独立的时钟树。例如,图73是示出集成电路的完整实例(芯片18)和划分完整实例的子区域用于分割成部分实例的分割线G20A-G20B的实施方案的框图。示出了本地时钟源G30A-G30C,每个本地时钟源驱动由每个子区域内的线示出的独立的时钟树。时钟树可以不穿过分割线G20A-G20B。也就是说,给定子区域内的时钟树可以保持在该子区域内。
时钟源可以是被配置为向耦接到其时钟树的电路系统产生时钟信号的任何电路。例如,时钟源可以是锁相环(PLL)、延迟锁相环(DLL)、时钟分频器电路等。时钟源可以耦接到对在其上提供外部信号的集成电路的时钟输入,该时钟源可以在将相位或时钟脉冲边缘锁定到外部信号的同时在频率上倍增或进行分频。
因此,方法还可以包括在第一子区域中定义用于在第一子区域内分配时钟的一个或多个第一时钟树,并且在第二子区域中定义用于在第二子区域内分配时钟的一个或多个第二时钟树。该一个或多个第一时钟树可以在完整实例中与该一个或多个第二时钟树电隔离。时钟树可以是物理上独立的,如图73所示(例如,连接到不同的本地时钟源)。时钟树可能不会穿过分割线进入到另一子区域中。在制造方法中,第一数据集还可以包括用于在第一子区域内分配时钟的一个或多个第一时钟树和用于在第二子区域内分配时钟的一个或多个第二时钟树,并且其中该一个或多个第一时钟树可以在完整实例中与该一个或多个第二时钟树电隔离。
在实施方案中,集成电路可以包括用于在第一区域的第一子区域内分配时钟的一个或多个第一时钟树;以及用于在第二子区域内分配时钟的一个或多个第二时钟树。该一个或多个第一时钟树可以与该一个或多个第二时钟树电隔离。
图74是由分割线G20A-G20B划分的完整管芯G18和在由分割线G20A-G20B定义的每个子区域内提供本地模拟焊盘G32A-G32C的一个实施方案的框图。模拟焊盘G32A-G32C可以向芯片提供针对模拟输入的连接点。模拟信号通常具有特殊要求,诸如屏蔽可能影响模拟信号的准确性和功能性的数字噪声,与仅在数字值处具有意义且不在其间转变的数字信号相比,该模拟信号是连续值信号。确保在每个子区域内满足模拟要求可总体上简化集成电路的设计。在实施方案中,如果在给定子区域内没有使用模拟信号,那么该子区域可以不包括模拟焊盘和信号路由。
因此,方法还可以包括在第一子区域中定义一个或多个第一模拟输入并在第二子区域中定义一个或多个第二模拟输入。该一个或多个第一模拟输入可以保持在第一子区域内,并且该一个或多个第二模拟输入可以保持在第二子区域内。也就是说,输入上的模拟信号或来源于输入的模拟信号可以在不穿过分割线G20A-G20B的导线上传送。在制造方法中,第一数据集还可包括第一子区域中的一个或多个第一模拟输入,其中该一个或多个第一模拟输入保持在第一子区域内,并且其中该第一数据集还包括第二子区域中的一个或多个第二模拟输入,其中该一个或多个第二模拟输入保持在第二子区域内。
根据本公开,集成电路可以包括第一多个电路部件,该第一多个电路部件物理地布置在形成该集成电路的半导体基板的表面的第一区域内;以及第二多个电路部件,该第二多个电路部件物理地布置在形成该集成电路的半导体基板的表面的第二区域内。可以在第一区域内提供一个或多个第一模拟输入,其中该一个或多个第一模拟输入与第一多个电路部件隔离。在第二区域内的一个或多个第二模拟输入,其中该一个或多个第二模拟输入与第二多个电路部件隔离。
可以被考虑的集成电路的另一个特征是可测性设计(DFT)策略。DFT通常包括定义DFT接口的一个端口或多个端口,诸如与联合测试接入组(JTAG)规范兼容的接口。例如,DFT可以包括在设计中定义状态元件的扫描链,使得可以扫描输入状态和扫描输出状态,并且可以定义扫描链以保持在给定子区域内。可以在每个子区域内提供独立的DFT端口,以尽可能地使跨分割线通信最小化。如果需要跨分割线通信,则可以在短线区域中终止(子区域的输入)且不连接(子区域的输出)此类信号,类似于其他信号。在实施方案中,扫描网络和其他DFT网络可以被设计为层级环,使得去除的电路部件中的部分可以与DFT网络断开,而不会对剩余网络产生进一步影响。
在实施方案中,一些电路部件可以在完整实例内被多次实例化。实例中的一个或多个实例可以在不包括在部分实例中的一个或多个部分实例中的子区域中。这些电路部件可以被设计成在实例的每个位置处满足所有要求(定时、物理、电气),并且因此可能针对某些其他位置进行过度设计(例如,可能针对最坏情况时时钟偏移其位置设计电路部件等)。另外,部分实例可以具有不同的封装解决方案,其可能需要额外的设计来处理封装中的差异(例如,不同的IR电压降)。
在实施方案中,代工厂可能需要在半导体基板上制造某些“非逻辑”单元。这些单元不是集成电路本身的一部分,而是可以由代工厂用来调整制造过程。代工厂要求的单元可能具有严格的规则且可能取决于管芯尺寸,并且因此可能需要在完整实例的平面规划图中规划这些单元的放置,使得这些单元可以正确地定位在部分实例中。
图75示出了针对集成电路设计的另一考虑因素的实施方案:各种类型的排除区域(或排除区)。除了在右侧的部分实例、在顶部处的芯片3(其位置在完整实例中、分割线G20B上方、由虚线G34指示)和在底部处的芯片2(其位置在完整实例中、分割线G20A上方、由点划线G36指示),在图75中的左侧的是完整管芯G18的完整实例(芯片1)。对于每个实例,芯片的拐角具有其中除了半导体基板表面的其他部分外不允许电路系统(或必须遵循更严格的设计规则)的排除区。可以定义拐角排除区,因为在半导体管芯的拐角上的机械应力可能大于在芯片的其他位置处的机械应力。拐角排除区由图75中的附图标号G38所表示的交叉阴影区域指示。
因此,完整实例在其四个拐角中的每一个拐角处具有拐角排除区,以及沿着芯片侧面的“拐角”排除区,在与分割线G20A-G20B相邻的子区域的拐角处,其将成为针对部分实例的芯片的拐角而结束。另外的拐角排除区可以与完整实例的拐角排除区尺寸相同,或者如果拐角排除区的尺寸按整体管芯尺寸扩展,则可以是不同尺寸。
因此,方法还可以包括在半导体基板的相应拐角处定义多个排除区,其中根据要用于制造集成电路的制造工艺的机械要求从多个排除区排除电路部件。该方法还可以包括在与分割线相邻的第一子区域的拐角处定义附加的排除区,由此部分实例包括在其上形成有部分实例的半导体基板的相应拐角处的排除区。制造方法中的第一数据集可以包括在半导体基板的相应拐角处的多个排除区,其中根据要用于制造集成电路的制造工艺的机械要求从该多个排除区排除电路部件;并且第一数据集可以包括在与第二子区域相邻的第一子区域的拐角处的附加的排除区,由此部分实例包括在其上形成有部分实例的半导体基板的相应拐角处的排除区。
另外,集成电路(例如,包括完整实例)可包括:第一多个电路部件,该第一多个电路部件物理地布置在形成该集成电路的半导体基板的表面的第一区域内;在半导体基板的相应拐角处的多个排除区,其中根据要用于制造集成电路的制造工艺的机械要求从多个排除区排除电路部件;以及沿着半导体基板的一对名义平行边缘与相应的拐角分开的另一多个排除区,其中从其他多个排除区排除电路部件,并且其中该其他多个排除区与该多个排除区的尺寸大体相同。
图75还示出了集成电路的完整实例和部分实例上的C4凸块的允许位置,示出为图75中的双交叉阴影区域,附图标号G40。由双交叉阴影区域G40指示的区域之外的区域可能不是针对C4凸块的允许位置(例如,针对C4凸块的排除区)或者可能存在用于在那些区域中放置C4凸块的更严格的规则。因此,对于每个实例的每个边缘存在允许位置/排除区。也就是说,在完整管芯G18的周边周围以及在分割线G20A-G20B的两侧可能存在C4排除区。因此,方法还可以包括沿着与第二子区域相邻的第一子区域的边缘定义第二排除区,其中从该第二排除区排除受控塌缩芯片连接(C4)连接件。在制造方法中,第一数据集还可以包括沿着与第二子区域相邻的第一子区域的边缘的第二排除区,其中从该第二排除区排除受控塌缩芯片连接(C4)连接件。在实施方案中,集成电路可以包括沿着多个排除区之间的线的第二排除区,其中从该第二排除区排除受控塌缩芯片连接(C4)连接件。
图76是示出针对图70中所示的芯片3G实施方案的电路部件G10B和短线区域G22的一个更详细的实施方案的框图。也可以提供电路部件G10A提供类似的连接件,并且图71中的短线区域G24可以与电路部件G10A-G10C类似。短线区域G22可包括终端,诸如用于电路部件G10B的VDD终端G50(用于向上绑定或绑定到二进制一的输入)和VSS或接地终端G52(用于向上绑定或绑定到二进制零的输入),以用于将由作为完整实例的一部分而不是部分实例的一部分的去除的电路部件提供的输入,由从终端到短线区域G22的边缘的图76中的虚线示出。针对给定终端的二进制一或二进制零的选择可以取决于电路部件G10B内的输入的逻辑效应。通常,终端可以被选择为将引起接收电路在没有来自将在完整实例中获得输入的去除的电路部件的进一步输入的情况下继续运行的任何值(例如,作为所去除的电路部件的输出)。当缺少用于信号的驱动电路时,终端提供已知值。将连接到去除的电路部件的电路部件G10B的输出可以到达短线区域G22(例如,附图标号G54和G56),但是可以不连接(例如,不连接到接收电路)。在完整实例或较大部分实例中,输出线G54和G56可以延伸穿过在部分实例中不存在的电路部件(图76中由虚线示出)。
因此,在短线区域中终止的输入可以是延伸到短线区域并且被定向成与沿着其布置短线区域的集成电路的边缘相交。输入缺乏被配置为驱动集成电路内的导线的电路(例如,部分实例中不存在的电路部件在完整实例中驱动导线)。
在其他情况下,可能期望用来自去除的电路部件的输入代替本地输入。例如,用于测试的回环电路或环互连结构可以在部分实例中局部地完成回环/环。为了支持此类实例,接收电路部件(例如,电路部件G10B)可包括逻辑电路系统以在本地信号与来自去除的部件的输入之间进行选择。例如,在图76中,电路部件G10B可包括多个多路复用器(muxes)G58和G60。每个mux G58或G60可以耦接到通常源自在部分实例中不存在的电路部件的输入线。输入线可以到达短线区域G22,但是可以是无连接的。另选地,如果需要,输入线可以以二进制一或二进制零终止。如果浮接输入较长时期处于在电源与接地之间,则终止这样的输入可以防止其浮接并且防止其可能导致浪费电流。mux选择线也可以从短线区域G22提供,并且可以以二进制0(VSS)或二进制1(VDD)终止,这可能使得该mux选择本地线。当输入线的源电路部件存在(例如,在完整实例或较大部分实例中)时,可以从源电路部件(图76中的虚线)提供mux选择线。在这种情况下,mux选择线可以是动态信号,该动态信号可以在操作期间根据需要在本地输入与来自源电路部件的输入之间进行选择,或者可以相对于短线区域G22中的mux选择线绑定到相反的二进制值。
因此,在该方法的实施方案中,完整实例可以包括第二子区域中的其他多个电路部件,该其他多个电路部件可以包括多个输出,该多个输出是第一子区域中的多个电路部件的多个输入。多个电路部件可以包括具有多个输入中的相应输入作为输入的多个多路复用器电路。该方法可以包括在短线区域中表示用于多个多路复用器电路的多个选择信号。该多个选择信号可以在短线区域内以二进制值终止,该二进制值选择除连接到多个输入的mux输入外的该多个多路复用器电路的不同的输入。在实施方案中,多个选择信号可以在第二子区域中以不同的二进制值终止。
在实施方案中,集成电路可以包括物理地布置在形成该集成电路的半导体基板的表面上的多个电路部件。多个该多个电路部件包括多个多路复用器电路,其中该多个多路复用器电路中的给定多路复用器电路具有第一输入线、第二输入线和选择控制线。集成电路还可以包括沿着表面的单个边缘的区域,其中:该区域是选择控制线的电源,第二输入线到达表面的该单个边缘并且未连接,并且该选择控制线电连接到该集成电路的供电线。在使用期间供电线上的电压对应于数字逻辑电平,该数字逻辑电平使得该多个多路复用器电路选择第一输入线作为该多个多路复用器电路的输出。
现在转向图77,示出了可以是芯片G18的完整实例的一对集成电路G76和G78的一个实施方案的框图。针对集成电路G76示出了分割线G20A-G20B,并且针对实施方案示出了集成电路G76的某些附加细节。具体地,集成电路G76可包括多个网络交换机G70A-G70H,该多个网络交换机可以是集成电路G76中的通信网络的一部分。通信网络可以是电路部件的示例,并且可以被配置为提供其他电路部件(例如,处理器、存储器控制器、外围设备等)之间的通信。
网络交换机G70A-G70H可以使用任何拓扑结构彼此耦接,诸如环状、网状、星形等。当在网络交换机G70A-G70H中接收到给定通信消息或分组时,网络交换机G70A-G70H可以确定要在哪个输出上传输该分组以向其目的地移动该分组。方向可能取决于集成电路的哪个实例已经制造了网络交换机。
例如,如果制造了完整实例,则给定网络交换机诸如网络交换机G70E可以向上或向下传输分组,如图77所示(或者如果耦接到网络交换机G70E的另一电路部件(未示出)是分组的目标,则网络交换机G70E可以向该电路部件传输该分组)。然而,如果基于分割线G20A形成部分实例,则网络交换机G70E可能不会向下传输分组,因为那里不存在接收电路。类似地,网络交换机G70F可能不会在该场景中向下传输分组。如果通过基于分割线G20B形成部分实例,则网络交换机G70C和G70D可能不在向下方向上传输分组。
因此,网络交换机G70A-G70H中的至少一些网络交换机的操作可能取决于实例。可以存在多种方式来管理差异。例如,交换机的输入可以指定实例(由短线区域或针对完整实例的分割线20B以下的区域中的电路部件输出)。在例示的实施方案中,路由表或其他可编程资源G74可包括在每个网络交换机70A-70H中。路由表G74可以基于原位的实例在初始化(例如,通过引导代码或其他固件)时编程。
类似地,各种实例可以具有不同数量的存储器控制器(例如,去除的子区域中的电路部件可以包括存储器控制器,并且剩余的子区域可能存在额外的存储器控制器)。存储器地址空间可以被映射到存储器控制器上,并且因此映射可以基于在给定完整实例或部分实例中实际存在的存储器控制器的数量而改变。承载存储器操作分组的网络交换机G70A-G70H也可以使用可编程资源利用描述地址映射的数据来编程。可能需要知道地址映射以适当地操作的其他电路部件可以类似地具有可编程资源。
在例示的实施方案中,一对集成电路G76和G78可以被配置为彼此通信并且如果其为一个集成电路管芯,则起作用。例如,每个集成电路G76和G78上的网络交换机G70A-G70H可以被配置为通过管芯到管芯(D2D)接口电路G72进行通信,以跨集成电路G76和G78形成一个通信互连。因此,源自任一集成电路管芯的分组可以具有在另一个集成电路管芯上的目的地,并且可以经由D2D接口电路G72无缝地传输到目标,并且因此对系统中执行的软件基本上不可见。D2D接口电路G72可以是图1中所示的D2D电路26的示例。
由于集成电路的部分实例包括少于电路系统的完整实例,因此可以从部分实例中的每个部分实例去除的部件电路中的一个部件电路是D2D接口电路G72。也就是说,D2D接口电路G72可以在从部分实例中的每个部分实例去除的子区域中实例化(例如,在例示的实施方案中的分割线G20A下方)。
图78是示出针对支持完整实例和部分实例的集成电路的一个实施方案的设计和验证/验证方法的各部分的流程图。针对完整实例的设计数据库示出在图78的顶部中心处(附图标号G80)。针对部分实例的设计数据库示出在完整实例的左侧和右侧(附图标号G82和G84)。除了如图78中所示的对应短线区域G22和G24,设计数据库G82和G84从设计数据库G80提取针对形成那些集成电路的子区域的内容,如箭头G86和88指示。
可以使用以下各项来分析数据库G80、G82和G84:使用静态定时分析来验证设计满足定时要求(框G90)、使用物理验证来验证设计满足各种物理设计规则(框G92)以及使用电气验证来验证设计(以及用于每种设计的分组,其可能在完整实例与部分实例之间变化)满足电气要求,诸如电网稳定性、阻抗等(框G94)。物理设计规则可以包括诸如器件和/或布线层中的布线之间的最小间距、器件尺寸等的特征。物理设计规则还可以包括如上所述的拐角排除、C4凸块排除等。另外,在实施方案中,由于来自在部分实例中没有连接的电路部件的输出,可能存在要处理的附加“天线”规则。
可以对各种验证步骤的结果进行审查和分类以用于设计变更(工程变更命令或ECO),可能预期该设计变更改善各种验证的后续运行中的结果(分类ECO框G96、G98和G100)。可以在设计数据库G80(箭头G102、G104和G106)中实现ECO,而不管哪个实例导致ECO。因此,如果设计中所需的最坏情况校正由部分实例中的一个部分实例造成,则设计数据库G80可以一定程度地被过度设计。在包括在部分实例的子区域中进行变更的情况下,在进行变更以更新部分实例之后,可以从设计数据库G80中提取设计数据库G82和G84。
一旦完成了各种验证(清除块G108、G110和G112),就可以针对全部实例和部分实例执行流片(块G114、G116、和G118),从而得到每个实例的数据集(块G120、G122和G124)。
在各种实施方案中可能存在额外的分析和设计流程,但是类似地,由各种设计工作识别的任何ECO可以在完整实例设计数据库G80中实现,并且随后提取到部分设计数据库G82和G84。
可能受到对集成电路设计的完整实例和部分实例的支持的影响的集成电路设计方法的另一方面是设计验证(DV)。DV通常包括测试集成电路设计或其一部分,诸如给定电路部件,以确保设计按预期操作并且满足针对设计的功能和/或性能要求。例如,DV可以包括定义测试台以促进设计并测量针对预期结果的操作。测试台可以包括例如描述刺激的另外的HDL代码。为了避免显著的返工和额外的资源以在设计的所有实例上执行DV,可以定义覆盖每个实例的可配置测试台环境。在部件级处,可以使用在实例之间复制芯片级差异来测试部件。
图79是示出用于芯片级DV的测试台布置的一个实施方案的框图。测试台可包括测试顶层G170,该测试顶层可包括定义声明($DEFINE),该定义声明可以被选择为本示例中的芯片1(完整实例)、芯片2(部分实例)或芯片3(部分实例)。也就是说,对于给定模拟,可以将$DEFINE声明设置为被测试的实例(标签芯片1、芯片2或芯片3中的一者)。测试顶层G170还可包括被测设备(DUT)G172(例如,在其部分实例和完整实例中的集成电路)和测试台(TB)G174。
DUT G172可包括集成电路的一部分,该集成电路包括在实例中的每个实例中(例如,对每个实例是通用的本示例中的电路部件G10A-G10B)。对于给定模拟,公共部分G176可以无条件地包括在DUT G172中。取决于对给定模拟中哪个实例进行测试,可以有条件地包括三个附加部分中的一个附加部分。例如,正在测试芯片1(并且因此$DEFINE声明详述芯片1),可包括其他电路部件G10C-G10D(附图标号G178)。如果正在测试芯片2(并且因此$DEFINE声明详述芯片2),则可包括电路部件G10C和短线G24(附图标号G180)。如果正在测试芯片3(并且因此$DEFINE声明详述芯片3),则可以包括短线G22(附图标号G182)。
测试台G174可以基于$DEFINE声明类似地配置。测试台G174可包括对应于公共部分G176(例如,针对公共部分G176的刺激)的公共部分G184。可基于分别详述芯片1、芯片2和芯片3的$DEFINE声明选择性地包括其他部分G184、G186或G188。可包括分别针对对应部分G178、G180和G182的刺激。即,针对电路部件G10C-G10D的组合的刺激可包括在部分G186中;针对电路部件G10C和短线G24的组合的刺激可包括在部分G188中;且针对短线G22的刺激可包括在部分G190中。在实施方案中,由于短线G22可以不包括任何有源电路系统,因此可以省略部分G190。另选地,公共部分G176中的操作差异可以在部分G190中捕获。
因此,测试顶层G170的相同总体设置允许模拟设计的任何实例,只需变更$DEFINE声明来选择设计。
图80示出了经由复制的电路部件级测试的示例。在示例中,芯片1示出在电路部件G10C与电路部件G10B之间具有某些输入/输出(例如,接口)。为了简单起见,电路部件G10A和G10D中的其他电路部件之间的并且由电路部件G10B接收的其他接口并未在图80中示出。
因此,针对电路部件G10B的测试布置可包括DUT中的电路部件G10B(附图标号G192)。电路部件G10B与电路部件G10C之间的接口可以经由测试台G194中的电路部件G10C的模型来建模。模型可以是电路部件G10C的行为模型。另选地,模型可以是电路部件G10C的总线功能模型,其在界面上完全复制电路部件G10C的操作,但可以省略许多内部操作。可以使用任何模型。可以复制测试布置以测试芯片3布置,例如,其中包括短线G22以在接口上将源自电路部件G10C的输入信号向上绑定和向下绑定到电路部件G10B。复制的布置很多包括DUT G192和实例化短线G22的向上绑定和向下绑定的测试台G196。
在一个实施方案中,也可以修改设计集成(DI)。设计集成可包括连接各种电路部件G10A-G10D的过程,提供可以允许电路部件G10A-G10D之间的正确通信的任何所需的“胶合逻辑”等。当集成电路的不同实例进行流片时,可以改变各种配置。例如,经由网络交换机G70A-G70H的分组的路由(或包括在给定实例中的交换机的子集)可以取决于实例。因此,路由表G74的编程可以基于实例而改变。设计的其他行为也可以改变,例如功率管理。保险丝可以用于识别实例,并且因此,如果没有在短线G22或G24中通过向上拉和向下拉来充分控制行为,则可以用于识别在其他电路部件G10A-G10D中对路由表G74或各种配置寄存器的编程。保险丝可以是短线的一部分或者可包括在电路部件G10A-GG10D中,并且可以针对给定实例被选择性地熔断。
图81是示出用于集成电路的设计和制造方法的一个实施方案的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。可以并行执行独立的块。
该方法可包括在对应于集成电路设计的设计数据库中定义在半导体基板上制造时集成电路设计要占据的区域(框G130)。该方法还可以包括根据需要定义一条分割线或多于一条分割线。分割线可以将区域划分成第一子区域和第二子区域,其中该第一子区域和该第二子区域的组合表示该集成电路的完整实例,并且其中该第一子区域和短线区域表示包括集成电路的部分实例,该部分实例包括比完整实例更少的电路部件(框G132)。该方法还可包括在设计数据库中表示包括集成电路的完整实例和部分实例两者中的多个电路部件在第一子区域中的物理位置(框G134)。在实施方案中,该多个电路部件在第一子区域内的相对位置和该多个电路部件在第一子区域内的互连在完整实例和部分实例中保持不变。该方法还可包括在设计数据库中表示包括在完整实例中但从部分实例中排除的另一多个电路部件在第二子区域中的物理位置(框G136)。该方法还可包括在设计数据库中的短线区域中定义针对原本横穿第一子区域与第二子区域之间的分割线的导线的终端,从而确保在部分实例中不存在第二子区域的情况下第一子区域中的该多个电路部件的正确操作(框G138)。该方法还可包括使用第一子区域和第二子区域产生针对完整实例的第一数据集(框G140)。第一数据集可以定义用于制造完整实例的完整实例。该方法还可包括使用第一子区域和短线区域产生针对部分实例的第二数据集,该第二数据集定义用于制造部分实例的部分实例(框G142)。该方法还可包括分别基于第一数据集和第二数据集制造完整实例和部分实例(框G144)。
在实施方案中,短线区域可以不包括电路系统。例如,短线区域可以仅包括在半导体基板的表面区域上方的一个或多个金属化层中的布线。在实施方案中,第二子区域中的其他多个电路部件可以包括多个输出,该多个输出是第一子区域中的多个电路部件的多个输入。多个电路部件可以包括具有多个输入中的相应输入作为输入的多个多路复用器电路。该方法还可以包括在短线区域中表示用于多个多路复用器电路的多个选择信号。该多个选择信号可以在短线区域内以二进制值终止,该二进制值选择相比于多个输入连接到的输入的该多个多路复用器电路的不同的输入。该多个选择信号可以在第二子区域中以不同的二进制值终止。
在实施方案中,该方法还可以包括在半导体基板的相应拐角处定义多个排除区。可以根据要用于制造集成电路的制造工艺的机械要求从多个排除区排除电路部件。该方法可以更进一步包括在与分割线相邻的第一子区域的拐角处定义附加的排除区,由此部分实例包括在其上形成有部分实例的半导体基板的相应拐角处的排除区。
在实施方案中,该方法还可以包括沿着与第二子区域相邻的第一子区域的边缘定义第二排除区。可以从第二排除区排除受控塌缩芯片连接(C4)连接件。在实施方案中,该方法还可以包括在第一子区域中定义一个或多个第一模拟输入;以及在第二子区域中定义一个或多个第二模拟输入。该一个或多个模拟输入保持在第一子区域内,并且该一个或多个第二模拟输入保持在第二子区域内。在实施方案中,该方法可以包括在第一子区域中定义用于在第一子区域内分配时钟的一个或多个第一时钟树;以及在第二子区域中定义用于在第二子区域内分配时钟的一个或多个第二时钟树。该一个或多个第一时钟树可以在完整实例中与该一个或多个第二时钟树电隔离。在实施方案中,该方法还可以包括在设计数据库中定义第二子区域中的第二分割线。第二分割线可以将第二子区域划分为第三子区域和第四子区域,其中第三子区域与第一子区域相邻。第三子区域和第一子区域可以表示集成电路的第二部分实例。该方法还可以包括使用第一子区域、第三子区域和第二短线区域来产生针对第二部分实例的第三数据集。第三数据集可以定义用于制造第二部分实例的第二部分实例。
图82是示出用于制造集成电路的方法的一个实施方案的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。可以并行执行独立的块。
在实施方案中,方法可包括接收针对集成电路设计的完整实例的第一数据集(框G150)。第一数据集可以定义用于制造完整实例的完整实例。完整实例可以包括第一多个电路部件,该第一多个电路部件物理地位于在半导体基板上由该完整实例占据的区域的第一子区域中;以及第二多个电路部件,该第二多个电路部件物理地位于在半导体基板上由该完整实例占据的区域的第二子区域中。该方法还可包括接收针对集成电路设计的部分实例的第二数据集(框G152)。该第二数据集可以定义用于制造部分实例的部分实例。该部分实例可以包括第一子区域中的第一多个电路部件,其中该第一多个电路部件在第一子区域内的相对位置和该第一多个电路部件在第一子区域内的互连在完整实例和部分实例中保持不变。该部分实例还可以包括与第一子区域相邻的短线区域,其中该短线区域包括针对原本将互连第一子区域和第二子区域中的部件的导线的终端,从而确保在该部分实例中不存在第二子区域的情况下第一子区域中的第一多个电路部件的正确操作。该方法还可包括基于第一数据集制造集成电路的第一多个完整实例(框G154);以及基于第二数据集制造集成电路的第二多个部分实例(框G156)。
在实施方案中,短线区域不包括电路系统。例如,短线区域可以仅包括在半导体基板的表面区域上方的一个或多个金属化层中的布线。在实施方案中,第二子区域中的其他多个电路部件可以包括多个输出,该多个输出是第一子区域中的第一多个电路部件的多个输入;并且第一多个电路部件包括具有多个输入中的相应输入作为输入的多个多路复用器电路。短线区域还可以包括用于该多个多路复用器电路的多个选择信号。在实施方案中,该多个选择信号可以在短线区域内以二进制值终止,该二进制值选择相比于多个输入连接到的输入的该多个多路复用器电路的不同的输入。多个选择信号可以在完整实例中以不同的二进制值在第二子区域中终止。
在实施方案中,第一数据集可以包括在半导体基板的相应拐角处的多个排除区。可以根据要用于制造集成电路的制造工艺的机械要求从多个排除区排除电路部件。第一数据集还可以包括在与第二子区域相邻的第一子区域的拐角处的附加的排除区,由此部分实例包括在其上形成有部分实例的半导体基板的相应拐角处的排除区。在实施方案中,第一数据集还可以包括沿着与第二子区域相邻的第一子区域的边缘的第二排除区,其中从该第二排除区排除受控塌缩芯片连接(C4)连接件。在实施方案中,第一数据集还可以包括第一子区域中的一个或多个第一模拟输入和第二子区域中的一个或多个第二模拟输入。该一个或多个第一模拟输入可以保持在第一子区域内;并且该一个或多个第二模拟输入保持在第二子区域内。在实施方案中,第一数据集还可以包括用于在第一子区域内分配时钟的一个或多个第一时钟树和用于在第二子区域内分配时钟的一个或多个第二时钟树,并且其中该一个或多个第一时钟树在完整实例中与该一个或多个第二时钟树电隔离。
计算机系统
接下来转向,示出了系统700的一个实施方案的框图。在例示的实施方案中,系统700包括耦接到一个或多个外围设备704和外部存储器702的片上系统(SOC)10的至少一个实例。提供了电源(PMU)708,其向SOC 10供应供电电压以及向存储器702和/或外围设备154供应一个或多个供电电压。在一些实施方案中,可包括SOC 10的多于一个实例(并且也可包括多于一个存储器702)。在一个实施方案中,存储器702可包括图1中所示出的存储器12A-12m。
根据系统700的类型,外围设备704可包括任何期望的电路系统。例如,在一个实施方案中,系统700以是移动设备(例如,个人数字助理(PDA)、智能电话等),并且外围设备704可包括用于各种类型的无线通信的设备,诸如Wi-Fi、蓝牙、蜂窝、全球定位系统等。外围设备704还可包括额外存储装置,该额外存储装置包括RAM存储装置、固态存储装置或磁盘存储装置。外围设备704可包括用户接口设备诸如显示屏,包括触摸显示屏或多点触摸显示屏、键盘或其他输入设备、麦克风、扬声器等。
在其他实施方案中,系统700可以是任何类型的计算系统(例如台式个人计算机、膝上型计算机、工作站、网络机顶盒等)。
外部存储器702可包括任何类型的存储器。例如,外部存储器702可以为SRAM、动态RAM(DRAM)(诸如同步DRAM(SDRAM))、双倍数据速率(DDR、DDR2、DDR3等)SDRAM、RAMBUSDRAM、低功率版本的DDR DRAM(例如,LPDDR、mDDR等)等等。外部存储器702可以包括存储器设备可被安装到的一个或多个存储器模块,诸如单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)等。另选地,外部存储器702可以包括以芯片上芯片或封装上封装具体实施被安装在SOC 10上的一个或多个存储器设备。
如图所示,系统700被展示为具有在广泛领域中的应用。例如,系统700可用作台式计算机710、膝上型计算机720、平板电脑730、蜂窝或移动电话740或电视750(或耦接到电视的机顶盒)的芯片、电路系统、部件等的一部分。还示出了智能手表和健康监测设备760。在一些实施方案中,智能手表可包括各种通用计算相关功能。例如,智能手表可提供对电子邮件、手机服务、用户日历等的访问。在各种实施方案中,健康监测设备可以是专用医疗设备或以其他方式包括专用的健康相关功能。例如,健康监测设备可监测用户的生命体征、跟踪用户与其他用户的接近度以用于流行病学社交距离的目的、联系人跟踪、在发生健康危机的情况下向紧急服务部门提供通信等。在各种实施方案中,上述智能手表可包括或可不包括一些或任何健康监测相关功能。还设想了其他可穿戴设备,诸如围绕颈部佩戴的设备、可植入人体中的设备、被设计成提供增强和/或虚拟现实体验的眼镜,等等。
系统700还可用作基于云的服务770的一部分。例如,先前提及的设备和/或其他设备可访问云端中的计算资源(即,远程定位的硬件和/或软件资源)。更进一步地,系统700可用于家庭的除先前提到的那些设备之外的一个或多个设备中。例如,家用电器可监测和检测值得注意的情况。例如,家中的各种设备(例如,冰箱、冷却系统等)可监测设备的状态,并且在检测到特定事件的情况下向房主(或例如维修机构)提供警报。另选地,恒温器可监测家中的温度,并且可基于由房主对各种情况的反应历史来自动化调整加热/冷却系统。图83中还例示了系统700对各种交通运输方式的应用。例如,系统700可用于飞机、火车、公共汽车、出租用汽车、私人汽车、从私人船只到游轮的水运船、(用于出租或私有的)小型摩托车等的控制和/或娱乐系统。在各种情况下,系统700可用于提供自动化引导(例如,自驾驶车辆)、一般系统控制等。这些任何许多其他实施方案都是可能的并且被设想到的。需注意,图83所示的设备和应用仅为例示性的,并且并非旨在进行限制。其他设备是可能的并且被设想到的。
计算机可读存储介质
现在转向图84,示出了计算机可读存储介质800的一个实施方案的框图。一般来讲,计算机可访问存储介质可包括在使用期间能够被计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质可包括诸如磁性或光学介质的存储介质,例如,盘(固定或可拆卸)、带、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光。存储介质还可包括易失性或非易失性存储器介质,诸如RAM(例如,同步动态RAM(SDRAM)、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、ROM或闪存存储器。存储介质可被物理地包括在存储介质将指令/数据提供至其的计算机内。另选地,存储介质可连接至计算机。例如,存储介质可通过网络或无线链路诸如网络附接存储装置而被连接至计算机。存储介质可通过外围接口诸如通用串行总线(USB)而被连接。通常,计算机可访问存储介质800可以非暂态方式存储数据,其中非暂态在该上下文中可指不通过信号传输指令/数据。例如,非暂态存储装置可为易失性的(并且响应于断电而可能会丢失所存储的指令/数据)或为非易失性的。
图84中的计算机可访问存储介质800可存储代表SOC 10的数据库804。一般来讲,数据库804可以是可由程序读取并且直接或间接用于制造包括SOC 10的硬件的数据库。例如,数据库可以是诸如Verilog或VHDL的高级设计语言(HDL)中硬件功能的行为级别描述或寄存器传送级别(RTL)描述。该描述可由合成工具读取,该合成工具可合成描述以生成包括来自合成库的门的列表的网表。网表包括一组门电路,其还表示包括SOC 10的硬件的功能。然后可放置并路由网表,以产生用于描述要应用到掩模的几何形状的数据集。然后可在各种半导体制造步骤中使用屏蔽以产生对应于SOC 10的一个或多个半导体电路。另选地,根据需要,计算机可访问存储介质800上的数据库804可以是网表(具有或不具有合成库)或数据集。
虽然计算机可访问存储介质800存储SOC 10的表示,但其他实施方案可根据需要承载SOC 10的任何部分的表示,包括以上关于图1至图82描述的各种实施方案中的任一个实施方案以及上述实施方案的任何组合或子集。
如图84所示,计算机可访问存储介质800还可存储虚拟存储器页面分配器806和存储器监测器和/或折叠/展开代码808中的一者或多者。虚拟存储器页面分配器806可包括指令,当在诸如本文描述的包括一个或多个SOC F10的各种计算机系统的计算机上执行(并且更具体地,在P集群F14A-F14B中的一个或多个集群中的处理器上执行)时,这些指令使得计算机执行包括上文针对虚拟存储器页面分配器(例如,关于图63至图66)描述的那些操作的操作。类似地,存储器监测器和折叠/展开代码F808可包括指令,当在诸如本文描述的包括一个或多个SOC F10的各种计算机系统的计算机上执行(并且更具体地,在P集群F14A-F14B中的一个或多个集群中的处理器上执行)时,这些指令使得计算机执行包括上文针对存储器监测器和折叠/展开代码(例如,关于图63至图66)描述的那些操作的操作。
还如图68所示,图15中的计算机可访问存储介质800可存储表示集成电路G18的完整实例和集成电路G18的部分实例的数据库812、814和816。类似于数据库802,数据库812、814和816中的每一者可以是可由程序读取并且直接或间接使用以制造包括实例的硬件的数据库。
本公开包括对“实施方案”或“实施方案”的组(例如,“一些实施方案”或“各种实施方案”)的引用。实施方案是所公开概念的不同具体实施或实例。对“实施方案”、“一个实施方案”、“特定实施方案”等的引用并不一定是指相同的实施方案。设想了大量可能的实施方案,包括具体公开的那些,以及落入本公开的实质或范围内的修改或另选方案。
本公开可讨论可由所公开的实施方案产生的潜在优点。并非所有这些实施方案的具体实施都将必然表现出任何或所有潜在优点。特定具体实施是否实现了优点取决于许多因素,其中一些因素在本公开的范围之外。事实上,存在许多原因导致落入权利要求范围内的具体实施可能不表现出任何所公开的优点中的一些或全部。例如,特定具体实施可包括在本公开的范围之外的其他电路系统,结合所公开的实施方案中的一个实施方案,该其他电路系统否定或减弱一个或多个所公开的优点。此外,特定具体实施(例如,具体实施技术或工具)的次优设计执行也可能否定或减弱所公开的优点。即使假设有技术的具体实施,优点的实现仍可取决于其他因素,诸如部署具体实施的环境情况。例如,提供给特定具体实施的输入可防止本公开中解决的一个或多个问题在特定场合发生,结果可能无法实现其解决方案的益处。考虑到本公开外部的可能因素的存在,本文所述的任何潜在优点都不应理解为是为了证明侵权行为而必须满足的权利要求限制。相反,此类潜在优点的识别旨在示出受益于本公开的设计者可用的一种或多种改进类型。永久性地描述此类优点(例如,陈述特定优点“可能出现”)并非旨在传达关于此类优点实际上是否可被实现的疑问,而是认识到此类优点的实现通常取决于附加因素的技术现实。
除非另行指出,否则实施方案是非限制性的。也就是说,所公开的实施方案并非旨在限制基于本公开起草的权利要求的范围,即使仅针对特定特征描述单个示例的情况下也是如此。本发明所公开的实施方案旨在为示例性的而非限制性的,而无需在本公开中进行任何相反的陈述。因此本申请意在允许涵盖所公开实施方案的权利要求、以及此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
例如,本申请中的特征可以任何合适的方式组合。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地,参照所附权利要求,从属权利要求的特征在适当的情况下可与其他从属权利要求的特征组合,包括从属于其他独立权利要求的权利要求。类似地,在适当的情况下,可组合来自相应独立权利要求的特征。
因此,虽然所附从属权利要求可撰写成使得每个从属权利要求从属于单个其他权利要求,但也可设想附加从属关系。可设想符合本公开的从属特征的任何组合,并且这些组合可在本专利申请或另一专利申请中受权利要求书保护。简而言之,组合不限于所附权利要求中具体列举的那些。
在适当的情况下,还预期以一种格式或法定类型(例如,装置)起草的权利要求旨在支持另一种格式或法定类型(例如,方法)的对应权利要求。
因为本公开是法律文件,所以各种术语和短语可受到管理和司法解释的约束。特此给出公告,以下段落以及贯穿本公开提供的定义将用于确定如何解释基于本公开起草的权利要求。
除非上下文另有明确规定,否则对单数形式的项目的引用(即,前面有“一个”、“一种”或“该”的名词或名词短语)旨在表示“一个或多个”。因此,在不伴随上下文的情况下,对权利要求中的“项目”的引用并不排除该项目的附加实例。“多个”项目是指两个或更多个项目的集合。
词语“可”在本文中在允许的意义上(即,具有潜在可能的,能够的)进行使用,而不是在强制意义上(即,必须)进行使用。
术语“包含”和“包括”及其形式是开放式的,并且意指“包括但不限于”。
当在本公开中相对于选项列表使用术语“或”时,除非上下文另有提供,否则一般将理解为以包含性意义使用。因此,表述“x或y”等同于“x或y,或两者”,因此涵盖1)x但不是y,2)y但不是x,以及3)x和y两者。另一方面,短语诸如“x或y中的任一者,但不是两者都”使得清楚“或”以排他性意义使用。
表述“w、x、y或z,或它们的任何组合”或“...w、x、y和z中的至少一者”旨在涵盖涉及最多至该集合中元件总数的单个元件的所有可能性。例如,给定集合[w,x,y,z],这些短语涵盖集合中的任何单个元素(例如,w但不是x、y或z)、任何两个元素(例如,w和x,但不是y或z)、任何三个元素(例如,w、x和y,但不是z)以及所有四个元素。短语“...w、x、y和z中的至少一者”因此是指集合[w,x,y,z]中的至少一个元素,从而涵盖该元素列表中的所有可能的组合。该短语不应被解释为要求存在w的至少一个实例、x的至少一个实例、y的至少一个实例和z的至少一个实例。
在本公开中,各种“标签”可先于名词或名词短语。除非上下文另有提供,否则用于特征(例如,“第一电路”、“第二电路”、“特定电路”、“给定电路”等)的不同标签是指特征的不同实例。除此之外,除非另有说明,否则标签“第一”、“第二”和“第三”在应用于特征时并不暗示任何类型的排序(例如,空间、时间、逻辑等)。
短语“基于”或用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。此短语也旨在覆盖A仅基于B来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
短语“响应于”和“响应”描述了触发效应的一个或多个因素。该短语不排除附加因素可影响或以其他方式触发效应的可能性,这些因素与指定因素联合使用或独立于指定因素。也就是说,效果可以仅仅响应于这些因素,或者可以响应于指定的因素以及其他未指定的因素。考虑短语“响应于B执行A”。该短语指定B是触发A的执行或触发A的特定结果的因素。该短语不排除执行A也可能响应于某些其他因素,诸如C。该短语也不排除执行A可响应于B和C而联合执行。此短语也旨在覆盖A仅响应于B而执行的实施方案。如本文所用,短语“响应”与短语“至少部分地响应于”是同义的。类似地,短语“响应于”与短语“至少部分地响应于”是同义的。
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被说成“被配置为”执行某个任务,即使该结构当前并非正被操作。因此,被描述或表述为“被配置为”执行某个任务的实体指代用于实施该任务的物理的事物,诸如设备、电路、具有处理器单元的系统和存储有可执行程序指令的存储器等。此短语在本文中不被用于指代无形的事物。
在一些情况下,各种单元/电路/部件在本文中可被描述为执行一组任务或操作。应当理解,这些实体“被配置为”执行那些任务/操作,即使没有具体指出。
术语“被配置为”并不旨在意指“可配置为”。例如,未编程的FPGA不会被认为是“被配置为”执行特定功能。然而,该未编程的FPGA可以“可配置为”执行该功能。在适当编程之后,FPGA然后可认为“被配置为”执行特定功能。
出于基于本公开的美国专利申请的目的,在权利要求中陈述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求要素不援引35U.S.C.§112(f)。如果申请人在基于本公开的美国专利申请的申请过程中想要援引112(f)部分,则其将使用“用于[执行功能]的装置”结构来表述权利要求的要素。
在本公开中可描述不同的“电路”。这些电路或“电路系统”构成硬件,该硬件包括各种类型的电路元件,诸如组合逻辑、时钟存储设备(例如,触发器、寄存器、锁存器等)、有限状态机、存储器(例如,随机存取存储器、嵌入式动态随机存取存储器)、可编程逻辑阵列等。电路可以是定制设计的,或取自标准库。在各种具体实施中,电路系统可以视情况包括数字部件、模拟部件或两者的组合。某些类型的电路可通常被称为“单元”(例如,解码单元、算术逻辑单元(ALU)、功能单元、存储器管理单元(MMU)等)。此类单元也指电路或电路系统。
因此,在附图中示出并在本文中描述的所公开的电路/单元/部件和其他元件包括硬件元件,诸如前面段落中描述的那些硬件元件。在许多情况下,硬件元件在特定电路中的内部布置可通过描述该电路的功能来指定。例如,特定的“解码单元”可被描述为执行“处理指令的操作码并将该指令路由到多个功能单元中的一个或多个”的功能,这意味着解码单元“被配置为”执行该功能。对于计算机领域的技术人员而言,该功能规范足以暗示用于电路的一组可能的结构。
在各种实施方案中,如前述段落中所讨论的,电路、单元和由其被配置为实施的功能或操作定义的其他元件。相对于彼此的此类电路/单元/部件的布置以及它们进行交互的方式形成硬件的微架构定义,该硬件最终在集成电路中制造或被编程到FPGA中以形成微架构定义的物理具体实施。因此,微架构定义被本领域的技术人员认为是可导出许多物理具体实施的结构,所有这些物理具体实施均落入由微架构定义所描述的更广泛的结构中。即,具有根据本公开提供的微架构定义的技术人员可在没有过度实验的情况下并且利用普通技术人员的应用,通过以硬件描述语言(HDL)诸如Verilog或VHDL编码电路/单元/部件的描述来实现该结构。HDL描述常常以可显现为功能性的方式来表达。但是对于本领域的技术人员而言,该HDL描述是用于将电路、单元或部件的结构转换为下一级具体实施细节的方式。此类HDL描述可采用以下形式:行为代码(其通常为不可合成的)、寄存器传输语言(RTL)代码(其与行为代码相比通常为可合成的)、或结构代码(例如,指定逻辑门及其连接性的网表)。可针对为给定集成电路制造技术设计的单元库来顺序地合成HDL描述,并可出于定时、功率和其他原因而被修改,以获得被传输到工厂以生成掩模并最终产生集成电路的最终的设计数据库。一些硬件电路或其部分也可在示意图编辑器中被定制设计并且与合成电路系统一起被捕获到集成电路设计中。该集成电路可包括晶体管和其他电路元件(例如,无源元件,诸如电容器、电阻器、电感器等),以及晶体管和电路元件之间的互连件。一些实施方案可实现耦接在一起的多个集成电路,以实现硬件电路,和/或可在一些实施方案中使用离散元件。另选地,HDL设计可被合成为可编程逻辑阵列诸如现场可编程门阵列(FPGA),并且可在FPGA中实现。一组电路的设计与这些电路的后续低级具体实施之间的这种解耦通常导致这样的情形:其中电路或逻辑设计者从来不指定超出对电路被配置为做什么的描述的用于低级具体实施的一组特定结构,因为该过程是在电路实施过程的不同阶段执行的。
可使用电路元件的许多不同低级组合来实现电路的相同规格的事实导致该电路的大量等效结构。如所指出的那样,这些低级电路具体实施可根据制造技术、被选择用于制造集成电路的代工厂、为特定项目提供的单元库等的变化而变化。在许多情况下,通过不同设计工具或方法进行的产生这些不同具体实施的选择可以是任意的。
此外,对于给定实施方案,电路的特定功能规范的单个具体实施通常包括大量设备(例如,数百万个晶体管)。因此,该信息的剪切体积使得提供用于实现单个实施方案的低级结构的完整叙述是不切实际的,更不用说大量等同的可能具体实施。为此,本公开描述了使用工业中常用的功能简写的电路的结构。
各种实施方案的其他细节在以下实施例中阐述:
1.一种系统,包括:
多个处理器内核;
多个图形处理单元;
不同于所述处理器内核和所述图形处理单元的多个外围设备;
被配置为与系统存储器介接的一个或多个存储器控制器电路;以及
被配置为在所述一个或多个存储器控制器电路与所述处理器内核、所述图形处理单元和所述外围设备之间提供通信的互连结构;
其中所述处理器内核、所述图形处理单元、所述外围设备和所述存储器控制器被配置为经由统一存储器架构通信。
2.根据实施例1所述的系统,其中所述处理器内核、所述图形处理单元和所述外围设备被配置为存取由所述统一存储器架构定义的统一地址空间内的任何地址。
3.根据实施例2所述的系统,其中所述统一地址空间是不同于由所述系统存储器提供的物理地址空间的虚拟地址空间。
4.根据实施例1至3中任一项所述的系统,其中所述统一存储器架构为所述处理器内核、所述图形处理单元和所述外围设备的存储器访问提供一组公共语义。
5.根据实施例4所述的系统,其中所述语义包括存储器排序属性。
6.根据实施例4或5所述的系统,其中所述语义包括服务质量属性。
7.根据实施例4至6中任一项所述的系统,其中所述语义包括高速缓存一致性。
8.根据任一前述实施例所述的系统,其中所述一个或多个存储器控制器电路包括到能够映射到随机存取存储器的一个或多个存储器设备的相应接口。
9.根据实施例8所述的系统,其中所述一个或多个存储器设备包括动态随机存取存储器(DRAM)。
10.根据任一前述实施例所述的系统,还包括在所述处理器内核、所述图形处理单元、所述外围设备和所述系统存储器之间的一个或多个高速缓存级。
11.根据实施例10所述的系统,其中所述一个或多个存储器控制器电路包括插置在所述互连结构与所述系统存储器之间的相应存储器高速缓存,其中所述相应存储器高速缓存是所述一个或多个高速缓存级中的一者。
12.根据任一前述实施例所述的系统,其中所述互连结构包括具有异构互连拓扑的至少两个网络。
13.根据任一前述实施例所述的系统,其中所述互连结构包括具有异构操作特性的至少两个网络。
14.根据实施例12或13所述的系统,其中所述至少两个网络包括将所述处理器内核和所述一个或多个存储器控制器电路互连的一致网络。
15.根据实施例12至14中任一项所述的系统,其中所述至少两个网络包括耦接到所述图形处理单元和所述一个或多个存储器控制器电路的松弛有序网络。
16.根据实施例15所述的系统,其中所述外围设备包括设备的子集,其中所述子集包括机器学习加速器电路或松弛次序大容量介质设备中的一者或多者,并且其中所述松弛有序网络进一步耦接到设备的到所述一个或多个存储器控制器电路的所述子集。
17.根据实施例12至16中任一项所述的系统,其中所述至少两个网络包括被耦接以将所述外围设备和所述一个或多个存储器控制器电路互连的输入输出网络。
18.根据实施例17所述的系统,其中所述外围设备包括一个或多个实时设备。
19.根据实施例12至18中任一项所述的系统,其中所述至少两个网络包括第一网络,所述第一网络包括与所述至少两个网络中的第二网络相比减少时延的一个或多个特性。
20.根据实施例19所述的系统,其中所述一个或多个特性包括比所述第二网络更短的路由。
21.根据实施例19或20所述的系统,其中所述一个或多个特性包括金属层中的布线具有比用于所述第二网络的布线低的时延特性。
22.根据实施例12至21中任一项所述的系统,其中所述至少两个网络包括第一网络,所述第一网络包括与所述至少两个网络中的所述第二网络相比增加带宽的一个或多个特性。
23.根据实施例22所述的系统,其中所述一个或多个特性包括与所述第二网络相比更宽的互连。
24.根据实施例22或23所述的系统,其中所述一个或多个特性包括金属层中的布线比用于所述第二网络的布线的金属层更密集。
25.根据实施例12至24中任一项所述的系统,其中所述至少两个网络采用的所述互连拓扑包括星形拓扑、网状拓扑、环形拓扑、树形拓扑、胖树拓扑、超立方体拓扑或所述拓扑中的一者或多者的组合中的至少一者。
26.根据实施例12至25中任一项所述的系统,其中所述至少两个网络采用的所述操作特性包括强有序存储器一致性或松弛有序存储器一致性中的至少一者。
27.根据实施例12至26中任一项所述的系统,其中所述至少两个网络在物理上和逻辑上是独立的。
28.根据实施例12至27中任一项所述的系统,其中所述至少两个网络在第一操作模式下是物理上分离的,并且其中所述至少两个网络中的第一网络和所述至少两个网络中的第二网络是虚拟的并且在第二操作模式下共享单个物理网络。
29.根据任一前述实施例所述的系统,其中所述处理器内核、所述图形处理单元、所述外围设备和所述互连结构分布在两个或更多个集成电路管芯上。
30.根据实施例29所述的系统,其中由所述统一存储器架构定义的统一地址空间以对在所述处理器内核、所述图形处理单元或所述外围设备上执行的软件透明的方式在所述两个或更多个集成电路管芯上延伸。
31.根据实施例29至30中任一项所述的系统,其中所述互连结构在所述两个或更多个集成电路管芯上延伸,并且其中通信在源和目的地之间路由,所述通信对所述源和所述目的地在所述集成电路管芯上的位置是透明的。
32.根据实施例29至31中任一项所述的系统,其中所述互连结构使用硬件电路在所述两个集成电路管芯上延伸以自动地在源和目的地之间路由通信,与所述源和所述目的地是否在同一集成电路管芯上无关。
33.根据实施例29至32中任一项所述的系统,还包括被配置为跨所述两个或更多个集成电路管芯耦接所述互连结构的总线的至少一个内插器件。
34.根据实施例1至33中任一项所述的系统,其中给定集成电路管芯包括局部中断分配电路以在所述给定集成电路管芯中的处理器内核之间分配中断。
35.根据实施例34所述的系统,包括两个或更多个集成电路管芯,所述两个或更多个集成电路管芯包括相应局部中断分配电路,并且
所述两个或更多个集成电路管芯中的至少一者包括全局中断分配电路,其中所述局部中断分配电路和所述全局中断分配电路实现多级中断分配方案。
36.根据实施例35所述的系统,其中所述全局中断分配电路被配置为按顺序向所述局部中断分配电路传输中断请求,并且其中所述局部中断分配电路被配置为在答复来自所述全局中断分配电路的所述中断请求之前按顺序向局部中断目的地传输所述中断请求。
37.根据实施例1至36中任一项所述的系统,其中给定集成电路管芯包括被配置为管理所述给定集成电路管芯的局部功率状态的功率管理器电路。
38.根据实施例37所述的系统,包括两个或更多个集成电路管芯,所述两个或更多个集成电路管芯包括被配置为管理所述集成电路管芯的所述局部功率状态的相应功率管理器电路,并且其中所述两个或更多个集成电路管芯中的至少一者包括被配置为使所述功率管理器电路同步的另一个功率管理器电路。
39.根据任一前述实施例所述的系统,其中所述外围设备包括以下中的一者或多者:音频处理设备、视频处理设备、机器学习加速器电路、矩阵算术加速器电路、相机处理电路、显示流水线电路、非易失性存储器控制器、外围部件互连控制器、安全处理器或串行总线控制器。
40.根据任一前述实施例所述的系统,其中所述互连结构将一致代理互连。
41.根据实施例40所述的系统,其中所述处理器内核中的单个处理器内核对应于一个一致代理。
42.根据实施例40所述的系统,其中处理器内核的一个集群对应于一个一致代理。
43.根据任一前述实施例所述的系统,其中所述外围设备中的给定外围设备是非一致代理。
44.根据实施例43所述的系统,还包括插置在所述给定外围设备与所述互连结构之间的输入/输出代理,其中所述输入/输出代理被配置为执行所述互连结构关于所述给定外围设备的一致性协议。
45.根据实施例44所述的系统,其中所述输入/输出代理确保使用所述一致性协议对来自所述给定外围设备的请求进行排序。
46.根据实施例44或45所述的系统,其中所述输入/输出代理被配置为将两个或更多个外围设备的网络耦接到所述互连结构。
47.根据任一前述实施例所述的系统,还包括被配置为根据选择性可编程散列协议将存储器请求流量分配到系统存储器的散列电路系统。
48.根据实施例47所述的系统,其中所述可编程散列协议的至少一个编程将一系列存储器请求均匀地分配在所述系统中的多个存储器控制器上以用于所述系列中的多种存储器请求。
49.根据实施例29所述的系统,其中所述可编程散列协议的至少一个编程以指定粒度将所述存储器空间内的相邻请求分配到物理上远离的存储器接口。
50.根据任一前述实施例所述的系统,还包括被配置为跟踪所述统一存储器地址空间的子集的一致性状态的多个目录,其中所述多个目录被分配在所述系统中。
51.根据实施例50所述的系统,其中所述多个目录被分配给所述存储器控制器。
52.根据任一前述实施例所述的系统,其中所述一个或多个存储器控制器电路中的给定存储器控制器包括被配置为跟踪对应于所述给定存储器控制器介接的所述系统存储器的一部分中的数据的多个高速缓存块的目录,其中所述目录被配置为跟踪所述系统中的多个高速缓存中的哪一些正在高速缓存所述多个高速缓存块中的给定高速缓存块,其中所述目录相对于已在所述目录处被排序并处理的存储器请求是精确的,即使在所述存储器请求尚未在所述系统中完成的情况下也是如此。
53.根据实施例50至52中任一项所述的系统,其中所述给定存储器控制器被配置为基于针对所述给定高速缓存块的存储器请求来发出针对所述给定高速缓存块的一个或多个一致性维护命令,其中所述一个或多个一致性维护命令包括所述多个高速缓存中的对应高速缓存中的用于所述给定高速缓存块的高速缓存状态,其中所述对应高速缓存被配置为基于所述对应高速缓存中的所述高速缓存状态不匹配给定一致性维护命令中的所述高速缓存状态来延迟所述给定一致性维护命令的处理。
54.根据实施例50至53中任一项所述的系统,其中第一高速缓存被配置为以一级共享状态存储所述给定高速缓存块,并且第二高速缓存被配置为以二级共享状态存储所述给定高速缓存块,并且其中所述给定存储器控制器被配置为使得所述第一高速缓存基于所述存储器请求和所述第一高速缓存中的所述一级共享状态将所述给定高速缓存块转移到请求方。
55.根据实施例50至54中任一项所述的系统,其中所述给定存储器控制器被配置为基于第一存储器请求的类型向所述多个高速缓存中的第一高速缓存发出第一一致性维护命令和第二一致性维护命令中的一者,其中所述第一高速缓存被配置为基于所述第一一致性维护命令向发出所述第一存储器请求的请求方转发第一高速缓存块,并且其中所述第一高速缓存被配置为基于所述第二一致性维护命令将所述第一高速缓存块返回到所述给定存储器控制器。
56.一种系统,包括:
多个处理器内核;
多个图形处理单元;
不同于所述处理器内核和所述图形处理单元的多个外围设备;
被配置为与系统存储器介接的一个或多个存储器控制器电路;以及
被配置为在所述一个或多个存储器控制器电路与所述处理器内核、所述图形处理单元和所述外围设备之间提供通信的互连结构;
其中所述处理器内核、所述图形处理单元、所述外围设备和所述存储器控制器被配置为经由统一存储器架构通信。
57.根据实施例56所述的系统,其中所述处理器内核、所述图形处理单元和所述外围设备被配置为存取由所述统一存储器架构定义的统一地址空间内的任何地址。
58.根据实施例57所述的系统,其中所述统一地址空间是不同于由所述系统存储器提供的物理地址空间的虚拟地址空间。
59.根据实施例56至58中任一项所述的系统,其中所述统一存储器架构为所述处理器内核、所述图形处理单元和所述外围设备的存储器访问提供一组公共语义。
60.根据实施例59所述的系统,其中所述语义包括存储器排序属性。
61.根据实施例59所述的系统,其中所述语义包括服务质量属性。
62.根据实施例59所述的系统,其中所述语义包括高速缓存一致性。
63.根据实施例56至62中任一项所述的系统,其中所述一个或多个存储器控制器电路包括到能够映射到随机存取存储器的一个或多个存储器设备的相应接口。
64.根据实施例63所述的系统,其中所述一个或多个存储器设备包括动态随机存取存储器(DRAM)。
65.根据实施例56至64中任一项所述的系统,还包括在所述处理器内核、所述图形处理单元、所述外围设备和所述系统存储器之间的一个或多个高速缓存级。
66.根据实施例65中所述的系统,其中所述一个或多个存储器控制器电路包括插置在所述互连结构与所述系统存储器之间的相应存储器高速缓存,其中所述相应存储器高速缓存是所述一个或多个高速缓存级中的一者。
67.根据实施例56至66中任一项所述的系统,还包括被配置为跟踪所述统一存储器地址空间的子集的一致性状态的多个目录,其中所述多个目录被分配在所述系统中。
68.根据实施例57所述的系统,其中所述多个目录被分配给所述存储器控制器。
69.根据实施例56至68中任一项所述的系统,其中所述一个或多个存储器控制器电路中的给定存储器控制器包括被配置为跟踪对应于所述给定存储器控制器介接的所述系统存储器的一部分中的数据的多个高速缓存块的目录,其中所述目录被配置为跟踪所述系统中的多个高速缓存中的哪一些正在高速缓存所述多个高速缓存块中的给定高速缓存块,其中所述目录相对于已在所述目录处被排序并处理的存储器请求是精确的,即使在所述存储器请求尚未在所述系统中完成的情况下也是如此。
70.根据实施例69所述的系统,其中所述给定存储器控制器被配置为基于针对所述给定高速缓存块的存储器请求来发出针对所述给定高速缓存块的一个或多个一致性维护命令,其中所述一个或多个一致性维护命令包括所述多个高速缓存中的对应高速缓存中的用于所述给定高速缓存块的高速缓存状态,其中所述对应高速缓存被配置为基于所述对应高速缓存中的所述高速缓存状态不匹配给定一致性维护命令中的所述高速缓存状态来延迟所述给定一致性维护命令的处理。
71.根据实施例70所述的系统,其中第一高速缓存被配置为以一级共享状态存储所述给定高速缓存块,并且第二高速缓存被配置为以二级共享状态存储所述给定高速缓存块,并且其中所述给定存储器控制器被配置为使得所述第一高速缓存基于所述存储器请求和所述第一高速缓存中的所述一级共享状态将所述给定高速缓存块转移到请求方。
72.根据实施例70或71所述的系统,其中所述给定存储器控制器被配置为基于第一存储器请求的类型向所述多个高速缓存中的第一高速缓存发出第一一致性维护命令和第二一致性维护命令中的一者,其中所述第一高速缓存被配置为基于所述第一一致性维护命令向发出所述第一存储器请求的请求方转发第一高速缓存块,并且其中所述第一高速缓存被配置为基于所述第二一致性维护命令将所述第一高速缓存块返回到所述给定存储器控制器。
73.一种片上系统(SOC),包括
多个处理器内核;
多个图形处理单元;
多个外围设备;一个或多个存储器控制器电路;以及
被配置为在所述一个或多个存储器控制器电路与所述处理器内核、所述图形处理单元和所述外围设备之间提供通信的互连结构;
其中所述处理器内核、所述图形处理单元、所述外围设备和所述存储器控制器被配置为经由统一存储器架构在所述互连结构上通信。
74.根据实施例73所述的SOC,其中所述处理器内核、所述图形处理单元和所述外围设备被配置为存取由所述统一存储器架构定义的统一地址空间内的任何地址。
75.根据实施例73或74所述的SOC,其中所述统一存储器架构为所述处理器内核、所述图形处理单元和所述外围设备的存储器访问提供一组公共语义。
76.根据实施例73至75中任一项所述的SOC,其中所述语义包括存储器排序属性。
77.根据实施例73至76中任一项所述的SOC,其中所述语义包括服务质量属性。
78.根据实施例73至77中任一项所述的SOC,其中所述语义包括存储器一致性。
79.根据实施例73至78中任一项所述的SOC,还包括被配置为跟踪所述统一存储器地址空间的子集的一致性状态的多个目录,其中所述多个目录被分配在所述SOC中。
80.根据实施例79所述的SOC,其中所述多个目录被分配给所述存储器控制器。
81.根据实施例73至80中任一项所述的SOC,其中所述一个或多个存储器控制器电路中的给定存储器控制器包括被配置为跟踪对应于所述给定存储器控制器介接的所述系统存储器的一部分中的数据的多个高速缓存块的目录,其中所述目录被配置为跟踪所述系统中的多个高速缓存中的哪一些正在高速缓存所述多个高速缓存块中的给定高速缓存块,其中所述目录相对于已在所述目录处被排序并处理的存储器请求是精确的,即使在所述存储器请求尚未在所述系统中完成的情况下也是如此。
82.一种方法,包括:
在片上系统(SOC)中,使用统一存储器架构通过多个存储器控制器、多个处理器、多个外围电路之间的通信结构通信,其中所述统一存储器架构为所述处理器内核、所述图形处理单元和所述外围设备的存储器访问提供一组公共语义。
83.根据实施例82所述的方法,其中所述语义包括存储器排序属性。
84.根据实施例82或83所述的方法,其中所述语义包括服务质量属性。
85.根据实施例82至84中任一项所述的方法,其中所述语义包括存储器一致性。
86.一种系统,包括:
多个处理器内核;
多个图形处理单元;
不同于所述处理器内核和所述图形处理单元的多个外围设备;
被配置为与系统存储器介接的一个或多个存储器控制器电路;以及
被配置为在所述一个或多个存储器控制器电路与所述处理器内核、所述图形处理单元和所述外围设备之间提供通信的互连结构;
其中互连结构包括具有异构操作特性的至少两个网络。
87.根据实施例86所述的系统,其中所述互连结构包括具有异构互连拓扑的至少两个网络。
88.根据实施例86或87所述的系统,其中所述至少两个网络包括将所述处理器内核和所述一个或多个存储器控制器电路互连的一致网络。
89.根据实施例86至88中任一项所述的系统,其中所述至少两个网络包括耦接到所述图形处理单元和所述一个或多个存储器控制器电路的松弛有序网络。
90.根据实施例89所述的系统,其中所述外围设备包括设备的子集,其中所述子集包括机器学习加速器电路或松弛次序大容量介质设备中的一者或多者,并且其中所述松弛有序网络进一步耦接到设备的到所述一个或多个存储器控制器电路的所述子集。
91.根据实施例89至90中任一项所述的系统,其中所述至少两个网络包括被耦接以将所述外围设备和所述一个或多个存储器控制器电路互连的输入输出网络。
92.根据实施例91所述的系统,其中所述外围设备包括一个或多个实时设备。
93.根据实施例86至92中任一项所述的系统,其中所述至少两个网络包括第一网络,所述第一网络包括与所述至少两个网络中的第二网络相比减少时延的一个或多个特性。
94.根据实施例93所述的系统,其中所述一个或多个特性包括比所述第二网络更短的路由。
95.根据实施例93或94所述的系统,其中所述一个或多个特性包括金属层中的布线具有比用于所述第二网络的布线的金属层更低的一个或多个时延特性。
96.根据实施例93所述的系统,其中所述至少两个网络包括第一网络,所述第一网络包括与所述至少两个网络中的所述第二网络相比增加带宽的一个或多个特性。
97.根据实施例96所述的系统,其中所述一个或多个特性包括使用与所述第二网络的互连相比更大数量的导线进行互连。
98.根据实施例96或97所述的系统,其中所述一个或多个特性包括金属层中的布线比用于所述第二网络的布线的金属层更密集。
99.根据实施例86至98中任一项所述的系统,其中所述至少两个网络采用的所述互连拓扑包括星形拓扑、网状拓扑、环形拓扑、树形拓扑、胖树拓扑、超立方体拓扑或所述拓扑中的一者或多者的组合中的至少一者。
100.根据实施例86至99中任一项所述的系统,其中所述至少两个网络采用的所述操作特性包括强有序存储器一致性或松弛有序存储器一致性中的至少一者。
101.根据实施例89所述的系统,其中所述至少两个网络在物理上和逻辑上是独立的。
102.根据实施例86至101中任一项所述的系统,其中所述至少两个网络在第一操作模式下是物理上分离的,并且其中所述至少两个网络中的第一网络和所述至少两个网络中的第二网络是虚拟的并且在第二操作模式下共享单个物理网络。
103.一种集成到半导体管芯上的片上系统(SOC),所述SOC包括:
多个处理器内核;
多个图形处理单元;
多个外围设备;
一个或多个存储器控制器电路;以及
被配置为在所述一个或多个存储器控制器电路与所述处理器内核、所述图形处理单元和所述外围设备之间提供通信的互连结构;
其中互连结构包括至少第一网络和第二网络,其中第一网络包括与至少两个网络中的第二网络相比减少时延的一个或多个特性。
104.根据实施例103所述的SOC,其中所述一个或多个特性包括所述第一网络在所述半导体管芯表面上的路线比所述第二网络的路线短。
105.根据实施例103或104所述的SOC,其中所述一个或多个特性包括金属层中的布线具有比用于所述第二网络的布线的金属层更低的一个或多个时延特性。
106.根据实施例103至105中任一项所述的SOC,其中所述第二网络包括与所述第一网络相比增加带宽的一个或多个第二特性。
107.根据实施例106所述的SOC,其中所述一个或多个第二特性包括与所述第二网络中的互连相比具有更多导线的互连。
108.根据实施例106或107所述的SOC,其中所述一个或多个第二特性包括金属层中的布线比用于所述第二网络的布线的金属层更密集。
109.一种集成到半导体管芯上的片上系统(SOC),所述SOC包括:
多个处理器内核;
多个图形处理单元;
多个外围设备;
一个或多个存储器控制器电路;以及
被配置为在所述一个或多个存储器控制器电路与所述处理器内核、所述图形处理单元和所述外围设备之间提供通信的互连结构;
其中所述互连结构至少包括第一网络和第二网络,其中所述第一网络在物理上和逻辑上独立于所述第二网络。
110.根据实施例109所述的系统,其中所述第一网络和所述第二网络在第一操作模式下是物理上分离的,并且其中所述至少两个网络中的第一网络和所述至少两个网络中的第二网络是虚拟的并且在第二操作模式下共享单个物理网络。
111.一种集成电路,包括:
多个处理器内核;
多个图形处理单元;
不同于所述处理器内核和所述图形处理单元的多个外围设备;
被配置为与系统存储器介接的一个或多个存储器控制器电路;
被配置为在所述一个或多个存储器控制器电路与所述处理器内核、所述图形处理单元和所述外围设备之间提供通信的互连结构;以及
耦接到所述互连结构并被配置为将所述互连结构耦接到所述集成电路的另一个实例上的对应互连结构的片外互连件,其中所述互连结构和所述片外互连件提供透明地连接位于所述集成电路的单个实例或所述集成电路的两个或更多个实例中的所述一个或多个存储器控制器电路、所述处理器内核、所述图形处理单元和所述外围设备的接口。
112.根据实施例111所述的集成电路,其中由统一存储器架构定义的统一地址空间在所述集成电路管芯的对在所述处理器内核、所述图形处理单元或所述外围设备上执行的软件透明的所述两个或更多个实例上延伸。
113.根据实施例112所述的集成电路,其中所述统一地址空间映射到对软件透明的单个实例。
114.根据实施例111至112中任一项所述的集成电路,还包括局部中断分配电路以在所述集成电路中的处理器内核之间分配中断。
115.根据实施例114所述的集成电路,还包括全局中断分配电路,其中当使用所述集成电路的两个或更多个实例时,所述局部中断分配电路和所述全局中断分配电路实现多级中断分配方案。
116.根据实施例115所述的集成电路,其中所述全局中断分配电路被配置为按顺序在至少两个实例中向所述局部中断分配电路传输中断请求,并且其中所述局部中断分配电路被配置为在答复来自所述全局中断分配电路的所述中断请求之前按顺序向局部中断目的地传输所述中断请求。
117.根据实施例111至116中任一项所述的集成电路,其中给定集成电路管芯包括被配置为管理所述给定集成电路管芯的局部功率状态的功率管理器电路。
118.根据实施例117所述的集成电路,还包括被配置为使所述集成电路的所述两个或更多个实例上的所述功率管理器电路同步的另一个功率管理器电路。
119.根据实施例111至118中任一项所述的集成电路,其中所述外围设备包括以下中的一者或多者:音频处理设备、视频处理设备、机器学习加速器电路、矩阵算术加速器电路、相机处理电路、显示流水线电路、非易失性存储器控制器、外围部件互连控制器、安全处理器或串行总线控制器。
120.根据实施例111至119中任一项所述的集成电路,其中所述互连结构将一致代理互连。
121.根据实施例120所述的集成电路,其中所述处理器内核中的单独一者对应于一致代理。
122.根据实施例120所述的集成电路,其中所述处理器内核的集群对应于一致代理。
123.根据实施例111至122中任一项所述的集成电路,其中所述外围设备中的给定外围设备是非一致代理。
124.根据实施例123所述的集成电路,还包括插置在所述给定外围设备与所述互连结构之间的输入/输出代理,其中所述输入/输出代理被配置为执行所述互连结构关于所述给定外围设备的一致性协议。
125.根据实施例124所述的集成电路,其中所述输入/输出代理确保使用所述一致性协议对来自所述给定外围设备的请求进行排序。
126.根据实施例124所述的集成电路,其中所述输入/输出代理被配置为将两个或更多个外围设备的网络耦接到所述互连结构。
127.根据实施例111至126中任一项所述的集成电路,还包括被配置为根据选择性可编程散列协议将存储器请求流量分配到系统存储器的散列电路系统。
128.根据实施例127所述的集成电路,其中所述可编程散列协议的至少一个编程将一系列存储器请求均匀地分配在所述系统中的多个存储器控制器上以用于所述系列中的多种存储器请求。
129.根据实施例128所述的集成电路,其中所述可编程散列协议的至少一个编程以指定粒度将所述存储器空间内的相邻请求分配到物理上远离的存储器接口。
130.一种系统,包括:
集成电路的多个实例,所述集成电路包括:
多个处理器内核;
多个图形处理单元;
不同于所述处理器内核和所述图形处理单元的多个外围设备;
被配置为与系统存储器介接的一个或多个存储器控制器电路;
被配置为在所述一个或多个存储器控制器电路与所述处理器内核、所述图形处理单元和所述外围设备之间提供通信的互连结构;以及
耦接到所述互连结构并被配置为将所述互连结构耦接到所述集成电路的所述多个实例中的另一个实例上的对应互连结构的片外互连件,其中所述互连结构和所述片外互连件提供透明地连接位于所述集成电路的单个实例或所述集成电路的两个或更多个实例中的所述一个或多个存储器控制器电路、所述处理器内核、所述图形处理单元和所述外围设备的接口。
131.根据实施例130中所述的系统,还包括被配置为将来自所述多个实例中的一者的所述片外互连件耦接到所述多个实例中的另一者的所述片外互连件的基板。
132.根据实施例130中所述的系统,还包括被配置为耦接到所述多个实例中的所述片外互连件并在所述多个实例之间路由通信的网络集成电路。
一旦充分了解了上面的公开,许多变型和修改对于本领域的技术人员而言将变得显而易见。本公开旨在使以下权利要求书被阐释为包含所有此类变型和修改。

Claims (57)

1.一种系统,包括:
多个处理器内核;
多个图形处理单元;
不同于所述处理器内核和所述图形处理单元的多个外围设备;
被配置为与系统存储器介接的一个或多个存储器控制器电路;以及
被配置为在所述一个或多个存储器控制器电路与所述处理器内核、所述图形处理单元和所述外围设备之间提供通信的互连结构;
其中所述处理器内核、所述图形处理单元、所述外围设备和所述存储器控制器被配置为经由统一存储器架构通信。
2.根据权利要求1所述的系统,其中所述处理器内核、所述图形处理单元和所述外围设备被配置为存取由所述统一存储器架构定义的统一地址空间内的任何地址。
3.根据权利要求2所述的系统,其中所述统一地址空间是不同于由所述系统存储器提供的物理地址空间的虚拟地址空间。
4.根据权利要求1至3中任一项所述的系统,其中所述统一存储器架构为所述处理器内核、所述图形处理单元和所述外围设备的存储器访问提供一组公共语义。
5.根据权利要求4所述的系统,其中所述语义包括存储器排序属性。
6.根据权利要求4或5所述的系统,其中所述语义包括服务质量属性。
7.根据权利要求4至6中任一项所述的系统,其中所述语义包括存储器一致性。
8.根据任一前述权利要求所述的系统,其中所述一个或多个存储器控制器电路包括到能够映射到随机存取存储器的一个或多个存储器设备的相应接口。
9.根据权利要求8所述的系统,其中所述一个或多个存储器设备包括动态随机存取存储器(DRAM)。
10.根据任一前述权利要求所述的系统,还包括在所述处理器内核、所述图形处理单元、所述外围设备和所述系统存储器之间的一个或多个高速缓存级。
11.根据权利要求10所述的系统,其中所述一个或多个存储器控制器电路包括插置在所述互连结构与所述系统存储器之间的相应存储器高速缓存,其中所述相应存储器高速缓存是所述一个或多个高速缓存级中的一者。
12.根据任一前述权利要求所述的系统,其中所述互连结构包括具有异构互连拓扑的至少两个网络。
13.根据任一前述权利要求所述的系统,其中所述互连结构包括具有异构操作特性的至少两个网络。
14.根据权利要求12或13所述的系统,其中所述至少两个网络包括将所述处理器内核和所述一个或多个存储器控制器电路互连的一致网络。
15.根据权利要求12至14中任一项所述的系统,其中所述至少两个网络包括耦接到所述图形处理单元和所述一个或多个存储器控制器电路的松弛有序网络。
16.根据权利要求15所述的系统,其中所述外围设备包括设备的子集,其中所述子集包括机器学习加速器电路或松弛次序大容量介质设备中的一者或多者,并且其中所述松弛有序网络进一步耦接到设备的到所述一个或多个存储器控制器电路的所述子集。
17.根据权利要求12至16中任一项所述的系统,其中所述至少两个网络包括被耦接以将所述外围设备和所述一个或多个存储器控制器电路互连的输入输出网络。
18.根据权利要求17所述的系统,其中所述外围设备包括一个或多个实时设备。
19.根据权利要求12至18中任一项所述的系统,其中所述至少两个网络包括第一网络,所述第一网络包括与所述至少两个网络中的第二网络相比减少时延的一个或多个特性。
20.根据权利要求19所述的系统,其中所述一个或多个特性包括比所述第二网络更短的路由。
21.根据权利要求19或20所述的系统,其中所述一个或多个特性包括金属层中的布线比所述第二网络的布线更靠近实现所述系统所在的基板的表面。
22.根据权利要求12至21中任一项所述的系统,其中所述至少两个网络包括第一网络,所述第一网络包括与所述至少两个网络中的所述第二网络相比增加带宽的一个或多个特性。
23.根据权利要求22所述的系统,其中所述一个或多个特性包括与所述第二网络相比更宽的互连。
24.根据权利要求22或23所述的系统,其中所述一个或多个特性包括金属层中的布线比所述第二网络的布线更远离实现所述系统所在的基板的表面。
25.根据权利要求12至24中任一项所述的系统,其中所述至少两个网络采用的互连拓扑包括星形拓扑、网状拓扑、环形拓扑、树形拓扑、胖树拓扑、超立方体拓扑或所述互连拓扑中的一者或多者的组合中的至少一者。
26.根据权利要求12至25中任一项所述的系统,其中所述至少两个网络采用的所述操作特性包括强有序存储器一致性或松弛有序存储器一致性中的至少一者。
27.根据权利要求12至26中任一项所述的系统,其中所述至少两个网络在物理上和逻辑上是独立的。
28.根据权利要求12至27中任一项所述的系统,其中所述至少两个网络在第一操作模式下是物理上分离的,并且其中所述至少两个网络中的第一网络和所述至少两个网络中的第二网络是虚拟的并且在第二操作模式下共享单个物理网络。
29.根据任一前述权利要求所述的系统,其中所述处理器内核、所述图形处理单元、所述外围设备和所述互连结构分布在两个或更多个集成电路管芯上。
30.根据权利要求29所述的系统,其中由所述统一存储器架构定义的统一地址空间以对在所述处理器内核、所述图形处理单元或所述外围设备上执行的软件透明的方式在所述两个或更多个集成电路管芯上延伸。
31.根据权利要求29至30中任一项所述的系统,其中所述互连结构被配置为进行路由,其中所述互连结构在所述两个集成电路管芯上延伸,并且其中通信在源和目的地之间路由,所述通信对所述源和所述目的地在所述集成电路管芯上的位置是透明的。
32.根据权利要求29至31中任一项所述的系统,其中所述互连结构使用硬件电路在所述两个集成电路管芯上延伸以自动地在源和目的地之间路由通信,与所述源和所述目的地是否在同一集成电路管芯上无关。
33.根据权利要求29至32中任一项所述的系统,还包括被配置为跨所述两个或更多个集成电路管芯耦接所述互连结构的总线的至少一个内插器件。
34.根据权利要求1至33中任一项所述的系统,其中给定集成电路管芯包括局部中断分配电路以在所述给定集成电路管芯中的处理器内核之间分配中断。
35.根据权利要求34所述的系统,包括两个或更多个集成电路管芯,所述两个或更多个集成电路管芯包括相应局部中断分配电路,并且所述两个或更多个集成电路管芯中的至少一者包括全局中断分配电路,其中所述局部中断分配电路和所述全局中断分配电路实现多级中断分配方案。
36.根据权利要求35所述的系统,其中所述全局中断分配电路被配置为按顺序向所述局部中断分配电路传输中断请求,并且其中所述局部中断分配电路被配置为在答复来自所述全局中断分配电路的所述中断请求之前按顺序向局部中断目的地传输所述中断请求。
37.根据权利要求1至36中任一项所述的系统,其中给定集成电路管芯包括被配置为管理所述给定集成电路管芯的局部功率状态的功率管理器电路。
38.根据权利要求37所述的系统,包括两个或更多个集成电路管芯,所述两个或更多个集成电路管芯包括被配置为管理所述集成电路管芯的所述局部功率状态的相应功率管理器电路,并且其中所述两个或更多个集成电路管芯中的至少一者包括被配置为使所述功率管理器电路同步的另一个功率管理器电路。
39.根据任一前述权利要求所述的系统,其中所述外围设备包括以下中的一者或多者:音频处理设备、视频处理设备、机器学习加速器电路、矩阵算术加速器电路、相机处理电路、显示流水线电路、非易失性存储器控制器、外围部件互连控制器、安全处理器或串行总线控制器。
40.根据任一前述权利要求所述的系统,其中所述互连结构将一致代理互连。
41.根据权利要求40所述的系统,其中所述处理器内核中的单个处理器内核对应于一个一致代理。
42.根据权利要求40所述的系统,其中处理器内核的一个集群对应于一个一致代理。
43.根据任一前述权利要求所述的系统,其中所述外围设备中的给定外围设备是非一致代理。
44.根据权利要求43所述的系统,还包括插置在所述给定外围设备与所述互连结构之间的输入/输出代理,其中所述输入/输出代理被配置为执行所述互连结构关于所述给定外围设备的一致性协议。
45.根据权利要求44所述的系统,其中所述输入/输出代理确保使用所述一致性协议对来自所述给定外围设备的请求进行排序。
46.根据权利要求44或45所述的系统,其中所述输入/输出代理被配置为将两个或更多个外围设备的网络耦接到所述互连结构。
47.根据任一前述权利要求所述的系统,还包括被配置为根据选择性可编程散列协议将存储器请求流量分配到系统存储器的散列电路系统。
48.根据权利要求47所述的系统,其中所述可编程散列协议的至少一个编程将一系列存储器请求均匀地分配在所述系统中的多个存储器控制器上以用于所述系列中的多种存储器请求。
49.根据权利要求29所述的系统,其中所述可编程散列协议的至少一个编程以指定粒度将所述存储器空间内的相邻请求分配到物理上远离的存储器接口。
50.根据任一前述权利要求所述的系统,还包括被配置为跟踪由所述统一存储器架构指定的统一存储器地址空间的子集的一致性状态的多个目录,其中所述多个目录被分配在所述系统中。
51.根据权利要求50所述的系统,其中所述多个目录被分配给所述存储器控制器。
52.根据任一前述权利要求所述的系统,其中所述一个或多个存储器控制器电路中的给定存储器控制器包括被配置为跟踪对应于所述给定存储器控制器介接的所述系统存储器的一部分中的数据的多个高速缓存块的目录,其中所述目录被配置为跟踪所述系统中的多个高速缓存中的哪一些正在高速缓存所述多个高速缓存块中的给定高速缓存块,其中所述目录相对于已在所述目录处被排序并处理的存储器请求是精确的,即使在所述存储器请求尚未在所述系统中完成的情况下也是如此。
53.根据权利要求52所述的系统,其中所述给定存储器控制器被配置为基于针对所述给定高速缓存块的存储器请求来发出针对所述给定高速缓存块的一个或多个一致性维护命令,其中所述一个或多个一致性维护命令包括所述多个高速缓存中的对应高速缓存中的用于所述给定高速缓存块的高速缓存状态,其中所述对应高速缓存被配置为基于所述对应高速缓存中的所述高速缓存状态不匹配给定一致性维护命令中的所述高速缓存状态来延迟所述给定一致性维护命令的处理。
54.根据权利要求52至53中任一项所述的系统,其中第一高速缓存被配置为以一级共享状态存储所述给定高速缓存块,并且第二高速缓存被配置为以二级共享状态存储所述给定高速缓存块,并且其中所述给定存储器控制器被配置为使得所述第一高速缓存基于所述存储器请求和所述第一高速缓存中的所述一级共享状态将所述给定高速缓存块转移到请求方。
55.根据权利要求52至54中任一项所述的系统,其中所述给定存储器控制器被配置为基于第一存储器请求的类型向所述多个高速缓存中的第一高速缓存发出第一一致性维护命令和第二一致性维护命令中的一者,其中所述第一高速缓存被配置为基于所述第一一致性维护命令向发出所述第一存储器请求的请求方转发第一高速缓存块,并且其中所述第一高速缓存被配置为基于所述第二一致性维护命令将所述第一高速缓存块返回到所述给定存储器控制器。
56.一种集成电路,包括:
多个处理器内核;
多个图形处理单元;
不同于所述处理器内核和所述图形处理单元的多个外围设备;
被配置为与系统存储器介接的一个或多个存储器控制器电路;
被配置为在所述一个或多个存储器控制器电路与所述处理器内核、所述图形处理单元和所述外围设备之间提供通信的互连结构;以及
耦接到所述互连结构并被配置为将所述互连结构耦接到所述集成电路的另一个实例上的对应互连结构的片外互连件,其中所述互连结构和所述片外互连件提供透明地连接位于所述集成电路的单个实例或所述集成电路的两个或更多个实例中的所述一个或多个存储器控制器电路、所述处理器内核、所述图形处理单元和所述外围设备的接口。
57.一种方法,包括:
经由统一存储器架构,通过系统中的互连结构在多个处理内核、多个图形处理单元、不同于多个处理器内核和所述多个图形处理单元的多个外围设备以及一个或多个存储器控制器电路之间通信。
CN202280056735.9A 2021-08-23 2022-08-23 可扩展片上系统 Pending CN117836750A (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US202163235979P 2021-08-23 2021-08-23
US63/235,979 2021-08-23
US17/821,305 2022-08-22
US17/821,312 2022-08-22
US17/821,312 US11803471B2 (en) 2021-08-23 2022-08-22 Scalable system on a chip
US17/821,296 2022-08-22
PCT/US2022/041189 WO2023028042A1 (en) 2021-08-23 2022-08-23 Scalable system on a chip

Publications (1)

Publication Number Publication Date
CN117836750A true CN117836750A (zh) 2024-04-05

Family

ID=85227541

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280056735.9A Pending CN117836750A (zh) 2021-08-23 2022-08-23 可扩展片上系统

Country Status (7)

Country Link
US (2) US11934313B2 (zh)
KR (3) KR20240035610A (zh)
CN (1) CN117836750A (zh)
AU (1) AU2022332113A1 (zh)
DE (1) DE202022002976U1 (zh)
TW (1) TW202328895A (zh)
WO (1) WO2023028042A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11531061B2 (en) * 2020-08-03 2022-12-20 Qualcomm Incorporated Interleaved testing of digital and analog subsystems with on-chip testing interface
CN117155842B (zh) * 2023-10-25 2024-02-13 苏州元脑智能科技有限公司 一种双主机路由的实现方法、系统、设备及介质
CN117950739A (zh) * 2024-03-26 2024-04-30 摩尔线程智能科技(北京)有限责任公司 主控制单元确定方法、装置、设备、存储介质及程序产品

Family Cites Families (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US976697A (en) 1910-09-08 1910-11-22 Ernst Roth Sliding brush for plan sifters.
US5893160A (en) 1996-04-08 1999-04-06 Sun Microsystems, Inc. Deterministic distributed multi-cache coherence method and system
US5897657A (en) 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessing system employing a coherency protocol including a reply count
US6049847A (en) 1996-09-16 2000-04-11 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US6111582A (en) 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US6263409B1 (en) 1998-12-22 2001-07-17 Unisys Corporation Data processing system and method for substituting one type of request for another for increased performance when processing back-to-back requests of certain types
US6976115B2 (en) 2002-03-28 2005-12-13 Intel Corporation Peer-to-peer bus segment bridging
US6854043B2 (en) 2002-07-05 2005-02-08 Hewlett-Packard Development Company, L.P. System and method for multi-modal memory controller system operation
US7191349B2 (en) 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
US8321650B2 (en) 2003-01-13 2012-11-27 Emulex Design & Manufacturing Corporation Alignment-unit-based virtual formatting methods and devices employing the methods
US7098541B2 (en) 2003-05-19 2006-08-29 Hewlett-Packard Development Company, L.P. Interconnect method for directly connected stacked integrated circuits
US7444547B2 (en) * 2003-06-19 2008-10-28 International Business Machines Corproation Method, system, and product for programming in a simultaneous multi-threaded processor environment
US7340548B2 (en) 2003-12-17 2008-03-04 Microsoft Corporation On-chip bus
US7720054B2 (en) 2004-03-02 2010-05-18 Cisco Technology, Inc. Router configured for outputting update messages specifying a detected attribute change of a connected active path according to a prescribed routing protocol
US20070079075A1 (en) 2005-09-30 2007-04-05 Collier Josh D Providing cache coherency in an extended multiple processor environment
US7636835B1 (en) 2006-04-14 2009-12-22 Tilera Corporation Coupling data in a parallel processing environment
WO2007138124A1 (es) 2006-05-30 2007-12-06 Intel Corporation Método aparato y sistema aplicado en un protocolo de coherencia de una memoria cache
US7480770B2 (en) 2006-06-14 2009-01-20 Sun Microsystems, Inc. Semi-blocking deterministic directory coherence
JP2008065713A (ja) 2006-09-08 2008-03-21 Canon Inc マルチプロセッサシステム及び割込み制御方法
US8074022B2 (en) 2006-09-28 2011-12-06 Virident Systems, Inc. Programmable heterogeneous memory controllers for main memory with different memory modules
US20080162869A1 (en) 2006-12-29 2008-07-03 Intel Corporation Address hashing to help distribute accesses across portions of destructive read cache memory
TWI317945B (en) 2007-01-12 2009-12-01 Via Tech Inc Memory refresh method and system
US8438320B2 (en) 2007-06-25 2013-05-07 Sonics, Inc. Various methods and apparatus for address tiling and channel interleaving throughout the integrated system
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8286014B2 (en) 2008-03-25 2012-10-09 Intel Corporation Power management for a system on a chip (SoC)
US8291245B2 (en) 2008-04-17 2012-10-16 International Business Machines Corporation Method, apparatus and system for reducing power consumption based on storage device data migration
US20090305463A1 (en) 2008-06-06 2009-12-10 International Business Machines Corporation System and Method for Thermal Optimized Chip Stacking
US8190820B2 (en) 2008-06-13 2012-05-29 Intel Corporation Optimizing concurrent accesses in a directory-based coherency protocol
US7849247B2 (en) 2008-10-14 2010-12-07 Freescale Semiconductor, Inc. Interrupt controller for accelerated interrupt handling in a data processing system and method thereof
US8799582B2 (en) 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
US20140325129A1 (en) * 2008-12-31 2014-10-30 Micron Technology, Inc. Method and apparatus for active range mapping for a nonvolatile memory device
US8260996B2 (en) 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
US8549249B1 (en) 2009-09-21 2013-10-01 Tilera Corporation Supporting secondary atomic operations using primary atomic operations
US8407516B2 (en) 2009-12-23 2013-03-26 Intel Corporation Controlling memory redundancy in a system
US8874855B2 (en) 2009-12-28 2014-10-28 Empire Technology Development Llc Directory-based coherence caching
US8799553B2 (en) 2010-04-13 2014-08-05 Apple Inc. Memory controller mapping on-the-fly
KR101717494B1 (ko) 2010-10-08 2017-03-28 삼성전자주식회사 인터럽트 처리 장치 및 방법
US20120096295A1 (en) 2010-10-18 2012-04-19 Robert Krick Method and apparatus for dynamic power control of cache memory
US20120144104A1 (en) * 2010-12-02 2012-06-07 Advanced Micro Devices, Inc. Partitioning of Memory Device for Multi-Client Computing System
US8458386B2 (en) 2010-12-07 2013-06-04 Apple Inc. Atomic interrupt masking in an interrupt controller to prevent delivery of same interrupt vector for consecutive interrupt acknowledgements
US8959270B2 (en) 2010-12-07 2015-02-17 Apple Inc. Interrupt distribution scheme
EP2490100B1 (en) 2011-02-14 2014-10-15 2236008 Ontario Inc. Suspendable interrupts for processor idle management
US8732496B2 (en) 2011-03-24 2014-05-20 Nvidia Corporation Method and apparatus to support a self-refreshing display device coupled to a graphics controller
US8775700B2 (en) 2011-09-29 2014-07-08 Intel Corporation Issuing requests to a fabric
TWI501254B (zh) 2011-10-03 2015-09-21 Invensas Corp 用於具有正交窗之多晶粒導線結合總成之短線最小化
WO2013085501A1 (en) 2011-12-07 2013-06-13 Intel Corporation Multiple transaction data flow control unit for high-speed interconnect
US9029234B2 (en) 2012-05-15 2015-05-12 International Business Machines Corporation Physical design symmetry and integrated circuits enabling three dimentional (3D) yield optimization for wafer to wafer stacking
US20130318308A1 (en) 2012-05-24 2013-11-28 Sonics, Inc. Scalable cache coherence for a network on a chip
US9424191B2 (en) 2012-06-29 2016-08-23 Intel Corporation Scalable coherence for multi-core processors
US8963933B2 (en) 2012-07-23 2015-02-24 Advanced Micro Devices, Inc. Method for urgency-based preemption of a process
US9009368B2 (en) 2012-10-23 2015-04-14 Advanced Micro Devices, Inc. Interrupt latency performance counters
US9135174B2 (en) 2012-11-27 2015-09-15 International Business Machines Corporation Coherent attached processor proxy supporting master parking
US9348762B2 (en) 2012-12-19 2016-05-24 Nvidia Corporation Technique for accessing content-addressable memory
US9678564B2 (en) 2012-12-21 2017-06-13 Nxp B.V. Multiprocessor system with interrupt distributor
US9170946B2 (en) 2012-12-21 2015-10-27 Intel Corporation Directory cache supporting non-atomic input/output operations
US9075952B2 (en) 2013-01-17 2015-07-07 Intel Corporation Controlling bandwidth allocations in a system on a chip (SoC)
WO2014120215A1 (en) 2013-01-31 2014-08-07 Hewlett-Packard Development Company, L.P. Adaptive granularity row-buffer cache
US8786069B1 (en) 2013-03-15 2014-07-22 Invensas Corporation Reconfigurable pop
US9160627B2 (en) 2013-04-04 2015-10-13 Netspeed Systems Multiple heterogeneous NoC layers
US9405303B2 (en) 2013-04-22 2016-08-02 Emerson Electric Co. Power stealing for a wireless-enabled thermostat
CN105229621B (zh) 2013-05-16 2018-08-28 慧与发展有限责任合伙企业 多模式代理器
US9244874B2 (en) 2013-06-14 2016-01-26 National Instruments Corporation Selectively transparent bridge for peripheral component interconnect express bus systems
US9054977B2 (en) 2013-08-05 2015-06-09 Netspeed Systems Automatic NoC topology generation
US9355034B2 (en) 2013-12-31 2016-05-31 Samsung Electronics Co., Ltd. Removal and optimization of coherence acknowledgement responses in an interconnect
US9442869B2 (en) 2014-01-24 2016-09-13 Texas Instruments Incorporated Programmable interrupt routing in multiprocessor devices
US9842076B2 (en) 2014-05-19 2017-12-12 Microchip Technology Incorporated Switchless USB C-connector hub
US9825779B2 (en) 2014-05-23 2017-11-21 Arteris, Inc. Network-on-chip (NoC) topology generation
EP3198460B1 (en) 2014-09-26 2022-08-17 Intel Corporation Apparatus and method for configuring sets of interrupts
US10394730B2 (en) 2014-11-14 2019-08-27 Cavium, Llc Distributed interrupt scheme in a multi-processor system
US10523585B2 (en) 2014-12-19 2019-12-31 Amazon Technologies, Inc. System on a chip comprising multiple compute sub-systems
US9747225B2 (en) 2015-05-05 2017-08-29 Microsoft Technology Licensing, Llc Interrupt controller
US9996487B2 (en) 2015-06-26 2018-06-12 Intel Corporation Coherent fabric interconnect for use in multiple topologies
US20170017419A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
JP6500736B2 (ja) 2015-10-14 2019-04-17 富士通株式会社 半導体装置および半導体装置の制御方法
US9940423B2 (en) 2015-12-20 2018-04-10 Arteris, Inc. Editing a NoC topology on top of a floorplan
US10191877B2 (en) 2015-12-22 2019-01-29 Intel Corporation Architecture for software defined interconnect switch
US10733350B1 (en) 2015-12-30 2020-08-04 Sharat C Prasad On-chip and system-area multi-processor interconnection networks in advanced processes for maximizing performance minimizing cost and energy
EP3400688B1 (en) 2016-01-04 2020-05-20 Gray Research LLC Massively parallel computer, accelerated computing clusters, and two dimensional router and interconnection network for field programmable gate arrays, and applications
US10585826B2 (en) 2016-01-25 2020-03-10 Advanced Micro Devices, Inc. Using processor types for processing interrupts in a computing device
US20170269666A1 (en) * 2016-03-18 2017-09-21 Apple Inc. Smart Dynamic Voltage and Frequency Scaling of Electronic Components
US10403333B2 (en) 2016-07-15 2019-09-03 Advanced Micro Devices, Inc. Memory controller with flexible address decoding
US20180189229A1 (en) 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Deep convolutional network heterogeneous architecture
US10769080B2 (en) 2017-03-30 2020-09-08 Futurewei Technologies, Inc. Distributed and shared memory controller
US10043232B1 (en) 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10372446B2 (en) 2017-07-01 2019-08-06 Intel Corporation Technology to dynamically modulate memory device read granularity
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10268600B2 (en) 2017-09-12 2019-04-23 Intel Corporation System, apparatus and method for prefetch-aware replacement in a cache memory hierarchy of a processor
US10719651B2 (en) 2017-12-30 2020-07-21 Arteris, Inc. Synthesizing topology for an interconnect network of a system-on-chip with intellectual property blocks
US10579469B2 (en) 2018-05-25 2020-03-03 Arm Limited Interconnection network for integrated circuit
US10997771B2 (en) 2018-08-29 2021-05-04 Intel Corporation Position-based rendering apparatus and method for multi-die/GPU graphics processing
KR102641520B1 (ko) 2018-11-09 2024-02-28 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법
US10944693B2 (en) 2018-11-13 2021-03-09 Advanced Micro Devices, Inc. Routing flits in a network-on-chip based on operating states of routers
US11734192B2 (en) 2018-12-10 2023-08-22 International Business Machines Corporation Identifying location of data granules in global virtual address space
US11113216B2 (en) 2019-03-20 2021-09-07 Mediatek Inc. Dispatching interrupts in a multi-processor system based on power and performance factors
US10673439B1 (en) 2019-03-27 2020-06-02 Xilinx, Inc. Adaptive integrated programmable device platform
US11036279B2 (en) 2019-04-29 2021-06-15 Arm Limited Apparatus and method for managing a cache
EP4066124A1 (en) 2019-11-26 2022-10-05 Mythic, Inc. Tile subsystem and method for automated data flow and data processing within an integrated circuit architecture
US11327786B2 (en) 2020-07-21 2022-05-10 Arm Limited Distributing interrupt request to be handled by target virtual processor
US11544193B2 (en) 2020-09-11 2023-01-03 Apple Inc. Scalable cache coherency protocol
US20230028642A1 (en) 2021-07-26 2023-01-26 Verizon Patent And Licensing Inc. Systems and methods for application security utilizing centralized security management
US20230069310A1 (en) * 2021-08-10 2023-03-02 Nvidia Corporation Object classification using one or more neural networks

Also Published As

Publication number Publication date
AU2022332113A1 (en) 2024-03-07
KR20240035610A (ko) 2024-03-15
TW202328895A (zh) 2023-07-16
US11934313B2 (en) 2024-03-19
KR20240055142A (ko) 2024-04-26
US20230056044A1 (en) 2023-02-23
US20230058989A1 (en) 2023-02-23
WO2023028042A1 (en) 2023-03-02
US11803471B2 (en) 2023-10-31
KR20240055141A (ko) 2024-04-26
US20230053530A1 (en) 2023-02-23
DE202022002976U1 (de) 2024-03-11

Similar Documents

Publication Publication Date Title
US20190205244A1 (en) Memory system, method and computer program products
JP5826865B2 (ja) プログラマブル回路と埋込型プロセッサシステムとを伴う集積回路
CN117836750A (zh) 可扩展片上系统
US10509740B2 (en) Mutual exclusion in a non-coherent memory hierarchy
KR102355989B1 (ko) 다중 노드 시스템 저전력 관리
Rotenberg et al. Rationale for a 3D heterogeneous multi-core processor
Hill et al. THE UNCORE: A MODULAR APPROACH TO FEEDING THE HIGH-PERFORMANCE CORES.
KR102604573B1 (ko) 다수의 독립적인 온-칩 상호연결부
CN116057514A (zh) 可扩展高速缓存一致性协议
Firoozshahian et al. A memory system design framework: creating smart memories
US9824171B2 (en) Register file circuit design process
US12007895B2 (en) Scalable system on a chip
Abdallah Heterogeneous Computing: An Emerging Paradigm of Embedded Systems Design
Shim et al. Design tradeoffs for simplicity and efficient verification in the Execution Migration Machine
CN117321538A (zh) 管芯到管芯动态时钟和功率门控
Jhamb et al. A high level implementation and performance evaluation of level-I asynchronous cache on FPGA
Schmidt Accelerating checkpoint/restart application performance in large-scale systems with network attached memory
Kliem et al. Scalability evaluation of an FPGA-based multi-core architecture with hardware-enforced domain partitioning
Debnath et al. The Pentium processor-90/100, microarchitecture and low power circuit design
US11138111B2 (en) Parallel coherence and memory cache processing pipelines
Dongare et al. Design of Shared Resource Based Multicore Embedded Controller Using LEON Processor
US20200097421A1 (en) Data fast path in heterogeneous soc
KR20240034258A (ko) Ram으로서의 캐시 메모리의 동적 할당
CN117882028A (zh) 基于限制硬件强制的功率控制的功率管理
Ben Abdallah et al. Multicore SoC Organization

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