CN105814547B - 输入/输出内存映射单元和北桥 - Google Patents

输入/输出内存映射单元和北桥 Download PDF

Info

Publication number
CN105814547B
CN105814547B CN201480067107.6A CN201480067107A CN105814547B CN 105814547 B CN105814547 B CN 105814547B CN 201480067107 A CN201480067107 A CN 201480067107A CN 105814547 B CN105814547 B CN 105814547B
Authority
CN
China
Prior art keywords
access
write
processor
address
gasket
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480067107.6A
Other languages
English (en)
Other versions
CN105814547A (zh
Inventor
维德海雅娜丹·卡尔雅娜孙达拉姆
菲利普·恩杰
马吉·陈
文森特·奎瓦
安东尼·阿莎罗
吉姆歇德·米尔扎
格雷戈里·道格拉斯·唐利
布赖恩·布鲁萨尔
本杰明·特斯恩
雅尼夫·阿迪立
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.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices 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 ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of CN105814547A publication Critical patent/CN105814547A/zh
Application granted granted Critical
Publication of CN105814547B publication Critical patent/CN105814547B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/12Replacement control
    • 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
    • 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/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1004Compatibility, e.g. with legacy hardware
    • 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/655Same page detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供在硬件中经由新原子test[0]和OR和Mask进行页表访问和脏位管理。本发明还提供启用ACE到CCI转译的垫片。这个垫片进一步提供ACE与CCI之间的请求转译、牺牲品和探测冲突的死锁避免、ARM屏障处理和功率管理交互。本发明还提供针对使统一北桥死锁的ARM牺牲品/探测冲突处理的解决方案。这些解决方案包括专用回写虚拟信道、针对使用4跳协议的IO请求的探测和MCT中的回写重新排序能力,其中牺牲品在其传递较旧请求时用数据更新所述请求。

Description

输入/输出内存映射单元和北桥
相关申请的交叉参考
本申请要求2013年10月27日提交的标题为INPUT/OUTPUT MEMORY MAP UNIT ANDNORTHBRIDGE的美国临时专利申请号61/896,092的权益,所述申请的内容以引用的方式并入本文中。
技术领域
所公开的实施例大体上涉及内存映射和转译器,且特定来说涉及输入/输出内存映射单元和北桥。
发明背景
页表是由计算机操作系统中的虚拟内存系统用来存储虚拟地址与物理地址之间的映射的数据结构。虚拟地址是由访问进程使用,而物理地址是由硬件或更具体来说RAM使用。
在使用虚拟内存的操作系统中,每个进程被给予其与大的连续内存区段合作的印象。事实上,每个进程的内存可分散在物理内存的不同区域中,或可已被移动(页调出)到另一存储设备,通常移动到硬盘。
当进程请求访问其内存中的数据时,操作系统负责将由所述进程提供的虚拟地址映射到其中存储有所述数据的实际内存的物理地址。页表是操作系统存储其的虚拟地址到物理地址映射之处,其中每个映射也称为页表条目(PTE)。
可在虚拟到物理地址转译后即刻采取行动。如果发生TLB失败,那么重启每次转译,使得查找可通过硬件正确地发生。
CPU的内存管理单元(MMU)存储来自操作系统页表的最近使用的映射的高速缓存。这称为转译后备缓冲器(TLB),其是相联高速缓存。
当虚拟地址需要转译成物理地址时,首先搜索TLB。如果发现匹配(TLB命中),那么传回物理地址且内存访问可继续进行。然而,如果不存在匹配(称为TLB失败),那么处理程序通常将查找页表中的地址映射以查看是否存在映射(页面查核行程)。如果存在映射,那么将所述映射回写到TLB(这必须完成,因为硬件通过虚拟内存系统中的TLB访问内存),且重启故障指令(这也可并行发生)。这个后续转译将寻找TLB命中,且内存访问将继续进行。
页表查找可能出于两个原因而失败。第一个原因是如果不存在可用于虚拟地址的转译,那么意味着所述虚拟地址是无效的。这通常将因为编程错误而发生,且操作系统必须采取某种行动来处理这个问题。关于现代操作系统,其将把分段错误发送到出错的程序。
如果页不常驻在物理内存中,那么页表查找也可能失败。这将发生,条件是请求的页已从物理内存移出从而为另一页腾出空间。在这种情况下,将页页调出到定位在诸如硬盘驱动器的介质上的辅助存储器(这个辅助存储器或“后备存储器”通常称为“交换分区”(条件是其为磁盘分区),或称为交换文件“swapfile”或“页文件”(条件是其为文件))。在发生这种情况时,需要从磁盘获取页并将其放回到物理内存中。相似机制用于内存映射文件,其按需映射到虚拟内存并加载到物理内存。
当物理内存未满时(这是简单操作):将页回写到物理内存中,更新页表和TLB,且重启指令。然而,在物理内存已满时,物理内存中的一个或多个页将需要页调出从而为请求的页腾出空间。页表需要更新以标记先前在物理内存中的页不再位于所述物理内存处,且标记磁盘上的页现位于物理内存中。TLB也需要更新,包括从TLB移除被页调出的页和重启指令。要页调出哪个页是页替换算法的主题。然而,这些算法无法提供可以通过使用硬件管理提供的必需能力。
ARM处理器使用ACE协议来与内存子系统交互。AMD x86内存子系统(北桥)使用CCI协议。ARM ACE协议和AMD CCI协议是不兼容的。事实上,在需要桥接在一起的协议之间存在许多差别。一些示例包括:请求、响应和探测/监听编码;ACE协议将推送数据写入到内存子系统中且CCI协议使内存子系统在其准备好时请求写入数据;-探测/牺牲品死锁;ACE协议允许处理器基于探测响应将修改数据回拷责任传递到内存子系统且CCI不允许这么做;ACE和CCI功率管理控制信号和交握是大不相同的;且两个协议允许处理器和内存子系统以不同时钟频率操作,同时CCI使用时钟启用方案来处理更快时钟域中的时钟比节流且ACE使用就绪/有效交握。需要可有效地桥接这两个协议的系统。
基于ARM的系统处理探测/监听竞争条件,其中CPU以与基于cHT的系统不同的方式回写。在基于cHT的系统中,CPU需要始终提供探测响应而无任何依赖性。如果探测命中CPU牺牲品,那么CPU指示牺牲品是否已被发送(且稍后将被取消)且在探测响应中供应回写数据。如果尚未设置牺牲品,那么其状态是根据探测类型而降级。在ARM系统中,CPU将阻挡且不递送探测响应直到回写已完成为止。这即使是针对排队在CPU/集群中且尚未发布的探测也可发生。因此,存在其中统一北桥可基于ARM牺牲品/探测冲突处理而变成死锁的问题。
发明内容
本发明提供在硬件中经由新原子test[0]和OR和Mask进行页表访问和脏位管理。
本发明还提供启用ACE到CCI转译的垫片。这个垫片进一步提供ACE与CCI之间的请求转译、牺牲品和探测冲突的死锁避免、ARM屏障处理和功率管理交互。
本发明还提供针对使统一北桥死锁的ARM牺牲品/探测冲突处理的解决方案。这些解决方案包括专用回写虚拟信道、对使用4跳协议的IO请求的探测和MCT中的回写重新排序能力,其中牺牲品在其传递较旧请求时用数据更新所述请求。
附图简述
更详细了解可从通过示例结合附图给出的下文描述获得,其中:
图1是其中可实施一个或多个所公开实施例的示例性装置的框图;
图2说明包含用于提供统一北桥与atlas集群之间的交易的转译的垫片的示例性系统;
图3说明经由整个C6进入屏蔽的中断的流程;
图4说明与既有Pstate逻辑的连接性的示例性图;
图5说明使用WFI的Pstate序列的示例性图;
图6说明使用WFE的P-state序列的示例性图;
图7说明使用垫片静默的Pstate序列的示例性图;
图8说明被提供来保证排空横跨垫片与统一北桥之间的NBSYN的所有飞行流量的方法800;以及
图9说明死锁的流程。
具体实施方式
本发明提供在硬件中经由新原子test[0]和OR和Mask进行页表访问和脏位管理。本发明还提供启用ACE到CCI转译的垫片。这个垫片进一步提供ACE与CCI之间的请求转译、牺牲品和探测冲突的死锁避免、ARM屏障处理和功率管理交互。本发明还提供针对使统一北桥死锁的ARM牺牲品/探测冲突处理的解决方案。这些解决方案包括专用回写虚拟信道、针对使用4跳协议的IO请求的探测和MCT中的回写重新排序能力,其中牺牲品在其传递较旧请求时用数据更新所述请求。
图1是其中可实施一个或多个所公开实施例的示例性装置100的框图。装置100可包括例如计算机、游戏装置、手持装置、机顶盒、电视机、手机或桌上型计算机。装置100包括处理器102、内存104、存储设备106、一个或多个输入装置108和一个或多个输出装置110。任选地,装置100还可包括输入驱动器112和输出驱动器114。应了解,装置100可包括图1中未示出的额外组件。
处理器102可包括中央处理单元(CPU 102)、图形处理单元(GPU)、被定位在同一个晶粒上的CPU和GPU、或一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。内存104可定位在与处理器102相同的晶粒上,或可定位成与处理器102分离。内存104可包括易失性或非易失性内存104,例如,随机访问内存104(RAM)、动态RAM或高速缓存。
存储设备106可包括固定或可移除存储设备,例如,硬盘驱动器、固态驱动器、光盘或闪盘驱动器。输入装置108可包括键盘、小键盘、触屏、触控板、检测器、麦克风、加速计、陀螺仪、生物扫描器或网络连接件(例如,用于传输和/或接收无线I4E 802信号的无线局域网卡)。输出装置110可包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接件(例如,用于传输和/或接收无线I4E 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入装置108通信,且容许处理器102从输入装置108接收输入。输出驱动器114与处理器102和输出装置110通信,且容许处理器102将输出发送到输出装置110。应注意,输入驱动器112和输出驱动器114是任选组件,且应注意,如果不存在输入驱动器112和输出驱动器114,那么装置100将以相同方式操作。
在访问页表中的表条目时,硬件可将访问位设置为1。Test[0]和OR原子(或Test[0]SetandClr与Op2均是1)可被使用且可由寄存器启用。脏位机制可以是有利的。例如,当请求需要写入权限但AP[2]是1’b1时,硬件可检验DBM位(最后一个页表描述符的位51),且如果将脏位设置为1’b1,那么将AP[2]设置为1’b0。可在这个步骤中使用Test[0]SetandClr原子、Test[0]集和Clr:(支持这个原子操作的32b版本和64b版本两者)。
例如,以下操作可在硬件中用作用来管理页表的功能。
Mem[Addr]=Mem[Addr][0]?((Mem[Addr]|Opl)&Op2):Mem[Addr];
方程式1
如果位0=测试位,那么方程式1提供集是否执行操作以修改内存1(Mem[Addr]),否则什么也不做(Mem[Addr][0])。操作是对内存地址操作的运算元Op1和Op2。例如,可基于Op1和Op2在ADDR中设置和清除内存地址。这在硬件中提供用来管理页表的功能。
可启用脏位机制,条件是也启用访问位机制。在脏位机制位于适当位置的情况下,方程式2允许AP[2]指示页是脏的还是干净的:
AP[2]=1—页干净:AP[2]=0—页脏 方程式2
访问位和AP[2]位两者可在单Test[0]SetandClr原子操作中从相同块/页转译表条目更新。
使用硬件来管理访问旗标可以是有利的。例如,对于安全和非安全PL1&0阶段1转译而言,一种实施方案可提供访问旗标的硬件管理。在这种情况下,如果将其中访问旗标被设置为0的转译表条目读取到转译后备缓冲器(TLB)中,那么硬件将1写入到内存中的转译表条目的访问旗标位。为安全和非安全PL1&0阶段1转译提供访问旗标的硬件管理的一种实施方案:可使用硬件访问旗标字段ID_MMFR2[31:28]来指示对这个实施方案的选择;可通过将SCTLR.HA位设置为1来实施所述位以启用访问旗标的硬件管理。
当使用短描述符转译表格式时,执行访问旗标的硬件管理,条件是既将SCTLR.AFE设置为1以启用对访问旗标的使用又将SCTLR.HA设置为1以启用访问旗标的硬件管理。SCTLR的分组使得能够针对安全和非安全地址转译来独立定义位,从而允许对安全/非安全位作出不同决定。当针对地址转译阶段启用访问旗标的硬件管理时,针对对应转译不生成访问旗标故障。这容许以一个原子更新进行更新且如果不在硬件中进行管理,那么无法发生所述更新。
本发明涉及“垫片”的实施例,所述垫片将位于同步器与核心集群之间的中央处理单元(CPU 102)时钟域中。在此,垫片可将交易转译成高速缓存一致性互连(CCI)交易且将系统探测转译成监听。另外,垫片可转译使核心集群与统一北桥(UNB)/一致性超传输(cHT)环境互操作所必需的内存映射、传输大小和其它功能。
参考图2,示出了示例性系统200,其包括用于提供统一北桥280与atlas集群290之间的交易的转译的垫片210。如图2中所示,atlas集群290可在atlas总线接口中包括多个信道220。这些信道220可包括ACE读取响应信道220a、ACE读取地址信道220b1、ACE写入地址信道220b2、ACE写入数据信道220c、ACE写入响应信道220d、ACE监听响应信道220e和ACE监听地址信道220f。使用垫片210,atlas集群290的每个信道220可经由CCI 230转译到统一北桥280。例如,信道220a可被转译到CCI读取响应230a,信道220b1和220b2(统称为220b)可被转译到CCI请求230b,信道220c可被转译到CCI写入数据230c,信道220d可被转译到CCI写入读取230d1和CCI写入缓冲器释放230d2(统称为230d),信道220e可被转译到CCI探测响应230e,且信道220f可被转译到CCI探测230f。
从CCI总线230到统一北桥280,可使用低延时同步器270,如本文中将进一步描述。
来自CPU 102的请求需要从先进可扩展接口(AXI)一致性扩展(ACE)命令转译成等效CCI命令。大体来说,每个ARM请求类型映射到特定CCI请求类型上。在读取和写入地址信道的AxDomain和AxSnoop字段中编码ARM命令类型。在垫片210内,特定转译可采取多种不同形式。例如,在从CCI读取响应230a转译到ACE读取响应信道220a中,可实施读取数据队列235。
在从ACE读取地址信道220b1和ACE写入地址信道220b2起的转译中,这两者可(诸如)通过使用多路复用器237而组合且然后输入到请求/内存转译器240中、通过垫片请求队列245到CCI请求生成器250、到CCI请求230b。
在从CCI探测230f起的转译中,垫片包括输出到队列259的探测/监听转译器260,所述队列259还从探测/响应互锁265接收输入信息以在ACE监听地址信道220f上输出。
在从CCI写入数据和CCI读取数据230d转译到ACE写入响应信道220d中,可使用垫片210内的写入处理器255。ACE监听响应信道220e输入到队列257中,所述队列257将数据提供给多路复用器254且输出到CCI探测响应230e,同时从写入处理器255接收输入。ACE写入数据信道220c输入到队列252中,所述队列252输出到254,同时从写入处理器255接收输入。多路复用器254输出到CCI写入数据230c。
可使用表1中所示的以下转译。
表1
在表1中,示出了可在图2的路径中执行的转译。在表的左手侧示出了ACE转译,且在顶部处示出了CCI转译。优选转译被示为绿色(较暗阴影)且替代转译被示为桃红色(较浅阴影)。
总线连接件可支持直到位43的地址,同时CCI支持直到位47的地址。另外,处理器可不使用完整地址空间,因此较高4个位中的一个或多个可不用且可被假设为零。否则,这些未驱动的较高位可被驱动为零,或过载以携带ACE属性。
当前定义的过载包括位[44]将携带AxPROT[l],所述AxPROT[l]指示“安全”或“非安全”访问(分别是0或1)。这是由通用中断控制器(GIC)用于分组寄存器访问。这个位可在转递到任何其它目的地之前通过SRI逻辑归零。
除如所述来转译请求以外,垫片210还可被或可不被请求来将ACE标签转译成CCI标签。如果ACE标签空间适合在CCI标签空间内,那么所述标签可不变地通过垫片210传递。尽管ACE协议确实允许重用相同标签以指示两个或两个以上交易保持有序,但统一北桥280通常不维持排序。因此,共享相同标签/id的ACE请求可在垫片210内串行化,以防止与复制标签的交易到达统一北桥280。
表2中提供请求/监听组合的合并表。
表2
在表2中,示出了请求/探测组合的合并表。这些可包括生成ID监听的ARM交易。绿色监听(较暗框)是优选的,而桃红色监听(较浅框)是替代监听。
CCI编码监听230f可经由探测/监听转译器260转译成等效ACE监听交易。ACE协议在监听信道上使用正常读取命令和专用高速缓存维护命令的组合。可使用表3的转译。
表3
表3提供可使用的转译。转译基于ACE监听来定义CCI探测生成细节。
在其中使用单CPU 102集群的情况下,由垫片210接收的探测可以是IO/图形处理单元(GPU)请求的局限于上述情况的结果。
当垫片210从CCI接口接收读取响应230a时,其需要在ACE总线220a上生成等效于集群290的响应。在某些情况下,垫片210可延迟开始ACE响应220a直到已在CCI接口230a上接收到数据的所有数据差拍为止。存在被识别为需要这个延迟的一些情况。突发次序可以是不同的。RdBlkX交易以由ACE总线220预期的包裹突发次序提供数据。错误检验和校正(ECC)错误可导致响应的回放(即,CCI读取数据可能不完整)。
出于诸如中断控制器解码等的目的,必须使用系统内存104映射来识别DRAM与IO。ARM环境使用ARM内存映射来区别DRAM地址与非DRAM地址且进一步细分非DRAM空间。cHT环境使用显式I/O和其它信号来指示地址区域类型。垫片210可使用内存映射来创建预期的辅助地址类型信号以与每个请求一起发送到SRI。内存映射可用来将ARM交易转译成cHT。地址库寄存器包括GIC库地址寄存器(用于设置Reqlo和ReqApic)、扩展配置库(用于设置ReqExtCfg)和DRAM库(用于设置ReqNonCache)。
基于ARM的系统处理探测/监听竞争条件,其中CPU 102以与基于cHT的系统不同的方式回写。在基于cHT的系统中,CPU 102需要始终提供探测响应而无任何依赖性。如果探测命中CPU 102牺牲品,那么CPU 102指示所述牺牲品是否已被发送(且稍后将被取消)且在探测响应中供应回写数据。如果牺牲品尚未设置,那么其状态是根据探测类型而降级。在ARM系统中,CPU 102将阻挡且不递送探测响应直到回写已完成为止。这即使是针对排队在CPU102/集群中且尚未发布的探测也可发生。
为了避免与ARM处理器发生死锁,回写可具有对独立虚拟信道的访问以允许回写排空到DRAM。在MCT内,这些回写可能必须将较旧读取传递到相同地址,所述读取通常可能取决于所述地址。需要实施这的特定变化是供回写横越垫片210的非阻挡路径、供回写横越SRQ的非阻挡路径和穿过横杆的非阻挡路径。当到达MCT中时,回写无需建立对较早请求的依赖性,而是相反被允许传递。另外,最旧读取可取决于回写而加以标记,且被强制在回写完成之后重新发布已被发布的任何DRAM读取操作。
较早读取可被到相同地址的到达回写所“中断”,条件是其探测未完成或源已被接收。如果读取响应已发布到源且回写已到达,那么不太可能告知探测是否将作出响应。可能的是,CPU 102已给出探测响应且然后发布回写。然而,在这种情况下,源可能已接收探测响应与数据。如果发生所述接收,那么可无需重新发布响应。MCT无法预期这种情况。如果MCT已对回写重新排序且已将读取重新发布到DRAM,那么MCT可能必须重新发布响应与新数据。只要在完成目标之前/之时重新发送响应,那么新数据将覆写任何先前响应。
存在其中垫片210以及到内存104的路径已满因此CPU 102无法发布回写的另一可能死锁情境。如果接收到匹配尚待发布的回写(在内部缓冲)的探测且CPU 102停止探测,那么即使回写具有其自身虚拟信道,仍可能发生死锁。CPU 102/集群通过使回写写入与非回写写入不交错而避免这种情况。因此,如果对未发布的回写存在探测依赖性,那么回写型写入可存在于垫片210中且这些回写可排空,从而允许发布(和排空)阻挡的回写。如果存在已发布的非回写写入,那么集群可能不生成探测所依赖的任何回写(甚至未发布的回写)。
垫片210可能需要观测用于驱动和接收来自同步器270的信号的同步器270跳跃时钟逻辑,包含使用预测的FIFO使能以确保用于写入数据有效性的写入命令服从由统一北桥280域中的SRI预期的5时钟分离。传入响应也可服从5时钟分离。垫片210可将响应与ACE时序一起转递到CPU 102。同步器270提供指示稍后是否为读取/写入10个时钟来启用同步器270FIFO的信号。存在用来启用读取和写入的单独信号。驱动域中的逻辑可将信号发送到同步器270使得当在同步器270的输出处接收到信号时,观测所需时序关系。在写入数据的情况下,这意味着垫片210必须在由统一北桥280观测CPU_NbDatVal与正确关系之后驱动CPU_NbDat的5个使能时钟。相似地,垫片210应预期在NB_SysDatVal确证之后取样NB_SysDat的(正好)5个使能时钟上的有效读取数据。
ARM写入在大小和/或字节组合方面比CCI所允许具有更大灵活度。因此,可能的是,某些ACE写入可被分解成多个CCI写入。请求队列245和/或写入缓冲器可能需要跟踪需要传送的特定字节且生成适当命令,从而在所有“子写入”已完成且被释放时仅解除分配条目和缓冲器。
CCI/cHT提供符合数据流的字节使能以作为前置数据差拍。在单前置数据差拍中提供用于剩余数据差拍的所有字节使能信息。在地址和计数字段的背景下解译所述字节使能。
支持大小描述包括在64字节对齐块内传送任何数量的连续完整双字的双字(4字节)操作。计数字段编码可从指定的地址开始且以升序传送的双字数据元素的数量。0到15的计数码分别表示要传送的1个到16个数据元素。横跨64字节边界的请求可被分解成以地址升序发布的多个交易。
字节写入可在自然对齐的32字节地址区域内传送任何字节组合。横跨对齐的32字节边界的传送可被分解成以地址升序发布的多个超传输交易。
CPU_CMD_WRBYTE:5'b01010-在对齐的32字节块内的1到32个潜在非连续字节的非可高速缓存写入。写入1个或2个数据差拍。如果访问的最低有效字节是在字节4到7中,那么ReqAddr[2]=1。
CPU_CMD_WRDWORD:5'b01011-在64字节块内的1个到16个连续双字的非可高速缓存写入。写入1个到4个差拍。
ACE协议提供字节使能连同每个数据差拍。字节使能适用于独立于地址或长度信息的对应数据字节。对于任何“一定大小的”ACE写入而言,允许任何字节使能组合。因此,字节写入(非连续型、非双字节对齐型或非双字节多种大小型)可跨越32字节边界且需要多次传送。任何ACE写入均可被转换成至多2个CCI型字节写入。
在CPU 102/集群内的写入组合可导致16字节传送。即使组合多个CPU 102 16字节写入,仍可始终将所得缓冲器转换成单CCI DWORD写入。无论何时接收到其中停用任何字节选通的写入,均可立即用单字节写入交易刷新所述缓冲器,且可用单DWORD写入来写入所有其它缓冲器(无论是否组合多个写入)。
本文中所述的处理器核心提供某种程度的写入组合,但处理器仅能够组合16字节的写入数据。对于一些应用而言,可以相当有利的是,组合写入直到完整高速缓存线。在垫片210中实施的写入缓冲器的数量可小于写入请求条目的数量。可仅保持写入数据直到由SRI从缓冲器拉取写入所述数据为止,同时需要保持写入请求直到能够将响应发送到CPU102为止(其是在基于目标的SRI缓冲器释放之后完成)。这些写入缓冲器中的一些或所有可具有写入组合能力。
添加写入组合能力需要刷新缓冲器。存在若干种可能的算法且可能必需所述算法中的多种(作为可配置模式来实施或者并行地实施)。可能的缓冲器刷新触发包括:缓冲器变得完全有效的任何时间—强制性刷新;耗尽未发送缓冲器的任何时间—强制性刷新;CPU102写入不命中已向所述CPU 102开放的缓冲器的任何时间;达到对开放缓冲器的数量的编程极限的任何时间;以及指示缓冲器不再被写入的其它启发法。对缓冲器刷新的限制可包括:何时才可组合写入与正确高速缓存能力属性(可缓冲)、需要针对屏障刷新所有缓冲器且在一些实施例中可能需要针对DvmSync刷新所有缓冲器。
屏障交易可用来提供某些排序保证,ARM编程/一致性模型不以其它方式提供所述排序保证。ACE协议提供单独的读取和写入交易信道,且因此,可将屏障交易发布为读取/写入对。一旦两个交易已完成,就安全地假设在屏障之后发布的交易可被排序为在屏障之前且在交易之后。ACE协议定义两种类型的屏障:内存和同步。
内存屏障可由主设备发布以保证如果适当域中的另一主设备可观测在屏障之后发布的任何交易,那么其必须能够观测在屏障之前发布的每个交易。内存屏障可用于基于内存的通信。例如,当将数据阵列写入到内存104时,主设备组件可在设置内存旗标之前发布内存屏障以指示所述阵列可用。可观测所述旗标的任何其它主设备组件必须观测写入到所述阵列的交易。
同步屏障可由主设备发布以保证当屏障完成时可由适当域中的每个主设备观测在屏障之前发布的交易。系统域同步屏障具有在屏障交易之前发布的交易必须在屏障完成之前到达其前往的端点从设备的额外需求。同步屏障可与各种形式的边带发信通信一起使用。例如,当将数据阵列写入到内存104时,主设备组件可在生成中断之前使用同步屏障以指示阵列可用。当同步屏障完成时,保证可由域中的所有主设备组件观测经更新的阵列。
cHT协议提供写入排序使得对后期写入的观测暗指对早期写入的观测。在内存处理与同步屏障指令之间无需存在任何区别。上述两者可完全在垫片210内通过简单地确保所有较早请求已由垫片210在向CPU 102指示完成之前发布到SRI来处理。一旦已发布(或更谨慎地,完成)较旧请求,垫片210就可将屏障交易的响应发送回到CPU 102。
ACE提供ARPROT[2:0]和AWPROT[2:0]以提供对读取和写入请求信道的访问权限。这些位被定义为如下:
AxPROT[0]:0/1-无特权/有特权访问;
AxPROT[1]:0/1-安全/非安全访问;和
AxPROT[2]:0/1-数据/指令访问。
仅将无特权/有特权位传递到SRI。这是必需的,因为计划SRI在支持虚拟化时提供到GIC分发器的编程接口且基于特权等级来对一些寄存器分组。因为地址统一北桥280支持的地址空间大于核心的地址空间,所以较高地址位可能过载有特权指示符且对可能需要转递的任何额外访问权限位这样做。
垫片210将在功率管理操作中具有某种程度的参与。垫片210可通过以下步骤交互:实施对由集群提供的各种事件计数的所需CAC寄存器;以及提供用于改变功率管理状态的“静默”功能。垫片210可通过以下步骤交互以阻挡进一步CCI请求:请求经由输入信号进行功率管理;等待未完成的CCI请求完成;以及然后驱动输出信号以指示接口是闲置的。
出于功率管理的目的,可基于频率对循环计数加权。集群不具有对频率信息的访问。频率是通过统一北桥280来设置,以作为软件用期望P-state来编程寄存器的结果。功率管理软件(PEP)可发信SMU以在每次发生频率变化时更新垫片210中的权重。或者,P-state频率表可被复制在垫片210中且可由垫片210观测当前P-state的更新写入且透明地更新权重。
为不受限于上述方法,可供应一定数量的计数器来加以编程以对被视为感兴趣的任何PMU事件信号计数。每个计数器可经编程以指示将对PMU事件、总线读取/写入指示或时钟事件中的哪些计数。例如,其中具有等待事件/等待中断(WFE/WFI)的循环计数发信以对有效循环计数的配置。POR和SMU可为这些计数器中的每个提供权重。
功率管理与软件和中断控制器建立接口。在一个实施方案中,软件组件是微代码且中断控制器是APIC。在ARM架构中,对实施微代码的没有规定,且中断控制器是GIC。
功率管理具有实施方案特定性。SOC中的特定硬件对OS是不可见的。OS经由具体定义的接口来访问功率管理硬件,每个接口实施方案隐藏在厂商特定软件后面。C-state和P-state经由ACPI呼叫广告到OS,且OS作出由微代码诱捕和处理的请求。在ARM中,这个代码层可被供应给Windows和Android两者。在Windows RT上,这个代码称为平台引擎插件(PEP)且在Android中,功率管理驱动器代码可直接编译成内核。这些代码是以针对C-state变化的CPUidle和针对P-state变化的CPUfreq的形式出现。类似于泛在识别码(ucode)接口,到功率管理硬件的接口可在PEP或内核驱动器中完成。为简单起见,将在描述ARM实施方案时提供对Android内核驱动器的参考。虽然在OS软件栈中是以不同方式命名和组织,但PEP履行与Android内核驱动器或微代码相同的将微架构抽象为OS的角色。人们可基于本文中的描述来获得Android功率管理内核驱动器架构并将其应用于Microsoft平台。
不同于到功率管理硬件的微代码(泛在识别码)或内核驱动器接口,APIC或GIC在架构上对OS是可见的。SOC硬件可实施对应于架构的中断控制器。因此,共同功率管理硬件可适应两个接口。
可实施GIC v2规范。不同于GIC v3,旧版GIC-400在被硬接线来支持高达8个核心的一个组件中实施分发和递送两者(CPU 102接口)。CPU 102接口的输出是每核心的FIQ/IRQ引脚和虚拟化配对物。这个架构类似于APIC,且边缘可使用软件(CC_INT_MASK)和硬件以及生成用于退出C-state的唤醒请求来屏蔽。
功率管理流程需要软件支持。中断首先由泛在识别码截获,所述泛在识别码在内部服务这些uarch中断且然后将架构上可见的中断转递到OS。uarch中断包括停止时钟(StpClk)和开始时钟(StartClk)。因为ARM核心不实施泛在识别码且GIC中断对OS是可见的。为支持ARM上的StpClk和StartClk,厂商特定中断处理程序可向统一北桥280注册,所述统一北桥280可由OS视为装置。
APIC中断递送可通过远程写入(针对外部中断)或者经由本地中断引脚来完成。本地中断的示例是APIC330,其用来向OS表示其请求的性能状态已归因于热事件而被节流或恢复。GIC中断递送既是通过其到数据基础结构(data fabric)(其功能类似于APIC远程写入)的AXI接口,又是经由呈共享外设中断(SPI)或私有外设中断(PPI)形式的本地中断引脚。每个SPI可经编程以将单核心作为目标。通过使用SPI,统一北桥280无须将AXI消息生成到基础结构中且无须GIC请求中断。在APIC330的情况下,可获得单SPI id。对于以多个核心(诸如StpClk、StartClk、DbReq和DbReq2)为目标的中断而言,统一北桥280可每中断类型每核心保留一个SPI id且需要SW配置将所述(一个或多个)核心作为目标。如果仅存在四个核心,那么通过实施StpClk、StartClk和DbReq,可使用高达16个SPI。
替代方式是将统一北桥280多目标中断类型钩到nLEGACYIRQ[n]/nLEGACYFIQ[n]引脚,所述引脚可作为PPI而用于GIC-400。可供应状态寄存器以用于使中断处理程序确定被编码到相同引脚的子类型。这可能需要共享旧版引脚的中断可能必须共享相同优先权,但StpClk、StartClk和DbReq总之可设置为最高优先权。
当前,APIC将中断边缘驱动到nbcor 440(例如,NBAPC_Intr),其然后将等级中断引脚设置到核心(例如,NBCOR_IntrEdge)。泛在识别码然后在服务时经由SprClrInt(F3xB4)清除所述中断边缘。GIC v2可将等级引脚(例如,IRQ/FIQ)驱动到nbcor 440,但在核心对中断做出应答之后可改为在GIC 410自身中清除这些等级引脚。这最小化对架构上定义的GIC 410引脚实施SprClrInt的需要。nbcor 440中的IRQ/FIQ可以进行浮点运算且用作IntrEdge,其将触发唤醒等。
既有uArch中断现被驱动到GIC 410中且在FIQ上出来。不再需要在nbcor 440中针对大多数这些中断也实施等级中断引脚,包括StpClkEdge、StartClkEdge和DbReqEdge。既有引脚可从等级转换到边缘且从nb->core重新定目标到nb->GIC。中断处理程序没有理由清除两种单独的等级中断状态。上述三种中断中被使用的唯一等级指示是StartClkEdge,其用来在正常滞后计数器与isoc滞后计数器之间交换。用途仅仅是延迟交换直到获得StartClk为止,且发生的情境是围绕Cle,我们应能够安全地忽略所述情况。唯一例外是DbReq,所述DbReq使用其等级指示来生成取消,因此我们需要SW经由SprClrInt发信以指示获得DbReq2且因此避免取消超过所述点。这是除清除DbReq2的FIQ边缘以外的动作。
当前,统一北桥280 C-state在InbWake上退出,其覆盖外部中断。对于也需要唤醒核心的源于本地的中断而言,可切断其可从APIC IntrEdge和DbReq映射的类型。对于GIC而言,可考虑本地中断。如果到GIC的本地SPI输入是在自由运行时钟上,那么可假设本地输入将在FIQ/IRQ或者错误或虚拟化配对物上成功进行,因此我们将简单地重新映射到闲置退出。如果输入在到达GIC之前行进通过闸控逻辑,那么这些中断的源可转到闲置退出。
在x86/ACPI上,在命中处理器闲置之后,OS在设置由ACPI广告的C-state偏移之后即刻经由暂停指令或IO读取来请求暂停。暂停或IO读取被诱捕到微代码中,其然后将暂停特殊播送循环(SBC)发布到统一北桥280,等待基础结构静默,且然后解除确证ConnectMask边带。来自进入C-state的最后一个核心的SBC导致到FCH的下游系统管理命令发信在所有核心上开始C-state。这也可用来驱动支配到较深C-state的升级的监控器。ConnectMask边带用来起始功率管理。
在ARM/Android上,OS经由其预定义API来呼叫供应的CPUidle内核驱动器代码。CPUidle然后可经由其内存104映射地址将暂停SBC发布到NB。在x86上,这被映射到FDF91库。这在统一北桥280中进行硬编码,因此ARM核心可能需要能够生成对所述地址的内存104请求。这满足FCH通信以及监控训练。CPUidle然后发布WFI指令,其确证STANDBYWFI边带。STANDBYWFI被倒转且然后被视为在统一北桥280内部的ConnectMask。
在某些核心上,查看ConnectMask可在处于暂停时解除确证或HTC SBC(对于P-state而言)可起始硬件以使数据基础结构为对CK的迫近定时请求做准备。在进行到实际定时请求生成之前,可完成以下项:
1.阻挡探测发布到所有核心且通过等待其探测响应和/或数据移动完成而排空来自受影响核心的所有未决探测。如果刷新整个CPC,那么这是不适用的。
2.等待受影响核心放弃其NbBusy,所述NbBusy是核心的用来例如在清理(scrubbing)时降低功率状态的异议。
3.无条件地等待足够时间来覆盖到NBSYN FIFO的往返延迟,使得由FIFO中的飞行流量触发的新事件可具有足够时间来提出异议。
4.阻挡且等待Cac接口上的未决APM请求得到响应或应答。
5.满足断电滞后。针对探测到达率(正常)和请求间探测间隙(isoc)两者实施滞后。如果刷新整个CPC,那么这是不适用的。
在存在ConnectMask解除确证的情况下,还可停用功率管理。将时钟分频器设置为div-1(其中EnaCPUDiv1LowPwr?=0)可跳过低功率条目且不导致对CK的定时请求。
统一北桥280可生成对CK的以下定时请求类型:在启用探测的情况下闸控的核心时钟(称为能够探测的CC1);在停用探测的情况下闸控的核心时钟(称为无法探测的CC1);在刷新高速缓存的情况下闸控的核心时钟(称为高速缓存刷新暂停CFOH);和保持模式(RCC3)。
对于在启用探测的情况下闸控的核心时钟(称为能够探测的CC1)而言,CK可解除确证到作为目标的核心的所有时钟闸,且然后重新启用与探测相关联的闸。应注意,L2忽略探测门控重新启用,停止核心,且在存在探测的情况下执行其自身时钟斜升/斜降。另一核心可在发送WFI后即刻自行进行时钟闸控且无需由CK进行进一步时钟闸控。CC1可在核心上简单地实施为通过将CCR设置为div-1(其中EnaCPUDiv1LowPwr?=0)而被停用的功率管理。
对于在停用探测的情况下闸控的核心时钟(称为无法探测的CC1)而言,这与能够探测的情况相同,除了探测闸是不可重新启用的之外。这种模式未用于一些核心中且仅作为幼位(chicken bit)而存在。在存在探测的情况下,需要功率管理请求C-state退出和重入,其中准备逻辑保证滞后。
对于在刷新高速缓存的情况下闸控的核心时钟(称为高速缓存刷新暂停CFOH)而言,这种模式允许常驻于时钟闸控状态,其中停用探测且无斜升以服务传入的探测。这种模式仅在已刷新整个CPC时才有利。
对于保持模式(RCC3)而言,这是无法探测的CC1状态的较深版本,其中核心电压通过调整功率闸控(PG)标头且经由反馈电路维持所述电压而减小。延时特性与无法探测的CC1非常相似,但节省更多功率。可在刷新或未刷新的情况下应用RCC3,其中刷新实现更佳CFOH模式。
一些核心可实施这种模式,从而需要Q-channel与其功率控制器的交握以允许保持模式。在不进行这个交握的情况下,集群对核心进行自动时钟闸控,且进行自动斜坡定时以服务探测且在中断时从WFI退出而无基础结构的干预。在进行这个交握之后,集群可依赖于完成交握以允许从低功率状态退出以完成任一任务。当被交握允许时,在基础结构中的功率控制器的控制下进入/退出保持模式。因此,在WFI上,集群可首先确证STANDBYWFI且断开其时钟。一段时间之后,集群将解除确证CPUQACTIVE以指示容许保持交握。功率控制器可确证CPUQREQ请求保持。集群然后可经由三向交握的第三方通过确证CPUQACCEPT或CPUQDENY来准予或拒绝保持。在此之前,中断自动唤醒核心且如果在交握中,那么导致CPUQDENY。在查看CPUQACCEPT之后,保持条目被视为已提交且集群可依赖于功率控制器以退出保持且然后在进入时钟闸控或WFI之前解除确证CPUQACCEPT。
核心C-state提交点是统一北桥280中的SetCPULowPwr。为支持这个特征,可能需要完成交握。用来触发交握起始的最佳时机是在CPULowPwrReq确证时,其考虑STANDBYWFI确证且然后阻挡VceLowPwrRdy直到CPUQACCEPT确证为止,以保证核心已提交。
GIC-400从CPU 102接口暴露正好在FIQ/IRQ引脚上的传入中断。这些中断可由PwrMgtOrStpGntCC6MaskIntCPU从核心屏蔽,其覆盖RCC3中(或CC6中)的核心常驻点。FIQ/IRQ边缘可用来使用用于清除IobcOrHalt的既有逻辑来创建唤醒事件(CoreWakeUpInt),其然后可触发从RCC3退出。一旦退出完成,PwrMgtOrStpGntCC6MaskIntCPU就可解除确证且可递送所有中断。中断递送可触发CPUQACTIVE解除确证,且统一北桥280然后可通过解除确证CPUQREQ来完成保持交握。
CPUQACTIVE可在保持中对以核心为目标的探测解除确证,然而RCC3可在高速缓存刷新之后被启用,使得探测不是唤醒条件。L2对L1实施监听过滤,其中12_snp_active唤醒ck_CPU_logic。这意味着L1刷新核心可能无法查看来自L2的探测,使得应保证在传入系统探测上无保持退出。
另外,核心在接收分布式虚拟内存104(DVM)操作时解除确证CPUQACTIVE。DVM操作包括TLB否决、BTB失效和i-cache失效,且需要核心参与协议,除非核心已脱离一致性,即,通过从对称式多处理模式(SMP)切换到非对称式多处理模式(AMP)通过清除CPUECTLR SMP位而处于其掉电序列中。在CC6流程中,掉电充当DVM目标的失效。然而,为保持起见,退出重置可不被拉取且在进入保持之前可发生斜升以服务DVM操作或者使结构(包括TLB和BTB)失效。可以按高速缓存刷新序列使i-cache失效。DVM操作可以被假设为是罕见的(不同于探测),且支持从非中断源保持退出,DVM触发退出可与探测上采取的退出路径相似,而核心处于不可探测C1状态。下述代码可以处理探测路径。
C1rCPULowPwrPre_m1[i]=(~CPULowPwrReq[i]|SrqCPUPrbReq[i]|EarlyIntrReq[i])&CPULowPwrActive[i]&~WaitClrCPULowPwr[i]&~ClrCPULowPwrFound;以及
SrqCPUPrbReq[i]=((AnySrqPrbVal_d1|SrqAnyCPUPrbRsp)&~SrqMaskPrbWakeUpCPU[i])|CkExitToPstate_d1。
可发生在DVM检测时从低功率退出,且然后一旦退出完成,就可发生重入而无须修改IobcOrHalt。即使刷新i-cache,处于SMP模式的核心仍可能需要响应于i-cache失效DVM且可在DVM操作时查看CPUQACTIVE解除确证。
核心侧上的Q-channel逻辑可在核心处于保持中时是操作的。这意味着操作电压是在适当位置中,其仅是具有保证的较低di/dt的较低电压。这是与NB AltVid相同的约束。对于后备和潜在的较低保持电压而言,可支持一种模式来使软件中的TLB和BTB失效且然后关闭SMP位。在这种模式中,Q-channel交握的展开可通过将中断假设为唯一退出源而琐碎化,或完全停用Q-channel交握。后者在架构上更简单但具有以非预期方式建立接口到核心的风险。
在RCC3从统一北桥280发信到CK中,XV计算单元中的核心一起(例如,非每核心C-state)进入RCC3,且因此始终将nbsyn掉电与RCC3条目联系起来。这允许NB_PwrMgtReqPrbEn=0发信RCC3(对能够探测的C1)和nbsyn掉电两者。在RCC3的一种实施方案期间,这些可能需要分离。RCC3是每核心的,且nbsyn掉电是每CPC或每集群的。nbsyn掉电可被分成单独NB->CK接口信号,且将其称为NB_PwrMgtReqCciEn,其仅在最后一个核心进入RCC3或CC6的时被清除。
为进入CC6,统一北桥280可请求对CK的时钟请求进行功率双态切换。CC6仅在刷新高速缓存和核心状态时被容许。CC6提供额外功率节省对RCC3,但在退出时需要状态恢复,且因此增大退出延时。在包括L2的整个CPC是在CC6中(也称为XC6)的情况下,在从L2恢复时CC6退出延时是约20us到约40us且在从DRAM恢复时是约80us。RCC3退出是约1us。CC6退出的触发是与CC1或RCC3相同,其是使用未决APIC中断边缘来清除IobcOrHalt,且因此导致退出条件。
GIC-400不实施ProcessorSleep位。预期硬件实施方案对来自与GIC-400中的分发器在同一位置的CPU 102接口的输出操作。GIC-400可在其CPU 102接口处以三种模式编程FIQ/IRQ行为。这些模式包括(1)正常模式,其中在所有情况下驱动来自GIC的nIRQCPU[n]/nFIQCPU[n]引脚;(2)旁通模式,其用旧版FIQ/IRQ引脚覆盖GIC输出;和(3)旁通停用模式,其在存在针对低功率退出的类型的中断的情况下将IRQ/FIQ引脚屏蔽到核心并改为将nIRQOUT[n]/nFIQOUT[n]引脚驱动到功率控制器。
举例来说,可实施正常模式且可使用既有统一北桥屏蔽和中断唤醒机制。GIC假设其擅长所有情况且功率管理可保留核心将无法查看边缘的递送情况。这意味着在C6周围,用于RC3和C6但针对CC1被停用的既有C-state中断屏蔽可形成硬件掩码。在C6中,清除掩码(C6ExitReset)可由软件执行。StpClk掩码可全部在C6周围执行。因为C6掩码是在GIC-400流程中通过硬件而非软件设置,所以不需要单独统一北桥掩码以过滤StpClk事件周围的边缘。统一北桥硬件可基于IobcOrHalt状态和STANDBYWFI确证而在内部确定StpClk掩码。StpClk屏蔽不设置在RC3核心上,因为这可从保持退出核心以采取StpClk。
在C6退出时,作为目标的核心可重置且开始从异常向量提取代码,其经由从重置离开的引脚定位在固定地址处(在0或FFFF0000处)或单独地址处。这个地址通常被映射到启动ROM。异常向量实施跳转表,在所述跳转表内重置处理程序是条目。跳转到重置条目然后造成重置处理程序。这个代码可检验C6ExitReset SPR以确定是否针对C6退出对暖/冷重置拉取重置。C6退出然后可以跳转到C6处理程序且暖/冷重置可以跳转到启动代码。假设统一北桥280具有指定异常向量定位在哪个地址的选择,那么统一北桥280可选择在启动之后重新定位向量以有效地使组唯一C6退出对暖/重置,使得重置处理程序无需检验类型。这可允许C6处理程序放置在不同内存104区域中,使得其可定位在更快DRAM而非启动ROM中以避免在C6退出时从ROM初始提取。为允许这个动作,垫片210可实施异常向量定位的软件可编程性,使得在BIOS完成重置流程之后,BIOS可将其设置为未来C6退出的另一偏移。应注意,异常向量的内存104映射可具有安全启动结果,在这种情况下,PSP初始化DRAM且在将信用发送到垫片210之前将安全启动代码安置在所述DRAM处,从而有效地允许启动代码映射到DRAM。非安全启动可定位在启动ROM中的融合配置地址处。C6退出或安全启动可将异常向量引脚搭接(pin-strap)到定位在DRAM中的FDF7范围中的C6区域中的地址。垫片210然后基于融合或C6ExitReset CCI发信而在这些范围之间作出选择。
核心实施隐式XC6,其意味着我们在最后一个核心进入CC6时自动进入XC6。RXC3可通过在最后一个核心进入C-state时需要L2保持而实施,其中最后所得集群状态是整个RCC3核心或RCC3核心和CC6核心的混合。通常可在高速缓存刷新之后使用RXC3。
L2可保持未刷新(L2休眠模式)且然后从RXC3斜出以服务探测。最后一个核心可不被标记为最后一个刷新的高速缓存(隐式XC6需求的部分)且探测可通过从RXC3斜出而受服务,即使其L1可能已在使其返回到所述状态之前刷新。RCC3可用来仅在高速缓存刷新之后允许常驻,其是依靠监控器进行。
RXC3模式由于预期为约80us的DRAM保存/恢复惩罚而减轻更高XC6退出延时的风险。RXC3将这个延时减小到约1us。这对探测来说是长延时,但对中断来说是短延时。集群可依赖于SMU以动态地在XC6与RXC3之间(连同在CC6与RCC3之间)重新配置。RXC3支持可以是RCC3的扩展。在最后一个核心请求进入RCC3时,统一北桥280可在核心旁边与L2执行Q-channel交握。
大体来说,为支持XC状态,可实施L2备用交握(ACINACTM/STANDBYWFIL2)。这满足NbBusy需求,其是CPC的未准备好功率管理(尽管在架构上是闲置的)的发信方式。在ARM上,ACINACTM和STANDBYWFIL2的提交点与探测排空和NbBusy不同。因此,交握可在提交到低功率之前执行,因为通过协议,L2被容许禁止查看STANDBYWFIL2而不管统一北桥280想要什么。在提交之后,然后排空,且L2保证放弃NbBusy以防止搁置。因此,对于XC状态而言,ACINACTM/STANDBYWFIL2交握可在最后一个核心进入RCC3或CC6时执行,且所述交握可与针对RXC3的L2L2QACTIVE/L2QREQn交握并行进行。当XC交握加上最后一个核心的RCC3交握两者完成时,可容许进行SetCPULowPwr。
与RCC3相似,RXC3在TLB和BTB失效且SMP模式停用的情况下(与XC6相似)被容许,或在SMP模式下保持未被刷新。在实施单集群中,一旦所述集群进入RXC3,系统中就没有核心可发布DVM,且无L2QACTIVE解除确证可被属性化。假设刷新高速缓存且在GIC-400中屏蔽中断,那么L2QACTIVE解除确证不应存在其它条件,且L2Qchannel接口可如同CPU 102般琐碎化。一旦发生首先从保持退出且递送中断,就可执行清理。在多集群SOC的情况下,如果未从SMP模式停用集群,那么可考虑执行DVM播送处理。在这种情况下,L2可保持可操作的,同时保持电压放弃L2QACTIVE,且我们可从L2QACTIVE解除确证创建IobcOrHalt清除项以强制在指明的核心上退出。
可采用复杂的功率闸控模式(XC6)。正如RXC3,XC6进入可使用ACINACTM/STANDBYWFIL2交握(就像是在RXC3中)。在XC6期间,垫片210掉电,因此垫片210无法与统一北桥280通信直到由统一北桥280释放所有信用为止。因此,垫片210可负责在准备好接受信用时驱动ResetUcodeGo,其是在重置解除确证不久之后发生。垫片210可能够将ResetUcodeGo与STANDBYWFIL2和STANDBYWFI联系起来以用于所有核心解除确证。STANDBY信号在功率闸控期间与1隔离且然后被重置为0。零可以不暴露于垫片210直到由CPL释放隔离为止。此时,垫片210可准备好通过确证ResetUcodeGo来接受信用。XC6退出的这个序列是与启动相同的。对于启动而言,统一北桥280可出于安全启动原因而延迟释放ResetUcodeGo确证的信用。对于CC6退出情况可能并非如此。
可执行高速缓存/状态刷新。既有统一北桥280监控器尝试对初始暂停条目预测较深C-state常驻性。这导致要么成功从而允许即刻刷新请求要么失败从而离开浅C-state(CC1)。因此,以短C-state间隔,可预测故障且中断唤醒可能需要从CC1转变,其是低延时。这个监控器依靠辅助等待机制,所述辅助等待机制允许预测的失败状态以在逾时之后转变到更深C-state,以覆盖不可预测的或变化的工作负载。CC6+状态依靠这些监控器,且RCC3可被视为浅(预刷新)或者深(后刷新)。还存在涵盖每核心(CC)状态和每CPC(XC)状态的两个不同等级的监控器。
在由监控器或等待机制生成刷新请求时,StpClk可被发送到作为目标的核心。核心可刷新高速缓存(和/或状态,其取决于RCC3对CC6),标记适当位以将刷新的状态发信到统一北桥280且然后重入暂停,其与预刷新相似。统一北桥280可观测刷新状态连同暂停,且在生成对CK的定时/功率请求时进行到更深C-state。
集群实施通常用于显式XC6中的硬件L2刷新小部件,其中无核心可用于起始刷新。因为隐式XC6是对核心执行,所以核心可起始刷新以使潜在软件和硬件与x86核心的接口连接是均匀的。
核心可在可确证L2FLUSHREQ之前位于WFI中。核心不可用来通过SPR起始刷新请求且等待完成。因此,因为统一北桥280流程在最后一个核心进入低功率时可不包括L2刷新请求,所以软件可使用高速缓存维护操作执行L2刷新。使用这种方法,在统一北桥280中可能不需要用于刷新L2的特殊逻辑,且统一北桥280可假设L2在观测对最后一个核心进入低功率的请求时刷新。
在x86泛在识别码中,APIC中断在不处于睡眠时被自动屏蔽。对于持续时间长的服务例程(诸如,高速缓存和/或状态刷新)而言,为避免很长一段时间的不可中断代码,泛在识别码散置在中断检验(intchk)中,所述中断检验取样用于未决中断的核心中断边缘,且中止刷新(如果存在)。集群不支持相同软件功能。相反地,中断将通过下文所述的图3的整个C6进入流程300而被屏蔽。在步骤310处,可清除适当系统控制寄存器C位、数据或统一高速缓存启用以防止额外数据高速缓存分配。在步骤315处,可通过将零写入到CPU扩展控制寄存器的位[38,36:35,33:32]来停用L2预取。在步骤320处,可执行ISB指令以确保CPU扩展控制寄存器写入已完成。在步骤325处,可执行DSB指令以确保任何先前预取请求的完成。在步骤330处,可清除来自L1数据高速缓存的所有数据并使其失效。用于这个处理器的L2复制监听标签RAM现可以是空的。这防止来自多处理器中的其它处理器的任何新数据高速缓存监听或数据高速缓存维护操作发布到这个处理器。在步骤335处,可清除CPUECTLR.SMPEN位。通过防止处理器接收由多处理器中的其它处理器播送的指令高速缓存、TLB或BTB维护操作,对SMPEN位的这种清除使得处理器能够脱离一致性。在步骤340处,系统确保无中断被发送到掉电的处理器。在步骤345处,设置DBGOSDLR.DLK(双锁控制位),其强制调试接口静默。在步骤350处,执行ISB指令以确保已提交来自先前步骤的所有系统寄存器变化。在步骤355处,执行DSB指令以确保在清除SMPEN位之前由多处理器中的任何处理器发布的所有指令高速缓存、TLB和分支预测器维护操作已完成。在步骤360处,执行WFI指令且针对输出来监控STANDBYWFI输出,其指示处理器是闲置的且处于WFI低功率状态。在步骤365处,启动处理器102输出钳位。在步骤370处,移除来自处理器102功率域的功率。
中断屏蔽是通过在步骤310之前设置CPSR.I/F位来完成。步骤310可使处理器非相干且因此可能无需中断以进入不知道这的处理程序。
可无需实施Intchk,因为(1)通过实施硬件L2刷新小部件,唯一软件高速缓存刷新需求是L1,其仅需5000个循环,这意味着C6进入中的高速缓存刷新额外负担仅在单数位微秒范围中;和(2)集群可在IRQ/FIQ引脚确证时退出WFI(即使中断被CPSR.I/F屏蔽)且进入执行下一指令。这可充当C6进入的中止机制,其中功率控制器选择避免彻底完成由CPU 102请求的掉电。这可以是步骤340中的建议流程300的任选方面以使得整个序列能够在步骤310之前不可中止地以CPSR.I/F屏蔽开始。
对于最差情况C6中断延时而言,高速缓存刷新可不增量式地到C6进入+退出,其中高速缓存刷新的不可中断间隔也不是SOC中的最突出的问题。所述流程与建议流程的不同之处是进入CC6(也称为XC6状态)的最后一个核心需要使用与A15的软件流程相似的软件流程来刷新L2。原因是因为实施隐式XC6进入。软件L2刷新可能需要更长时间。为了保证合理中断服务延时,可出于性能和与x86的均匀性而包括intchk。可在统一北桥28侧上通过经由CCI_INT_EDGE寄存器(F3x2F0)暴露FIQ/IRQ状态来实施intchk。因此,在高速缓存刷新例程中,软件可设置CPSR.I/F位,且然后使预屏蔽边缘轮询与高速缓存刷新组块交错。可通过效率(即,使intchk不频繁以不影响刷新带宽)与不可中断间隔(对比状态的进入及退出延时(对于RCC3其是约2us且对于CC6是约25us),其可以是无关紧要的)之间的权衡来确定组块大小。如果在步骤350处的高速缓存刷新期间在寄存器中查看边缘,那么刷新例程可通过重新启用高速缓存分配(步骤310)和L2预取(步骤315)来重新启用一致性,且然后清除CPSR.I/F位以获得中断。
如果序列已进展到步骤335以停用CPUECTLR.SMPEN,那么执行直到步骤360(跳过步骤340)。在这些步骤期间,如果统一北桥280将FIQ/IRQ作为目标,那么WFI内外的步骤进入下一指令,且重新启用高速缓存分配、L2预取和SMP。如果不是,那么系统提交到C6。统一北桥280可在提交到C-state时注意正确屏蔽的中断,因此步骤340可以不是必需的。可能需要步骤340以避免功率控制器停用中断与提交到C6进入之间的危害,统一北桥280支持这个步骤。这个实施方案需要步骤340以在功率控制器中设置软件停用且因此在进行发信进入的WFI之前需要所有未决IRQ/FIQ递送的ACK重新发信的正确屏蔽和静默。所述实施方式可以使用步骤360以传递停用中断的期望且依赖于中断与提交之间的硬件互锁。
仅一个核心可刷新L2且这是因允许在核心退出CC6时中止L2刷新而复杂化。L2I控制位指示在存在完成L1刷新和向L2解除注册的多个核心的情况下最后一个核心开启,其允许一个核心是最后一个核心且强制所述核心进行L2刷新。一种这样做的方式是对内存104中的单独高速缓存刷新向量实施原子访问以识别哪个核心是设置所述向量的最后一个核心。进行L2刷新的所述核心可针对中止来轮询任何PwrStatusLo(F5xF0)CC6位清除。
核心可实施SMU块内的DAP控制器。这是CoreSight调试实施方案的一部分。标准调试工具通过JTAG或BP引脚建立接口到DAP。DAP不知道集群的功率状态,且可生成集群或系统请求。可对常驻在VDD域(称为KDSM)中的CoreSight逻辑作出DAP请求。KDSM通过ACP端口作出集群调试请求,且系统通过到垫片210中的AXI总线作出请求。为使DAP访问集群或系统,VDD需要从PC6斜出。另外,为通过垫片210对系统作出请求,RXC3或XC6可能需要退出,再次获得nbsyn旋转,且在后一情况下,需要UcodeResetGo和信用释放。因为隐式XC6实施方案,一个或多个核心可脱离CC6。
为从低功率状态获得适当逻辑以服务调试请求,DAP实施与功率管理逻辑的CSYSPWRREQ/CSYSPWRACK接口。在插入调试请求之前,DAP首先可以确证CSYSPWRREQ。如果确证CSYSPWRREQ,那么可发信DbReq中断,同时集群在RXC3或XC6中。DbReq可唤醒所有核心,且中断处理程序可以通过NB_MISC发信DbRdy。可将DbRdy发信到CSYSPWRACK,从而允许DAP然后作出请求。在退出时,DAP可解除确证CSYSPWRREQ。为允许现脱离C-state的核心重入低功率,可将CSYSPWRREQ暴露于DbReq处理程序的SPR上以便轮询。在查看解除确证时,处理程序可清除DbRdy且因此解除确证CSYSPWRACK,且然后从中断返回。OS闲置例程可以接管且允许WFI重入,其然后重启C-state进入进程。这与PDM模式相似。然而,集群不实施HDT2到SBI_IAI的连口,这意味着可能需要退出轮询而非通过SBI_IAI发信退出。
在x86中,P-state可经由ACPI呼叫暴露于OS。OS然后通过呼叫预定义MSR请求P-state变化,泛在识别码诱捕所述MSR且将所述P-state id写入到统一北桥280中的CofVidCtl寄存器。P-state id映射到P-state表条目,所述P-state表条目具有编程的频率(FID/DID)和电压(VID)设置。取决于在电流设置与请求的频率和电压设置之间是否存在差别,可请求频率和/或电压变化。统一北桥280可在内部生成高达两个请求,且对所述请求排序使得电压增大是在频率变化之前,频率变化被排序为是在电压减小之前。在统一北桥280与CPL之间内部满足电压变化而无核心交互。频率变化需要核心交互。统一北桥280对频率变化连同其它功率管理请求(诸如,电压变化、外部StpClk或高速缓存刷新)排序,其中由其它CU/CPC或由统一北桥280请求所述频率变化。当选取频率变化时,统一北桥280使CU/CPC中的所有启用的非CC6核心以StpClk为目标且阻挡CC6核心退出。核心然后获得StpClk且发送HTC SBC系统管理播送以应答频率变化,使所有未完成流量静默,且然后放弃ConnectMask。一旦以StpClk为目标的所有核心完成这些步骤且所述未决CC6进入已完成进入,统一北桥280然后就可对CPL作出频率变化请求。在完成时,统一北桥280使StartClk边缘上升到CU/CPC,从而促使泛在识别码退出其静默并返回到OS。
在ARM实施方案而非ACPI呼叫中,OS呼叫CPUfreq内核驱动器,其实施到Android的厂商中立API接口,这与C-state的CPUidle例程相似。对于Android而言,CPUfreq接口是由最大值的某个百分比指示的性能等级。CPUfreq例程然后可将所述百分比等级映射到我们的8个离散P-state等级中的一个,且在统一北桥280中的CofVidCtl寄存器中请求其。从此时起,可预期频率变化的相似流程,其需要选取器(picker)选择、静默、频率请求和非静默。在实施方案中,静默部分和非静默部分是不同的。下文所述的图5和6中描绘的两种方法可以个别地或一致地实施以减轻以协议/硬件复杂度和性能的形式呈现的风险。通常,这些方法可使用GIC中断CPU以使处理器置于ARM定义WFI或WFE状态。任一状态均可防止CPU 420执行进一步指令且横跨时钟域边界起始新交易。图5和6在下文提供接口/流程细节。可实施两种类型的静默来减轻风险且通过配置启用一种静默。基于中断的静默可能需要针对S3而实施,且可能不用基于垫片210的静默替换,且用来支持P-state的增量成本可接近零。基于垫片210的静默可具有更佳性能,但带有协议和交叉IP验证风险。
图4中示出了与既有Pstate逻辑的连接性的示例性图400。图4示出了与既有P-state逻辑的连接性。图4中示出了GIC 410,其是递送中断的ARM广义中断控制器。GIC 410可定位在统一北桥280内。图中还示出了CPU 420。CPU 420可以是atlas集群290的一部分。垫片430也在图4中示出且可以是垫片210的部分。再者,图中示出了NBCOR 440。NBCOR 440可以是统一北桥280的一部分,其包括上文所论述的CCI协议。如图中可见,GIC 410、CPU420和垫片430中的每个可与NBCOR 440通信。下文将描述这些通信和信号中的每个。
基于中断的静默和非静默可规定对P-state的最低硬件成本方法是通过将StpClk钩到FIQ来进行基于StpClk的静默。FIQ可用作安全中断。如果不在核心和GIC 410中实施信任区,那么FIQ可以是可用的且StpClk可以是简单直接的且提供较小性能风险。对于正常中断(接线到IRQ),软件约定是不重入IRQ异常向量。这意味着如果达到更高优先权的IRQ中断,那么不允许更高优先权中断抢占当前由核心服务的更低优先权的IRQ中断。出于性能原因,Android将中断服务例程分解成上半部和下半部。上半部是不可中断的半部。约定是简单地采取中断,弄清需要做什么,且然后在返回呼叫且因此返回到中断代码之前用OS对下半部进行调度以开展实际工作。下半部是开展实际工作。
然而,横跨不同异常类型,硬件通过对重要控制流程寄存器分组来保证全抢占性,诸如栈指示器、用于呼叫返回的链路寄存器和状态寄存器。根据约定,IRQ将不屏蔽FIQ,使得甚至可以在位于IRQ处理程序的上半部中时采取FIQ。在非安全系统中,可以获得几乎不具有延时的StpClk,其是P-state变化所需的,条件是核心是从正常工作带出来进入静默状态的。然而,如果实施信任区,那么FIQ中断可能需要落入安全监控器的框架中。P-state变化可以被注册且其它StpClk源作为安全服务。FIQ引脚可与其它服务共享。一种这样做的方式是依赖于FIQ例程的上半部根据约定而为最小的,但其冒影响整个系统的性能的不当可信服务的危险。StpClk可充当屏障同步静默,其中晚到的线程表现得像在很大程度上并行化的程序。替代方式是进行FIQ异常处理程序重入。代替如同其它架构的真实重入的做法是,在返回地址被推送到栈的情况下,针对每种异常模式对链路寄存器分组,以便针对一种异常允许重入,然后切换到监督模式(SVC)以将其分组的链路寄存器用于返回地址,且因此为到异常向量中的另一次进入腾出FIQ链路寄存器。这可允许到FIQ中的两个重入示例。为支持其它可信服务的StpClk抢占,FIQ异常处理程序然后需要切换到SVC模式,同时使中断保持被屏蔽以用于除StpClk外的其它可信服务中断。
在服务P-state StpClk时,代码可将HTC SBC系统管理播送发送到统一北桥280,通过完成数据同步屏障(DSB)指令使所有未完成流量静默,且然后发信等待中断(WFI/WFE)。在这种情况下,DSB指令充当等待静止。等待静止等待对未完成请求的所有响应以及等待符记释放,但DSB仅等待所述响应。假设有效/就绪接口的ACE实施方案,那么查看响应可能对静默来说已足够。使用基于符记的SDP接口的实施方案可能针对SOC15上的静默情境(如果有的话)需要真实等待静止。WFI/WFE简单地将频率变化的准备状态发信到统一北桥280。
一旦统一北桥280针对P-state变化查看呈WFI形式的核心准备状态,统一北桥280就可通过阻挡选取到集群的探测而使所述探测静默、排空不含业已选取的探测的其管线且等待未完成探测以在集群完成所述探测的缓冲器时解除分配所述缓冲器。一旦排空所述探测,统一北桥280就需要在对CPL处的P-state变化调度之前与集群进行额外ACINACTM/STANDBYWFIL2交握。ACINACTM是SrqCPUProbesDrained且STANDBYWFIL2可以是阻挡SetCPULowPwr选取器处的准备状态的额外项。这个L2交握与针对RXC3及XC6执行的交握相似,但在P-state的情况下除外,其未琐碎化,其中积极排空高速缓存刷新和探测。探测排空次序与可在x86执行的次序是颠倒的,其中提交是在排空之前发生。对于集群而言,排空可以是第一次先于提交。统一北桥280经由EnDrainPrbOnHtcStpClk支持这种模式,其在提交之前开始探测排空。对于核心而言,当启用基于中断的静默时,可能需要EnDrainPrbOnHtcStpClk=1。
StartClk的WFI变体可以包括:虽然集群是在P-state变化中间,但集群可不获得中断或作出系统请求。中断边缘被统一北桥280所屏蔽,其如同在功率管理事件期间在x86中的APIC边缘上所做般。然而,软件可不执行早前所述的intchk,因为那可能需要对统一北桥280作出请求。因此,一旦CPL完成P-state变化,统一北桥280(而非intchk)就将核心从静默唤醒。这可通过StartClk中断完成。然而,StartClk中断暗指需要抢占StpClk。如果FIQ重入在StpClk期间是允许的,且如果信任区已需要重入,那么其合计达三个等级。其它安全服务可以是非重入或通过StpClk实施非标准中断重入。假设可优选为StpClk中的中断的唯一中断是StartClk,那么可以采取捷径,例如将链路寄存器地址保存在通用寄存器中而非推送到栈。后者需要将StartClk配置为具有最高FIQ优先权,其应是可能的,条件是厂商支持信任区。
图5中示出了使用WFI 500的Pstate序列的示例性图。使用WFI500的Pstate序列可包括在步骤510处驱动器请求Pstate。在步骤520处,执行将StpClk发送到所有核心且接着等待STANDBYWFI。大约与步骤520同时,步骤530提供在nFIQ上查看StpClk且软件进入FIQ中断处理程序例程。在步骤540处,启动FIQ中断处理程序,HTC SBC播送DSB(静默)和WFI指令。在步骤550处,使探测排空/静默且开始ACINACTM/STANDBYWFIL2交握。在步骤560处,改变核心FID/DID/VID且经由SPI发送StartClk。在步骤570处,nFIQ将核心从WFI唤醒且跳转到中断处理程序并清除StartClk中断。
用来从StpClk唤醒的另一方式是在静默之后使用WFE而非WFI。WFE唤醒可经由EVENTI引脚从中断或事件触发。因此,所有中断、IRQ和FIQ均可被屏蔽掉且仍能够唤醒EVENTI,其本质上合乎StartClk的目的。为启用WFE StartClk,STANDBYWFE可以针对所有P-state(基于HtcStpClkActiveCore)被多路复用到~ConnectMask且针对所有其它情况被多路复用到STANDBYWFI。StartClk然后可以这种模式钩到EVENTI以触发退出。一旦核心从WFE退出,其就仍可在StpClk处理程序中,这将不屏蔽中断和退出。
为支持多个集群,当在所有其它情况下进行P-state和EVENTO时,StartClk边缘可被多路复用到EVENTI。在正常模式中,所有EVENTO被一同OR(“或”运算)且被驱动到EVENTI中。因为可能不存在任何EVENTO,所以可交换所述EVENTO且可以将内部StartClk边缘映射到EVENTI。
对于核心而言,可启用通过配置达成的StartClk变体。既有StartClkEdge可被路由到EVENTO且GIC 410分发器SPI引脚被指派给StartClk。当启用WFE StartClk模式时,然后ConnectMask和EVENTI可选择适当WFE发信,且可停用与StartClk相关联的SPI id。对于WFI StpClk模式而言,可假设StartClk SPI id的GIC 410编程。
核心可在用户代码中,其中其在StpClk服务时可执行SEV指令。不同核心可在不同时间获得中断,因此可能在无任何软件的情况下保证在获得StpClk之前一个核心可能已执行StpClk处理程序中的WFE同时另一核心执行SEV。为正确地服务这个流程,StpClk处理程序可在执行WFE之前执行软件同步。统一北桥280提供硬件信号量和擦除寄存器。StpClk处理程序可以用硬件机制来自动更新所述处理程序中每个核心的存在性,并且使用来自PwrStatusLo寄存器的CC6状态来进入到WFE中。
L2可不实施STANDBYWFEL2接口。条件是:在WFE之前,核心可执行使所有未完成请求静默的DSB指令,不应存在对L2的未决请求或分配。这可保证不应存在到DRAM的L2预取或牺牲品。为确保是这种情况,软件可在DSB之后延迟WFE,且从而延迟统一北桥280提交到P-state变化,这需要在不等待STANDBYWFIL2的情况下发生。
图6中示出了使用WFE 600的P-state序列的示例性图。序列600包括在步骤610处驱动器请求Pstate。在步骤620处,将StpClk发送到所有核心且系统等待STANDBYWFE。大约同时,在步骤630处,可在nFI上查看StpClk且软件进入FIQ中断处理程序例程。在步骤640处,使FIQ中断处理程序就绪且播送HTC SBC,核心当中的软件同步(对于SEV)与DSB(静默)一起发生且L2静默的软件延迟与WFE指令一起发生。在步骤650处,使探测排空/静默。在步骤660处,改变核心FID/DID/VID且经由EVENTI发送StartClk。在步骤670处,EVENTI将核心从WFE唤醒且返回到StpClk处理程序(nFIQ)。
基于StpClk/StartClk的静默需要来自既有统一北桥280的最低增量逻辑。然而,存在性能风险且如果信任区中断需要在核心内处理,那么其增加额外软件复杂度。为减轻这些风险,允许在垫片210内实施替代静默模式且使其对集群不可见。集群与垫片210之间的ACE接口继续以高等级操作,但使NBSYN的任一端上的CCI接口静默。垫片210可阻挡新请求且等待未完成响应而非核心。这是以上述风险换取,其中额外软件的风险主要在垫片210中,且协议依赖性是伴随这个实施方案而发生的。主要协议依赖性是在探测与回写之间。在ACE上,回写(牺牲品请求)是从正常请求放置在单独虚拟信道上,所述请求进行到DRAM转递进程而无其它依赖性。集群依赖于这是因为允许探测命中回写以进行阻挡直到这些回写完成为止。因此,为使统一北桥280使探测静默,必须允许核心完成回写。提供了图8中所示的方法800来保证横跨垫片210与统一北桥280之间的NBSYN排空所有飞行流量。在步骤810处,方法800提供:在P-state变化请求时,统一北桥280通过边带发信垫片210以便静默,从而充当StpClk。在步骤820处,垫片210阻挡新的非回写请求被发送到统一北桥280且排空所有未完成请求。当完成时,垫片210将“静默”响应发信到统一北桥280。这行为如同HTC SBC系统管理命令。在步骤830处,统一北桥280阻挡新探测被选取且通过检验其探测缓冲器信用来等待未完成探测完成。在步骤840处,垫片210仅在来自统一北桥280的探测均已完成时才阻挡回写。垫片210可驱动NbBusy,只要存在到统一北桥280的未决回写。在步骤850处,可容许统一北桥280仅在返回所有探测缓冲器且垫片210不确证NbBusy时才起始P-state变化。
通过统一北桥280禁用静默请求和垫片210通过移除“静默”响应来作出响应,可执行非静默部分。统一北桥280然后需要保证ACK(响应)在起始新请求之前已从先前交握解除确证。因此,统一北桥280的变化可以是针对垫片210的边带请求/ACK(对于静默而言)和禁用StpClk(对于P-state而言)。这应是简单的,因为我们已在当前设计中驱动并汇聚两种状态。然而,这可能对垫片210增加额外工作。这并不完全消除StpClk,因为其可能是高速缓存刷新和S3所需的。对于高速缓存刷新而言,可使用intchk,且S3是参OS和BIOS所大力参与的。
图7中示出了使用垫片静默700的Pstate序列的示例性图。这个Pstate变化可通过在位于两个边界之间的垫片210中提供接口交易进程的停止而发生。如序列700中所示,其可包括在步骤710处驱动器请求Pstate。在步骤720处,将NB-QuiesceReq发送到垫片210。大约同时,在步骤730处,由垫片210查看NB-QuiesceReq。在步骤740处,统一北桥阻挡新探测和响应被选取,排空探测,且等待NbBusy解除确证。在步骤750处,改变核心FID/DID/VID,解除确证NB-QuiesceReq以告知垫片210恢复流量。在步骤760处,驱动器以新频率继续用户代码。
可经由与CPU P-state相同的机制来执行统一北桥P-state。对于多集群系统而言,与CPU P-state仅把单集群作为目标相反,所有集群均需要静默。统一北桥C-state可保持不变。
可通过OS与BIOS之间的协作来执行S3起始。可在将所有装置放置在D3中之后通过到FCH的IO读取来起始StpClk支持。FCH然后起始外部StpClk流程。ARM StpClk流程可用来提供哪一个经由到GIC 400的SPI将StpClk发信到所有核心。中断处理程序可屏蔽中断且然后将StpGnt SBC发送到统一北桥280。此时,核心可保持中断屏蔽在StpGnt中直到掉电为止。中断处理程序无需考虑StartClk,但其可以这样做,条件是其与P-state变化共享代码(如果后者支持基于中断的静默)。软件δ对P-state变化仅是特殊播送循环的编码类型。统一北桥280可使用所有核心上的StpGnt状态以起始进入到DRAM自我刷新中。在FCH接收StpGnt之后,FCH可开始计时等待,拉取暖重置且使VDDNB斜降。在退出时,S3可类似于冷重置且依赖于软件以识别启动对S3退出。
CS流程主要是在S3顶部上的另一软件层以用来帮助退出加速和安全性。硬件支持软件的一些CS特定寄存器字段以在保存和恢复进程期间跟踪其状态。
在核心CAC管理器(也称为DPM)处的统一北桥280之间的CAC接口可能不存在于集群中。DPM可在垫片210中实施。DPM可经由FU请求/响应接口与统一北桥280通信。DPM可使用集群性能监控器输出且指派CAC权重。如果实施所述DPM,那么可支持双向应用功率管理(BAPM)。如果不实施所述DPM,那么BAPM可以是基于温度的且因此较不准确,且可以停用能量累积。然而,在任一情况下,SMU可经由既有SmuPstateLimit来传达BAPM P-state极限。
智能P-state(iPstate)的一个示例是FP节流。这是使用x86核心上的HDT2接口来实施的。集群具有相似接口(称为CoreSight)。支持iPstate需要CPL变化以将HDT2映射到CoreSight上。iPstate可在与AVFS特征共享的统一北桥280中使用SMU P-state硬件机制。对于SMU P-state而言,预期SMU与统一北桥280之间的接口保持相同。
C-state提升允许核心的子集在剩余核心位于CC6中时提升到处于潜在更高电压的Fmax。C-state提升是完全在统一北桥280硬件中处理而无SMU交互。因为C-state提升是对后端的P-state变化和CC6操作,所以不存在需要支持P-state和C-state的增量变化。
专用回写信道可用来避免死锁。可将一个硬符记添加在XCS/SPBC/SPBD/MCQ/MPBD中以用于来自CPU 102的VicBlk请求。核心在与未完成牺牲品冲突时不响应于探测。牺牲品信道可用来排空且在牺牲品命令完成之后,核心可因失败而响应于探测。CPU102牺牲品可保证使其到达MCT。
现还参考图9,图中示出了死锁900的流程。在步骤910处,读取(Rd)到达MCT。在步骤920处发起探测,且在930处探测命中CPU 102中的牺牲品。在步骤940处,CPU 102发布WrVicBlk,其到达MCT但然后在步骤950处MCT的基于地址的排序逻辑开始生效且将不允许WrBlk发布到DCT直到原始Rd完成为止。在步骤960处,将不完成Rd直到从核心接收探测响应为止,且在步骤970处,核心将不用Rd的探测失败作出响应直到将这个WrVicBlk的TargetDone发送回到核心为止。这是死锁条件。
CPU 102可在写入数据信道上将数据推送到垫片210。CPU 102等待指示回写是在CPU 102响应于冲突探测之前完成的写入响应。这可在北桥280从垫片210拉取数据且垫片210接收通过写入缓冲器释放传达的target done(目标已完成)之后提供。如果CPU 102发布回写,那么垫片210和SRI可将回写递送到内存104。早前的死锁900是通过探测读取到等待回写完成的CPU 102。回写可例如从垫片210中的CPU 102得到应答(诸如,即刻),且使垫片210负责维持一致性,包括响应于探测且使牺牲品状态降级。垫片210可以是满的且阻挡回写可在CPU 102内部进行且仍阻挡探测。死锁900可由所发布的回写和在内部CPU 102请求队列中的用来阻挡探测的回写造成。可创建从CPU 102到MCT的虚拟信道,其中MCT允许回写传递较旧请求。
垫片210可变得充满非回写写入。然而,已保证这些非回写写入进行转递进程且存在对交错的回写和非回写的CPU 102限制,从而防止满垫片210阻挡内部排队的CPU 102回写而造成探测死锁。
命中高速缓存中的脏线的探测可不作出响应直到牺牲品实际上被排空到DRAM为止。因此,为创建无死锁系统,必须添加新回写信道。对于这个新回写信道而言,可将专用缓冲器分配在XCS/SPBC/SPBD/MCQ/MCD中,使得可为牺牲品提供保证的转递进程。SRQ可能需要用于对来自核心的牺牲品/回写分配的专用硬符记。这个回写信道可扩展回到垫片210且垫片210中的符记分配方案可确保牺牲品进行从核心到SRQ的转递进程且所述SRQ将始终具有用于牺牲品的可用符记。
为防止死锁,4跳协议可以是可发布PrbTgt类型的强制性探测,。因为仅存在一个CPU 102集群,所以来自CPU 102的请求仅必须将探测发送到GPU且所述响应转到MCT。相似地,来自GPU的RdBlkS请求仅可以是CZ上的PrbTgt且所述响应回到MCT。I/O请求可被迫将探测响应接收回到MCT且然后MCT可用脏数据或干净数据发送最终响应。这可允许实施一种方案来再次读取DRAM。通过停止探测响应和预期牺牲品进行转递进程,得以处理探测/牺牲品冲突。
一旦牺牲品完成,那么其可发布探测响应失败。这需要专用回写信道,从而允许牺牲品在MCT中传递较旧请求,且允许MCT对主桥读取发布探测目标而非探测源。发布探测目标可允许MCT合并探测响应、DRAM读取数据和可能的牺牲品传递情况且然后将单读取响应(或在转换情况下是TgtDn)发布回到SRI。
XBAR->MCT请求现分配MCD条目以接受探测脏数据或来自在更早期传递的牺牲品的数据。正如其它XBAR->MCT请求,保留Mc dLo和McdHi符记两者。不携带数据的非主桥请求(即,CPU 102读取)即刻在mp1中释放所述符记。在mp1中释放未用信道的主桥(HB)读取符记(新项Hb4HopMcdLoBufAvail/Hb4HopMcdHiBufAv ail)。先前仅具有数据的命令分配MCD符记。用于数据命令的MCD符记管理逻辑是不变的。
为解决回写与探测之间的死锁,可针对回写添加虚拟信道。这个特征的一部分涉及一旦其达到MCT,就允许将回写重新排序为在较旧读取之前。这涉及不少变化,诸如在发生这种旁通时重新发布较早DRAM读取。如果所探测的块是在受害进程中,那么CPU 102可不传回探测响应。相反地,CPU 102仅发送牺牲品。采取的方法是检测牺牲品实际上是探测响应且可被这样处理。
当牺牲品到达时,可针对与较旧op是否达成地址匹配来对其进行检验。如果发现匹配,那么可检验牺牲品以查看其是否满足以下准则:
与等待探测响应的读取(不预取)匹配,或
与等待探测响应的写入匹配。
如果检测到多个地址匹配,那么选择最旧地址匹配。这是通过现保存在MCA中的MCQWaitOpRet旗标的拷贝使用最旧op是不等待任何先前op退下的原理而被识别。
因此当牺牲品到达时,其可遵循三个流程中的一个:
1.如果牺牲品与寻找响应的先前op不匹配,那么牺牲品仅被视为其已成过去。
2.如果牺牲品匹配等待响应的写入,那么牺牲品被视为探测响应,且并入到先前写入的MCD条目中。释放已分配给牺牲品的新MCD条目。这种类型的牺牲品不能被视为所转递的数据的源,因为所述牺牲品不具有其自身MCD条目。这个牺牲品不写入到DRAM(通过并入牺牲品的写入来处理)。所述牺牲品被分配其自身MCQ条目,且可在所述分配完成时发送TgtDn。
3.如果牺牲品与等待响应的读取匹配,那么牺牲品被并入到所述读取的MCD条目中且被写入到其自身MCD条目中,因为所述牺牲品需要发送到DRAM。新MCD条目中的牺牲品数据被视为正常牺牲品;其可从DRAM转递,写入到DRAM且在完成时发送TgtDn。流程#3(牺牲品匹配读取)可能需要第二MCD写入端口以便写入新MCD条目。
实施例
1.一种含有输入/输出内存映射单元(IOMMU)的处理器,所述IOMMU包括被配置成在访问页表条目时设置访问位的访问位机制。
2.根据实施例1所述的处理器,其中由寄存器启用所述访问位机制。
3.根据实施例1或2所述的处理器,所述IOMMU进一步包括脏位机制。
4.根据实施例3所述的处理器,其中仅在启用所述访问位机制时启用所述脏位机制。
5.根据实施例3或4所述的处理器,其中AP[2]位以某种方式指示页是脏的还是干净的。
6.根据实施例3-5中任一实施例所述的处理器,其中所述访问位和所述AP[2]位是从相同页转译表条目更新的。
7.根据实施例6所述的处理器,其中所述访问位和所述AP[2]位是在单原子操作中更新的。
8.根据实施例7所述的处理器,其中所述单原子操作包括测试-0-逻辑OR运算。
9.根据实施例7所述的处理器,其中所述单原子操作包括测试-设置-清除操作。
10.根据实施例1-9中任一实施例所述的处理器,其中由硬件机制管理访问旗标。
11.根据实施例10所述的处理器,其中如果将其中访问旗标被设置为0的转译表条目读取到转译后备缓冲器(TLB)中,那么所述硬件机制将1写入到所述转译表条目的访问旗标位。
12.根据实施例10或11所述的处理器,其中硬件访问旗标字段用来指示这个实施方案选择。
13.根据实施例10-12中任一实施例所述的处理器,其中SCTLR.HA位用来启用所述访问旗标的硬件管理。
14.根据实施例10-13中任一实施例所述的处理器,其中在使用短描述符转译表格式时,执行所述访问旗标的硬件管理,条件是:SCTLR.AFE位被设置来启用所述访问旗标的使用;以及所述SCTLR.HA位被设置来启用所述访问旗标的硬件管理。
15.根据实施例14所述的处理器,其中SCTLR的分组指示所述SCTLR.HA位和所述SCTLR.AFE位是针对安全和非安全地址转译来独立定义的。
16.根据实施例10-15中任一实施例所述的处理器,其中当为地址转译的阶段启用所述访问旗标的硬件管理时,不针对对应转译生成访问旗标结果。
17.根据实施例1-16中任一实施例所述的处理器,所述IOMMU进一步包括:用于执行分布式虚拟内存(DVM)失效的机制。
18.根据实施例17所述的处理器,其中所述DVM失效机制包括使用主ISOC公布的接口。
19.根据实施例18所述的处理器,其中与命令处理器请求相似,ISOC公布的写入消息被解码成且被编程成失效格式。
20.根据实施例17-19中任一实施例所述的处理器,其中所述失效消息包括从中央处理单元(CPU)到主ISOC公布的写入信道上的IOMMU等级2的失效消息。
21.根据实施例20所述的处理器,其中所述失效消息用来使输入/输出TLB失效。
22.根据实施例17-19中任一实施例所述的处理器,其中所述失效消息包括从中央处理单元(CPU)到所述主ISOC公布的写入信道上的所述IOMMU等级2的同步消息。
23.根据实施例22所述的处理器,其中所述同步消息与完成等待命令相似。
24.根据实施例22或23所述的处理器,其中所述IOMMU等级2传回完成消息。
25.根据实施例17-19中任一实施例所述的处理器,其中所述失效消息包括完成消息,其是从所述IOMMU等级2到ORB或统一北桥的直接内存访问(DMA)ISOC公布的写入。
26.根据实施例25所述的处理器,其中当已刷新指令管线且已完成所有未完成输入/输出TLB失效时,发送所述完成消息。
27.根据实施例17-26中任一实施例所述的处理器,其中所述DVM操作用来使所述CPU、IOMMU和ATC中的条目失效。
28.根据实施例17-27中任一实施例所述的处理器,其中所述IOMMU等级2在接收所述DVM失效命令之后即刻生成到图形处理单元(GPU)ATC的失效命令。
29.根据实施例28所述的处理器,其中所述IOMMU等级2基于所述消息类型来处理所述DVM失效命令。
30.根据实施例28或29所述的处理器,其中所述IOMMU等级2将相关操作转递到所述GPU ATC。
31.根据实施例30所述的处理器,其中所述IOMMU等级2过滤所述操作以移除不适用于所述GPU的操作。
32.根据实施例28-31中任一实施例所述的处理器,其中所述IOMMU进一步被配置成跟踪GPU对DomainID和PASID的使用。
33.根据实施例17-32中任一实施例所述的处理器,所述IOMMU进一步包括供在DVM失效期间使用的一个或多个寄存器。
34.根据实施例33所述的处理器,其中所述一个或多个寄存器包括用来识别内部图形的有效ASID的上下文影子寄存器。
35.根据实施例33或34所述的处理器,其中所述一个或多个寄存器包括含有内部图形装置的REQID的寄存器。
36.根据实施例33-35中任一实施例所述的处理器,其中所述一个或多个寄存器包括每queueID含有最大数量的未完成ATS失效的寄存器。
37.根据实施例33-36中任一实施例所述的处理器,其中所述一个或多个寄存器包括含有ATS TLB失效的queueID的寄存器。
38.根据实施例33-37中任一实施例所述的处理器,其中所述一个或多个寄存器包括含有内部图形装置的domainID的寄存器,其用来识别所述失效将所述内部图形装置域作为目标。
39.根据实施例33-38中任一实施例所述的处理器,其中来自所述寄存器的值被插入到所述ATS命令中。
40.根据实施例17-39中任一实施例所述的处理器,所述IOMMU进一步包括十六个PASIDMAP寄存器。
41.根据实施例40所述的处理器,其中所述PASIDMAP寄存器可经由SRBM接口访问。
42.根据实施例40或41所述的处理器,其中当写入到PASIDMAP寄存器时,所述相同数据也被写入到所述IOMMU中。
43.根据实施例42所述的处理器,其中对所述IOMMU的访问是通过执行读取而被刷新的。
44.根据实施例40-43中任一实施例所述的处理器,其中当不再需要PASID时清除所述IOMMU的PASID有效寄存器。
45.根据实施例44所述的处理器,其中刚好在重新分配所述VMID之前通过VMID使所述ATC失效。
46.一种含有北桥的处理器,所述北桥包括被配置成处理分布式虚拟内存(DVM)消息的电路。
47.根据实施例46所述的处理器,其中所述北桥进一步包括被配置成执行转译后备缓冲器(TLB)条目失效的电路。
48.根据实施例46或47所述的处理器,其中所述DVM消息被发送到输入/输出控制(IOC)块。
49.根据实施例46-48中任一实施例所述的处理器,其中DVM操作是作为WrDword从垫片发送,其中垫片包括在统一北桥(UNB)与所述处理器之间通信的装置。
50.根据实施例49所述的处理器,其中所述WrDword包括128位数据有效负载。
51.根据实施例46-50中任一实施例所述的处理器,其中不同地址用于不同类型的DVM操作。
52.根据实施例46-51中任一实施例所述的处理器,其进一步包括被配置成停止到所述处理器的符记释放直到WaitSpuSecureBootInit等于零为止的电路。
53.根据实施例52所述的处理器,其中所述处理器不轮询DramValid位或HtInitStatusValid位。
54.根据实施例52或53所述的处理器,其中如果所述处理器是在安全启动模式中,那么进程栈指示器(PSP)设定所有所述北桥寄存器且训练动态随机访问内存(DRAM)。
55.根据实施例46-54中任一实施例所述的处理器,其中所述DVM消息包括失效或SyncOp消息。
56.根据实施例55所述的处理器,其中所述DVM消息导致SMMU条目失效。
57.根据实施例55或56所述的处理器,其中所述DVM消息必须在发送完成消息之前完成对页的未完成请求。
58.根据实施例55-57中任一实施例所述的处理器,其进一步包括被配置成将等时公布的信用从装置释放到所述UNB的电路。
59.根据实施例55-58中任一实施例所述的处理器,其进一步包括被配置成将等时公布的写入从装置接受到所述UNB的电路。
60.根据实施例55-59中任一实施例所述的处理器,其进一步包括新信道,所述新信道是通过在新寄存器中将符记分配给所述信道而被启用。
61.根据实施例60所述的处理器,其中由DVM Op和DVM Sync请求使用所述新信道。
62.根据实施例46-61中任一实施例所述的处理器,其进一步包括全局时间戳计数器。
63.根据实施例62所述的处理器,其中所述全局时间戳计数器经由队列提供给处理器接口。
64.根据实施例63所述的处理器,其中所述队列是先入先出队列。
65.根据实施例46-64中任一实施例所述的处理器,其中包括被配置成提供对地址的互斥访问以支持对信号量操作的原子访问的电路。
66.根据实施例65所述的处理器,其中当查看MCT处饿互斥负载时启动所述电路。
67.根据实施例46-66中任一实施例所述的处理器,其进一步包括用于来自所述处理器的VicBlk请求的硬符记。
68.根据实施例67所述的处理器,其中所述处理器进一步被配置成在写入数据信道上将数据推送到所述垫片。
69.根据实施例68所述的处理器,其中在所述北桥从所述垫片拉取所述数据且所述垫片接收目标完成信号之后,在所述写入数据信道上推送所述数据。
70.根据实施例69所述的处理器,其中通过写入缓冲器释放信号来传达所述目标完成信号。
71.根据实施例67-70中任一实施例所述的处理器,其中如果所述处理器发布回写,那么所述垫片和所述SRI将所述回写递送到内存。
72.根据实施例71所述的处理器,其中当所述处理器等待所述回写完成时,存在死锁条件。。
73.根据实施例67-72中任一实施例所述的处理器,其进一步包括从所述处理器到所述MCT的虚拟信道,其中所述MCT允许回写传递较旧请求。
74.根据实施例67-73中任一实施例所述的处理器,其进一步包括额外回写信道和用于所述额外回写信道的专用缓冲器。
75.根据实施例74所述的处理器,其进一步包括用来针对来自所述处理器的牺牲品/回写的所述SRQ而分配的专用硬符记。
76.根据实施例75所述的处理器,其中所述SRQ将始终具有用于牺牲品的可用符记。
77.根据实施例46-76中任一实施例所述的处理器,其进一步包括用于使所述MCT发布主桥读取的探测目标的电路。
78.根据实施例77所述的处理器,其中发布所述探测目标允许所述MCT合并探测响应、DRAM读取数据和可能的牺牲品传递情况,且将单读取响应发布回到SRI。
79.根据实施例77或78所述的处理器,其中所有XBAR到MCT请求分配MCD条目以接受探测脏数据或来自更早期传递的牺牲品的数据。
80.根据实施例79所述的处理器,其进一步包括保留的McdLo和McdHi符记。
81.根据实施例46-80中任一实施例所述的处理器,其进一步包括被配置成执行主桥读取的电路。
82.根据实施例81所述的处理器,其中所述主桥读取包括分配MCD条目和将McaDatPtr设置为有效。
83.根据实施例82所述的处理器,其中所述主桥读取进一步包括清除MCD字节掩码。
84.根据实施例83所述的处理器,其中所述主桥读取进一步包括针对主桥请求停用数据转递。
85.根据实施例84所述的处理器,其中所述主桥读取进一步包括发布探测目标。
86.根据实施例85所述的处理器,其中所述主桥读取进一步包括经由主桥RdSz请求设置MCQRdRspWaitSys位。
87.根据实施例86所述的处理器,其中所述主桥读取进一步包括在所述DCT读取响应到达时使MCQWaitG5CanDet过载为等待位,同时所述处理器探测是未决的或所述探测传回有脏数据。
88.根据实施例87所述的处理器,其中所述主桥读取进一步包括一旦到MPDB的所述DCT数据写入完成,就发送XBAR rd响应。
89.根据实施例87或88所述的处理器,其中所述主桥读取进一步包括清除MCQRdRspWaitSys和允许在探测失败之后即刻发生后续XBAR RdRsp选取。
90.根据实施例87-89中任一实施例所述的处理器,其中所述主桥读取进一步包括:如果DCT响应在处理器探测响应失败之后到达,那么发布XBAR读取响应。
91.根据实施例46-90中任一实施例所述的处理器,其进一步包括用来允许SMM类型功能使用安全内存区域的两个安全内存范围内寄存器。
92.根据实施例91所述的处理器,其中从PSP除外的所有装置停用对所述安全内存区域的访问。
93.根据实施例91或92所述的处理器,其中所述处理器仅可在安全模式中时访问所述安全内存区域。
94.根据实施例91-93中任一实施例所述的处理器,其中可通过寄存器中的读取启用(RE)/写入启用(WE)位来限制对所述安全内存区域的读取/写入访问。
95.根据实施例91-94中任一实施例所述的处理器,其进一步包括发送NS位与请求以确定所述处理器是否可访问所述安全内存区域。
96.根据实施例46-96中任一实施例所述的处理器,其中coreSight访问是由所述垫片通过使这些访问看起来像是到DRAM的正常写入来处理的。
97.根据实施例46-96中任一实施例所述的处理器,其进一步包括GNB与NB之间的中断导线。
98.根据实施例97所述的处理器,其中所述中断导线是等级中断。
99.根据实施例46-98中任一实施例所述的处理器,其进一步包括被配置成在起始PLL重锁以保证无损CCI传输之前使所述处理器北桥接口静默的电路。
100.根据实施例99所述的处理器,其中所述静默包括使用StpClk/StartClk交握机制。
101.根据实施例99或100所述的处理器,其进一步包括在所述北桥与所述垫片之间创建边带。
102.根据实施例100或101所述的处理器,其中所述静默包括使用StpClk处理程序中的WFE。
103.根据实施例46-102中任一实施例所述的处理器,其进一步包括添加对XC6的中断率监控器支持。
104.根据实施例103所述的处理器,其进一步包括在面临XC6条目决定时使减量率减速。
105.根据实施例46-104中任一实施例所述的处理器,其进一步包括用于跟踪L2失败和总线访问的额外计数器。
106.根据实施例46-105中任一实施例所述的处理器,其进一步包括用于回写虚拟信道,以解决回写与探测之间的死锁。
107.根据实施例106所述的处理器,其中一旦较旧读取到达MCT,就可将回写重新排序为在所述读取之前。
108.根据实施例107所述的处理器,其中所述重新排序包括重新发布较早DRAM读取。
109.根据实施例106-108中任一实施例所述的处理器,其进一步包括:当牺牲品到达时,针对与较旧操作是否达成地址匹配来对其进行检验。
110.根据实施例109所述的处理器,其中如果发生地址匹配,那么检验所述匹配是关于等待探测响应的读取还是等待探测响应的写入。
111.根据实施例109或110所述的处理器,其中如果检测到多个地址匹配,那么选择最旧地址匹配。
112.根据实施例109-111中任一实施例所述的处理器,其中如果所述牺牲品与等待响应的写入匹配,那么所述牺牲品被视为探测响应且被并入到先前写入的MCD条目中。
113.根据实施例112所述的处理器,其进一步包括释放已分配给所述牺牲品的MCD条目。
114.根据实施例109-111中任一实施例所述的处理器,其中如果所述牺牲品与等待响应的读取匹配,那么所述牺牲品被并入到所述读取的MCD条目中且被写入到其自身MCD条目中。
115.根据实施例114所述的处理器,其中所述牺牲品经由第二MCD写入端口被写入到其自身MCD条目中。
116.根据实施例46-115中任一实施例所述的处理器,其进一步包括不可见帧缓冲器(IVFB)。
117.根据实施例116所述的处理器,其中所述IVFB是由所述PSP设定且可被设置为任何大小。
118.根据实施例116或117所述的处理器,其中限制对所述IVFB的读取访问。
119.根据实施例116-118中任一实施例所述的处理器,其中任何主机均可写入到所述IVFB。
120.根据实施例46-119中任一实施例所述的处理器,其进一步包括横跨CCI的信号,所述信号用于使SecureEnable确定何时强制发送fdf7安全异常向量。
121.根据实施例46-120中任一实施例所述的处理器,其中所述垫片被配置成实施SMN接口上的配置寄存器。
122.根据实施例121所述的处理器,其中由所述处理器在其XC6高速缓存/状态刷新例程期间保存所述状态。
123.根据实施例122所述的处理器,其中由所述处理器经由C6重置处理程序恢复所述状态。
124.根据实施例46-123中任一实施例所述的处理器,其中所述处理器支持称为包装次序的突发次序,其中所述包装次序是其中预期发送或接收数据的次序。
125.根据实施例124所述的处理器,其中以包装次序传回从MPBD或SRD传回的数据。
126.根据实施例124或125中任一实施例所述的处理器,其中以包装次序从MPBD读取的数据可以按预期突发次序写入到SRD中。
127.根据实施例126所述的处理器,其中SRD将以包装次序读取以将数据传回到所述处理器。
128.根据实施例46-127中任一实施例所述的处理器,其中所述CC6区域是可配置的。
129.根据实施例128所述的处理器,其中位被设置在安全启动寄存器中以指示所述CC6区域的可重新配置性。
130.根据实施例129所述的处理器,其中由所述PSP在安全启动进程期间写入所述位。
131.根据实施例46-130中任一实施例所述的处理器,其进一步包括在统一北桥(UNB)与所述处理器之间通信的垫片。
132.根据实施例131所述的处理器,其中所述垫片常驻在所述处理器时钟域中。
133.根据实施例131或132所述的处理器,其中所述垫片被配置成将交易转译成高速缓存一致性互连(CCI)交易。
134.根据实施例131-133中任一实施例所述的处理器,其中所述垫片被配置成将系统探测转译成监听。
135.根据实施例131-134中任一实施例所述的处理器,其中所述垫片被配置成转译内存映射以与统一北桥(UNB)/一致性超传输(cHT)环境互操作。
136.根据实施例131-135中任一实施例所述的处理器,其中所述垫片被配置成转译传送大小以与UNB/cHT环境互操作。
137.根据实施例131-136中任一实施例所述的处理器,其中所述垫片被配置成将来自所述处理的请求从先进可扩展接口(AXI)一致性扩展(ACE)命令转译成等效CCI命令。
138.根据实施例137所述的处理器,其中来自所述处理器的每个请求映射到特定CCI请求类型上。
139.根据实施例137或138所述的处理器,其中来自所述处理器的所述请求的类型被编码于所述读取和写入地址信道的AxDomain和AxSnoop字段中。
140.根据实施例137-139中任一实施例所述的处理器,其中所述总线上的位可以被过载来携带ACE属性。
141.根据实施例137-140中任一实施例所述的处理器,其中所述垫片被配置成将ACE标签转译成CCI标签。
142.根据实施例141所述的处理器,其中共享所述相同标签的ACE请求被串行化在所述垫片内。
143.根据实施例137-142中任一实施例所述的处理器,其中所述垫片被配置成将CCI编码探测从SRI转译成等效ACE监听交易。
144.根据实施例137-143中任一实施例所述的处理器,其中在所述垫片从所述CCI接口接收读取响应时,其在ACE总线上生成等效于集群的响应。
145.根据实施例144所述的处理器,其中所述垫片被配置成延迟开始所述ACE响应直到已从所述CCI接口接收所有数据差拍为止。
146.根据实施例137-145中任一实施例所述的处理器,其中所述垫片被配置成使用内存映射以创建预期辅助地址类型信号以与每个请求一起发送到SRI。
147.根据实施例146所述的处理器,其中所述垫片被配置成使用所述内存映射以将交易转译成cHT。
148.根据实施例46-147中任一实施例所述的处理器,其进一步包括由回写访问的独立虚拟信道,其中所述回写可排空到动态随机访问内存(DRAM)。
149.根据实施例148所述的处理器,其进一步包括用于供所述回写横越所述垫片的非阻挡路径。
150.根据实施例149所述的处理器,其进一步包括供所述回写横越SRQ的非阻挡路径。
151.根据实施例150所述的处理器,其进一步包括穿过横杆的非阻挡路径。
152.根据实施例148-151中任一实施例所述的处理器,其中在到达MCT中时,所述回写传递其它请求。
153.根据实施例152所述的处理器,其中最旧请求被标记为取决于所述回写标记。
154.根据实施例148-153中任一实施例所述的处理器,其中所述回写与非回写写入不交错。
155.根据实施例131-154中任一实施例所述的处理器,其中所述垫片被配置成观测用于驱动和接收来自同步器的信号的跳跃时钟逻辑。
156.根据实施例155所述的处理器,其中所述垫片被配置成使用预测先入先出(FIFO)队列以确保写入命令服从五个时钟分离。
157.根据实施例155或156所述的处理器,其中所述垫片被配置成将响应与ACE时序一起转递到所述处理器。
158.根据实施例155到157中任一实施例所述的处理器,其中所述同步器将信号提供给所述垫片以指示稍后是否将为读取/写入十个时钟启用所述同步器FIFO。
159.根据实施例137-158中任一实施例所述的处理器,其中所述垫片被配置成将ACE写入分成多个CCI写入。
160.根据实施例159所述的处理器,其中请求队列和/或写入缓冲器被配置成跟踪需要传送的特定字节;且生成适当命令。
161.根据实施例159或160所述的处理器,其中在已完成和释放所有所述多个写入时解除分配条目。
162.根据实施例137-161中任一实施例所述的处理器,其中写入被组合来填充高速缓存线。
163.根据实施例162所述的处理器,其中所述垫片包括少于写入请求条目数量的写入缓冲器。
164.根据实施例162或163所述的处理器,其中保持所述写入数据直到由所述SRI从所述缓冲器拉取所述写入数据为止。
165.根据实施例162-164中任一实施例所述的处理器,其中所述写入请求保持开放直到所述响应能够发送到所述处理器为止。
166.根据实施例165所述的处理器,其中所述响应能够在SRI缓冲器释放之后发送到所述处理器,所述SRI缓冲器释放是基于目标完成信号。
167.根据实施例162-166中任一实施例所述的处理器,其中所述垫片进一步被配置成刷新所述缓冲器。
168.根据实施例167所述的处理器,其中所述缓冲器是基于缓冲器刷新触发而被刷新。
169.根据实施例168所述的处理器,其中所述缓冲器刷新触发是所述缓冲器完全有效的任何时间。
170.根据实施例168所述的处理器,其中所述缓冲器刷新触发是耗尽未发送缓冲器的任何时间。
171.根据实施例168所述的处理器,其中所述缓冲器刷新触发是处理器写入不命中已向所述处理器开放的缓冲器的任何时间。
172.根据实施例168所述的处理器,其中所述缓冲器刷新触发是达到开放缓冲器数量的编程极限的任何时间。
173.根据实施例168所述的处理器,其中所述缓冲器刷新触发是不再写入所述缓冲器的指示。
174.根据实施例167-173中任一实施例所述的处理器,其中仅可组合具有正确可高速缓存性属性的写入。
175.根据实施例167-174中任一实施例所述的处理器,其中刷新用于屏障的所有缓冲器。
176.根据实施例167-175中任一实施例所述的处理器,其中刷新用于DvmSync的所有缓冲器。
177.根据实施例137-176中任一实施例所述的处理器,其中所述垫片进一步被配置成执行屏障交易,其中维持交易次序。
178.根据实施例177所述的处理器,其中所述屏障交易包括内存屏障。
179.根据实施例178所述的处理器,其中所述内存屏障保证如果主设备组件可观测在所述屏障之后发布的任何交易,那么所述组件能够观测在所述屏障之前发布的每次交易。
180.根据实施例177所述的处理器,其中所述屏障交易包括同步屏障。
181.根据实施例180所述的处理器,其中所述同步屏障是由主设备组件发布以保证在所述屏障完成时可由适当域中的每个主设备组件观测在所述屏障之前发布的所有交易。
182.根据实施例180或181所述的处理器,其中所述同步屏障与边带发信通信一起使用。
183.根据实施例177到182中任一实施例所述的处理器,其中所述屏障交易是由所述垫片通过确保所有较早请求已由所述垫片在向处理器指示完成之前发布到所述SRI来处理。
184.根据实施例183所述的处理器,其中一旦已发布所有较旧请求,所述垫片就将对所述屏障交易的响应发送到所述处理器。
185.根据实施例131到184中任一实施例所述的处理器,其中所述垫片包括通用中断控制器(GIC)。
186.根据实施例185所述的处理器,其中所述GIC包括处理器接口、分发器和中断转译服务(ITS)。
187.根据实施例186所述的处理器,其中所述分发器被配置成经由将由本地SRI接收的MSI数据包从源接收中断。
188.根据实施例1-187中任一实施例所述的处理器,其中所述处理器被配置成发布分布式虚拟内存(DVM)交易以将页表更新传达到所述IOMMU。
189.根据实施例188所述的处理器,其中所述DVM交易被转换成公布的写入。
190.根据实施例188或189所述的处理器,其中由所述地址的一部分识别所述DVM命令,其是从所述DVM库地址的偏移。
191.根据实施例188-190中任一实施例所述的处理器,其中所述处理器在读取信道上发布一个或多个DVM操作(DvmOp)的序列。
192.根据实施例191所述的处理器,其中所述垫片被配置成将每个DvmOp转译成DWORD写入操作。
193.根据实施例192所述的处理器,其中所述写入数据包括来自所述DvmOp的必需信息。
194.根据实施例188-193中任一实施例所述的处理器,其中所述处理器被配置成在所述读取信道上发布DvmSync操作,其推送任何较早DvmOp且确保所述DvmOp已完成。
195.根据实施例194所述的处理器,其中一旦接收DvmSync操作的每个代理已完成所有未决DvmOp和DvmSync,所述代理就发布其自身DvmCompletion操作。
196.根据实施例195所述的处理器,其中所述IOMMU将FENCE/FLUSH命令发布到所述主桥,其推送任何较早操作。
197.根据实施例196所述的处理器,其中所述IOMMU经由等时公布的BYTE写入来发信所有DvmOp和DvmSync的完成。
198.根据实施例194-197中任一实施例所述的处理器,其中可串行地处理所述DvmSync op。
199.根据实施例198所述的处理器,其中所述垫片被配置成串行地处理所述DvmSync op。
200.根据实施例199所述的处理器,其中所述垫片包括每处理器一个DVM缓冲器,以能够组合多部分DvmOp的部分。
201.根据实施例137-200中任一实施例所述的处理器,其中所述垫片进一步被配置成组合处理器读取和写入地址信道。
202.根据实施例201所述的处理器,其中在输入处组合所述读取和写入地址信道且实施单共享队列。
203.根据实施例202所述的处理器,其中多路复用器与所述单共享队列相关联,且用来选择两个输入中的一个。
204.根据实施例201所述的处理器,其中对所述读取和写入地址信道实施单独队列,且在输出处组合所述队列。
205.根据实施例137-204中任一实施例所述的处理器,其中DSM钩被提供来监控所述垫片的ACE侧。
206.根据实施例131-205中任一实施例所述的处理器,其中所述垫片包括配置寄存器。
207.根据实施例206所述的处理器,其中所述垫片包括寄存器库地址寄存器。
208.根据实施例206或207所述的处理器,其中所述垫片包括执行状态重置向量地址寄存器。
209.根据实施例206-208中任一实施例所述的处理器,其中所述垫片包括GIC地址空间寄存器。
210.根据实施例206-209中任一实施例所述的处理器,其中所述垫片包括外围组件互连(PCI)配置库地址寄存器。
211.根据实施例206-210中任一实施例所述的处理器,其中所述垫片包括配置和控制位寄存器。
212.根据实施例211所述的处理器,其中所述配置和控制位寄存器包括设置请求队列大小的指示。
213.根据实施例211或212所述的处理器,其中所述配置和控制位寄存器包括特殊交易是否串行化的指示。
214.根据实施例211-213中任一实施例所述的处理器,其中所述配置和控制位寄存器包括是否利用替代ACE到CCI请求映射的指示。
215.根据实施例211-214中任一实施例所述的处理器,其中所述配置和控制位寄存器包括是否利用替代CCI探测到ACE监听映射的指示。
216.根据实施例211-215中任一实施例所述的处理器,其中所述配置和控制位寄存器包括垫片静默停用指示。
217.根据实施例211-216中任一实施例所述的处理器,其中所述配置和控制位寄存器包括回写串行化启用指示。
218.根据实施例211-217中任一实施例所述的处理器,其中所述配置和控制位寄存器包括用于所有多交易部分写入的强制字节写入的指示。
219.根据实施例211-218中任一实施例所述的处理器,其中所述配置和控制位寄存器包括DvmSync操作的强制串行化的指示。
220.根据实施例206-219中任一实施例所述的处理器,其中所述垫片包括CAC相关寄存器。
221.根据实施例206-220中任一实施例所述的处理器,其中SMN从设备接口被提供来访问垫片寄存器。
222.根据实施例221所述的处理器,其中所述SMN从设备接口被配置成在重置期间加载任何必需寄存器。
223.根据实施例221或222所述的处理器,其中所述SMN从设备接口被配置成提供对CAC相关寄存器的功率管理访问。
224.根据实施例221-223中任一实施例所述的处理器,其中所述SMN从设备接口被配置成提供对幼位的软件访问。
225.根据实施例221-224中任一实施例所述的处理器,其中所述SMN从设备接口被配置成提供用来在进入和离开封装CC6状态时保存和恢复所述寄存器的内容的方式。
226.根据实施例131-225中任一实施例所述的处理器,其中所述垫片包括单符记池,其中符记用于将请求发送到SRI。
227.根据实施例131-226中任一实施例所述的处理器,其中所述垫片被配置成参与功率管理。
228.根据实施例227所述的处理器,其中所述垫片被配置成实施对由其中定位所述处理器的集群提供的各种事件计数的所需CAC寄存器。
229.根据实施例227或228所述的处理器,其中所述垫片被配置成提供用于改变功率管理状态的静默功能。
230.根据实施例229所述的处理器,其中所述静默功能包括阻挡进一步CCI请求。
231.根据实施例227-231中任一实施例所述的处理器,其中所述垫片被配置成基于频率来存储加权的循环计数。
232.根据实施例185-231中任一实施例所述的处理器,其中所述GIC被配置成与功率管理接口交互。
233.根据实施例232所述的处理器,其中由微代码解译所有中断,所述微代码服务微架构中断且将任何架构上可见中断转递到操作系统(OS)。
234.根据实施例233所述的处理器,其中所述微架构中断包括停止时钟(StpClk)和开始时钟(StartClk)信号。
235.根据实施例232-234中任一实施例所述的处理器,其中通过远程写入或经由本地中断引脚来递送中断。
236.根据实施例232-235中任一实施例所述的处理器,其中GIC中断是通过到数据基础结构的AXI接口且经由包括共享外设中断(SPI)或私人外设中断(PPI)的本地中断引脚来递送。
237.根据实施例236所述的处理器,其中所有北桥多目标中断类型可用作PPI。
238.根据实施例237所述的处理器,其进一步包括用于所述中断处理程序的额外状态寄存器。
239.根据实施例236所述的处理器,其中如果到所述GIC的本地SPI输入均在自由运行时钟,那么将所述SPI输入重新映射到闲置退出。
240.根据实施例1-239中任一实施例所述的处理器,其中当ConnectMask信号在处于暂停状态或HTC SBC状态时解除确证时生成定时请求。
241.根据实施例240所述的处理器,其中阻挡到所有核心的探测发布。
242.根据实施例241所述的处理器,其中所有未决探测是通过等待其探测响应和/或数据移动完成而从任何受影响核心排空。
243.根据实施例242所述的处理器,其中所述处理器等待所有受影响核心放弃其NbBusy信号。
244.根据实施例243所述的处理器,其中所述处理器无条件地等待足够时间以将往返延迟覆盖到NBSYN先入先出(FIFO)队列,使得由所述FIFO队列中的飞行流量触发的新事件具有足够时间提出异议。
245.根据实施例244所述的处理器,其中所述处理器阻挡且等待对所述CAC接口上的未决APM请求作出响应或应答。
246.根据实施例245所述的处理器,其中所述处理器满足掉电滞后。
247.根据实施例240-246任一实施例所述的处理器,其中解除确证对作为目标的核心的所有时钟闸,且然后重新启用与探测相关联的时钟闸。
248.根据实施例240-247任一实施例所述的处理器,其中核心电压是通过调整功率闸控(PG)标头和经由反馈电路维持所述电压而减小。
249.根据实施例248所述的处理器,其中在刷新或不刷新的情况下应用所述调整和维持。
250.根据实施例248或249所述的处理器,其中Q-channel交握是结合功率控制器用来允许所述调整和维持。
251.根据实施例250所述的处理器,其中在完成所述Q-channel交握时,可退出低功率状态。
252.根据实施例250或251所述的处理器,其中在完成所述Q-channel交握之后,可设置核心C-state提交点。
253.根据实施例252所述的处理器,其中在CPU LowPwrReq确证时起始所述Q-channel交握。
254.根据实施例253所述的处理器,其中阻挡VceLowPrwRdy直到CPU QACCEPT确证为止,其指示已提交所述核心。
255.根据实施例240-254中任一实施例所述的处理器,其中快速中断请求(FIQ)/中断请求(IRQ)边缘用来创建唤醒事件。
256.根据实施例255所述的处理器,其中所述唤醒事件从RCC3保持模式退出。
257.根据实施例256所述的处理器,其中在从RCC3保持模式退出时,递送所有中断。
258.根据实施例1-257中任一实施例所述的处理器,其中所述处理器在接收DvmOp时解除确证CPU QACTIVE。
259.根据实施例258所述的处理器,其中在CC6路程中,掉电充当所有DVM目标的失效。
260.根据实施例258或259所述的处理器,其中所述处理器被配置成在DVM检测时从低功率模式退出。
261.根据实施例1-260中任一实施例所述的处理器,其中所述处理器被配置成使用功率闸控模式(CC6模式)。
262.根据实施例261所述的处理器,其中为进入所述CC6模式,所述北桥请求在对所述时钟的定时请求时进行功率双态切换。
263.根据实施例262所述的处理器,其中所述处理器可在刷新所述高速缓存和所述核心状态时进入所述CC6模式。
264.根据实施例261-263所述的处理器,其中在退出所述CC6模式,需要状态恢复。
265.根据实施例261-264中任一实施例所述的处理器,其中所述GIC在处理器接口处以若干模式中的一种编程FIQ/IRQ行为。
266.根据实施例265所述的处理器,其中所述若干模式中的一种包括正常模式,其中在所有情况下驱动来自所述GIC的nIRQCPU[n]/nFIQCPU[n]引脚。
267.根据实施例265所述的处理器,其中所述若干模式中的一种包括覆盖所述GIC输入与旧版FIQ/IRQ输入的旁通模式。
268.根据实施例265所述的处理器,其中所述若干模式中的一种包括旁通停用模式,其在存在低功率退出类型的中断的情况下将IRQ/FIQ引脚屏蔽到核心且将nIRQOUT[n]/nFIQOUT[n]引脚驱动到功率控制器。
269.根据实施例261-268中任一实施例所述的处理器,其中在退出所述CC6模式时,作为目标的核心进行重置且开始从异常向量提取代码。
270.根据实施例269所述的处理器,其中所述异常向量在跳转表中包括重置处理程序。
271.根据实施例1-270中任一实施例所述的处理器,其中所述处理器被配置成通过在最后一个核心进入C-state时需要L2保持而进入复保持模式(RXC3)。
272.根据实施例271所述的处理器,其中所述RXC3模式包括实施L2待用交握。
273.根据实施例272所述的处理器,其中所述L2待用交握是在最后一个核心进入所述RCC3模式或所述CC6模式时执行。
274.根据实施例1-273中任一实施例所述的处理器,其中所述处理器被配置成进入复功率闸控模式(XC6)。
275.根据实施例274所述的处理器,其中在所述XC6模式期间,所述垫片也掉电。
276.根据实施例275所述的处理器,其中所述垫片无法与所述北桥通信直到由所述北桥释放所有信用为止。
277.根据实施例275或276所述的处理器,其中所述垫片在其准备好接受信用时驱动Reset泛在识别码Go。
278.根据实施例1-277中任一实施例所述的处理器,其中在由监控器或等待机制生成刷新请求时,将StpClk发送到所述作为目标的核心。
279.根据实施例278所述的处理器,其中所述作为目标的核心刷新所述高速缓存且标记所述适当位以将所述刷新状态发信到所述北桥。
280.根据实施例279所述的处理器,其中所述北桥在对所述时钟生成定时/功率请求时进入更深C-state。
281.根据实施例1-280中任一实施例所述的处理器,其中CPUfreq例程将性能等级百分比映射到离散P-state等级。
282.根据实施例281所述的处理器,其中经由所述北桥中的CofVidCtl寄存器重新请求所述离散P-state等级。
283.根据实施例281或282所述的处理器,其中实施基于中断的静默和非静默例程。
284.根据实施例283所述的处理器,其中所述静默例程包括基于StpClk的静默例程。
285.根据实施例284所述的处理器,其中StpClk被钩到FIQ,其用作安全中断。
286.根据实施例284或285所述的处理器,其中如果实施信任区,那么P-state变化和StpClk源被注册为安全服务。
287.根据实施例286所述的处理器,其中监管模式用来使用其分组链路寄存器,从而允许重入FIQ中的两个示例。
288.根据实施例287所述的处理器,其中FIQ异常处理程序切换到所述监管模式以支持其它可信服务的StpClk抢占。
289.根据实施例284-288中任一实施例所述的处理器,其中在服务P-stateStpClk时,将HTC SBC系统管理播送发送到所述北桥。
290.根据实施例289所述的处理器,其中所有未完成流量是经由数据同步屏障(DSB)指令而静默。
291.根据实施例290所述的处理器,其中发信等待中断(WFI)。
292.根据实施例291所述的处理器,其中在接收所述WFI时,所述北桥通过阻挡选取到所述集群的探测而使所述探测静默。
293.根据实施例292所述的处理器,其中所述北桥排空其管线以摆脱已选取的探测。
294.根据实施例293所述的处理器,其中所述北桥等待未完成探测以在所述集群完成所述探测的缓冲器时解除分配所述缓冲器。
295.根据实施例293或294所述的处理器,其中一旦排空所述探测,所述北桥就在对所述P-state变化调度之前执行与所述集群的ACINACTM/STANDBYWFIL2交握。
296.根据实施例281-295中任一实施例所述的处理器,其中在集群处于P-state变化时,所述集群可以不采取中断或作出系统请求。
297.根据实施例296所述的处理器,其中由所述北桥屏蔽中断边缘。
298.根据实施例296或297所述的处理器,其中一旦所述P-state变化完成,所述北桥就将所述核心从静默唤醒。
299.根据实施例298所述的处理器,其中所述北桥经由StartClk唤醒所述核心。
300.根据实施例299所述的处理器,其中所述StartClk具有最高FIQ优先权。
301.根据实施例298所述的处理器,其中所述北桥经由等待事件(WFE)唤醒所述核心。
302.根据实施例301所述的处理器,其中所述WFE是经由EVENTI引脚从中断或事件触发。
303.根据实施例301或302所述的处理器,其中在所述核心从WFE退出时,所述核心将在所述StpClk处理程序中,其将不屏蔽中断和退出。
304.根据实施例281-303中任一实施例所述的处理器,其中所述垫片实施所述静默。
305.根据实施例304所述的处理器,其中所述集群与所述垫片之间的所述ACE接口继续操作;且使所述NBSYN的任一端上的所述CCI接口静默。
306.根据实施例304或305所述的处理器,其中所述垫片阻挡新请求且等待未完成响应。
307.根据实施例304-306中任一实施例所述的处理器,其中在P-state变化请求时,所述北桥通过边带将所述垫片发信到静默。
308.根据实施例307所述的处理器,其中所述垫片阻挡新的非回写请求发送到所述北桥且排空所有未完成回写。
309.根据实施例308所述的处理器,其中所述垫片在排空所有未完成回写时将静默的响应发信到所述北桥。
310.根据实施例309所述的处理器,其中所述北桥阻挡新探测被选取且等待未完成探测完成。
311.根据实施例310所述的处理器,其中所述垫片仅在来自所述北桥的探测没有是未完成时阻挡回写。
312.根据实施例311所述的处理器,其中只要存在到所述北桥的未决回写,那么所述垫片驱动NbBusy。
313.根据实施例312所述的处理器,其中所述北桥被容许仅在返回所有探测缓冲器且所述垫片不确证NbBusy时起始P-state变化。
314.根据实施例304-313中任一实施例所述的处理器,其中所述静默是通过所述北桥撤销所述静默请求和所述垫片通过移除所述静默的响应作出响应而执行。
315.根据实施例314所述的处理器,其中所述北桥保证已在开始新请求之前从所述先前交握解除确证所述响应。
应了解,基于本文中的公开内容,许多变动是可能的。尽管上文以特定组合方式描述特征和元件,但每个特征或元件可以在不具有其它特征或元件的情况下单独地或在具有或不具有其它特征和元件的情况下以各种组合方式使用。
所提供方法可以在通用计算机、处理器或处理器核心中实施。举例来说,合适处理器包括通用计算机、特殊用途处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、联合DSP核心的一个或多个微处理器、控制器、微控制器、特定应用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其它类型的集成电路(IC)和/或状态机。这些处理器可以通过使用经处理硬件描述语言(HDL)指令和包括网络表的其它中间数据(这些指令能够存储在计算机可读介质上)的结果配置制造进程而制造。这个处理的结果可以是然后在半导体制造进程中用来制造实施实施例的方面的处理器的掩码作品。
本文中所提供的方法或流程图可以在并入非暂时性计算机可读存储介质中以用于由通用计算机或处理器执行的计算机程序、软件或韧体中实施。非暂时性计算机可读存储介质的示例包括只读内存(ROM)、随机访问内存(RAM)、寄存器、高速缓存、半导体内存装置、磁性介质(诸如内部硬盘和可移除磁盘)、磁光介质和光学介质(诸如,CD-ROM光盘和数字多功能光盘(DVD))。

Claims (18)

1.一种用于管理计算机系统中的页表的方法,所述方法包括脏位的处理,所述方法包括:
访问所述页表中的一个或多个表条目,所述页表提供至少一个虚拟内存地址到其对应的物理地址的映射,根据访问旗标进行所述访问,所述访问通过硬件发生以便在一个原子更新中被执行,所述访问使得所述访问旗标中的至少一个访问位被修改,其中,所述访问旗标用于指示针对地址转译的安全和非安全表条目,其中,所述原子更新是单原子操作;
基于内存地址和对所述内存地址执行的一个或多个内存操作来修改在一个或多个被访问的页表中识别的内存地址,其中,所述修改包括使用所述一个或多个内存操作来设置和清除所述内存地址;以及
响应于所述原子更新中修改的内存地址,修改所述页表中的脏位,所述脏位指示页是干净的还是脏的,其中,在所述原子更新期间针对被访问的一个或多个表条目更新所述访问旗标中的所述至少一个访问位和所述脏位。
2.根据权利要求1所述的方法,其中所述修改是对单表条目执行的。
3.根据权利要求1所述的方法,其中在硬件中管理所述修改。
4.根据权利要求1所述的方法,其中响应于将访问旗标位被设置为0的页表条目读取到转译后备缓冲器(TLB)中,将内存中的页表条目的所述访问旗标位设置为1。
5.根据权利要求1所述的方法,其中所述访问旗标用来指示安全和非安全转译。
6.根据权利要求1所述的方法,其中响应于为地址转译的阶段启用所述访问旗标的硬件管理,不针对对应转译生成访问旗标故障。
7.根据权利要求5所述的方法,其中,所述访问旗标字段是ID_MMFR2[31:28]。
8.根据权利要求6所述的方法,其中,在单原子操作期间,从块或页转译表条目更新所述访问位和所述脏位。
9.根据权利要求1所述的方法,还包括:检查最后一个页表描述符,并且响应于所述脏位指示所述页是脏的而改变所述脏位以指示干净。
10.一种计算机系统,所述计算机系统包括:
处理器;以及
包括一个或多个页表的内存;
其中,所述处理器被配置成:
根据访问旗标来访问所述页表中的一个或多个表条目,所述页表提供至少一个虚拟内存地址到其对应的物理地址的映射,在一个原子更新中访问所述一个或多个表条目,所述访问使得所述访问旗标中的至少一个访问位被修改,其中,所述访问旗标用于指示针对地址转译的安全和非安全表条目,其中,所述原子更新是单原子操作;
基于内存地址和对所述内存地址执行的一个或多个内存操作来修改在一个或多个被访问的页表中识别的内存地址,其中,所述修改包括使用所述一个或多个内存操作来设置和清除所述内存地址;以及
响应于所述原子更新中修改的内存地址,修改所述页表中的脏位,所述脏位指示页是干净的还是脏的,
其中,在所述原子更新期间针对被访问的一个或多个表条目更新所述访问旗标中的所述至少一个访问位和所述脏位。
11.根据权利要求10所述的计算机系统,其中,所述处理器进一步被配置成:对单表条目执行所述修改。
12.根据权利要求10所述的计算机系统,其中,所述计算机系统在硬件中管理所述修改。
13.根据权利要求10所述的计算机系统,其中,所述处理器进一步被配置成:响应于将访问旗标被设置为0的转译表条目读取到转译后备缓冲器(TLB)中,将内存中的页表条目的所述访问旗标位设置为1。
14.根据权利要求10所述的计算机系统,其中,所述访问旗标用来指示安全和非安全转译。
15.根据权利要求10所述的计算机系统,其中,所述处理器进一步被配置成:响应于为地址转译的阶段启用所述访问旗标的硬件管理,不针对对应转译生成访问旗标故障。
16.根据权利要求10所述的计算机系统,其中,所述访问旗标字段是ID_MMFR2[31:28]。
17.根据权利要求15所述的计算机系统,其中,在单原子操作期间,从块或页转译表条目更新所述访问位和所述脏位。
18.根据权利要求10所述的计算机系统,其中,所述处理器进一步被配置成:检查最后一个页表描述符,并且响应于所述脏位指示所述页是脏的而改变所述脏位以指示干净。
CN201480067107.6A 2013-10-27 2014-10-24 输入/输出内存映射单元和北桥 Active CN105814547B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361896092P 2013-10-27 2013-10-27
US61/896,092 2013-10-27
PCT/US2014/062249 WO2015061731A1 (en) 2013-10-27 2014-10-24 Input/output memory map unit and northbridge

Publications (2)

Publication Number Publication Date
CN105814547A CN105814547A (zh) 2016-07-27
CN105814547B true CN105814547B (zh) 2019-12-03

Family

ID=52993652

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480067107.6A Active CN105814547B (zh) 2013-10-27 2014-10-24 输入/输出内存映射单元和北桥

Country Status (6)

Country Link
US (2) US10025721B2 (zh)
EP (1) EP3060992B1 (zh)
JP (1) JP6552512B2 (zh)
KR (1) KR102114941B1 (zh)
CN (1) CN105814547B (zh)
WO (1) WO2015061731A1 (zh)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710043B2 (en) * 2014-11-26 2017-07-18 Intel Corporation Controlling a guaranteed frequency of a processor
US20160239441A1 (en) * 2015-02-13 2016-08-18 Qualcomm Incorporated Systems and methods for providing kernel scheduling of volatile memory maintenance events
KR102485999B1 (ko) * 2015-07-01 2023-01-06 삼성전자주식회사 마스터-사이드 필터를 포함하는 캐시 코히런트 시스템과 이를 포함하는 데이터 처리 시스템
US9990291B2 (en) * 2015-09-24 2018-06-05 Qualcomm Incorporated Avoiding deadlocks in processor-based systems employing retry and in-order-response non-retry bus coherency protocols
US9977853B2 (en) 2015-11-04 2018-05-22 Chronos Tech Llc Application specific integrated circuit link
US10073939B2 (en) * 2015-11-04 2018-09-11 Chronos Tech Llc System and method for application specific integrated circuit design
US11550982B2 (en) 2015-11-04 2023-01-10 Chronos Tech Llc Application specific integrated circuit interconnect
CN106708671A (zh) * 2015-11-17 2017-05-24 深圳市中兴微电子技术有限公司 一种片上系统总线行为检测方法和装置
US9928128B2 (en) 2016-04-01 2018-03-27 International Business Machines Corporation In-pipe error scrubbing within a processor core
US10181939B2 (en) 2016-07-08 2019-01-15 Chronos Tech Llc Systems and methods for the design and implementation of an input and output ports for circuit design
EP3488564B1 (en) * 2016-07-25 2020-11-25 Telefonaktiebolaget LM Ericsson (PUBL) Method for fast convergence in layer 2 overlay network and non-transitory computer readable storage medium
CN110874332B (zh) * 2016-08-26 2022-05-10 中科寒武纪科技股份有限公司 内存管理单元及其管理方法
GB2554442B (en) * 2016-09-28 2020-11-11 Advanced Risc Mach Ltd Apparatus and method for providing an atomic set of data accesses
US10970081B2 (en) 2017-06-29 2021-04-06 Advanced Micro Devices, Inc. Stream processor with decoupled crossbar for cross lane operations
US10637592B2 (en) 2017-08-04 2020-04-28 Chronos Tech Llc System and methods for measuring performance of an application specific integrated circuit interconnect
US11469953B2 (en) 2017-09-27 2022-10-11 Intel Corporation Interworking of legacy appliances in virtualized networks
US10628315B2 (en) * 2017-09-28 2020-04-21 Intel Corporation Secure memory repartitioning technologies
US10861504B2 (en) 2017-10-05 2020-12-08 Advanced Micro Devices, Inc. Dynamic control of multi-region fabric
US10558591B2 (en) 2017-10-09 2020-02-11 Advanced Micro Devices, Inc. Method and apparatus for in-band priority adjustment forwarding in a communication fabric
CN111133417A (zh) * 2017-10-24 2020-05-08 英特尔公司 硬件辅助的虚拟交换机
US10304506B1 (en) 2017-11-10 2019-05-28 Advanced Micro Devices, Inc. Dynamic clock control to increase stutter efficiency in the memory subsystem
US11196657B2 (en) 2017-12-21 2021-12-07 Advanced Micro Devices, Inc. Self identifying interconnect topology
US10712800B2 (en) 2018-02-28 2020-07-14 Advanced Micro Devices, Inc. Aligning active and idle phases in a mixed workload computing platform
US10656696B1 (en) 2018-02-28 2020-05-19 Advanced Micro Devices, Inc. Reducing chiplet wakeup latency
CN110196824B (zh) * 2018-05-31 2022-12-09 腾讯科技(深圳)有限公司 实现数据传输的方法及装置、电子设备
KR102560251B1 (ko) * 2018-06-20 2023-07-26 삼성전자주식회사 반도체 장치 및 반도체 시스템
US11474953B2 (en) * 2018-10-12 2022-10-18 Marvell Asia Pte, Ltd. Configuration cache for the ARM SMMUv3
US10620958B1 (en) 2018-12-03 2020-04-14 Advanced Micro Devices, Inc. Crossbar between clients and a cache
US11087057B1 (en) 2019-03-22 2021-08-10 Chronos Tech Llc System and method for application specific integrated circuit design related application information including a double nature arc abstraction
US11108679B2 (en) * 2019-08-08 2021-08-31 Mellanox Technologies Tlv Ltd. Producing deadlock-free routes in lossless cartesian topologies with minimal number of virtual lanes
US11416397B2 (en) * 2019-10-14 2022-08-16 Intel Corporation Global persistent flush
US11507522B2 (en) 2019-12-06 2022-11-22 Advanced Micro Devices, Inc. Memory request priority assignment techniques for parallel processors
US20210181990A1 (en) * 2019-12-16 2021-06-17 Micron Technology, Inc. Interrupt signaling for a memory device
US11223575B2 (en) 2019-12-23 2022-01-11 Advanced Micro Devices, Inc. Re-purposing byte enables as clock enables for power savings
US11630771B2 (en) * 2021-07-13 2023-04-18 Apple Inc. Poison mechanisms for deferred invalidates
CN114416621B (zh) * 2021-12-29 2023-08-15 苏州雄立科技有限公司 一种基于axi协议的总线通信方法及装置
US11914524B2 (en) 2022-03-01 2024-02-27 Qualcomm Incorporated Latency management in synchronization events
US20230325316A1 (en) * 2022-04-11 2023-10-12 Arteris, Inc. System and method to enter and exit a cache coherent interconnect
US11971845B2 (en) * 2022-06-16 2024-04-30 Bae Systems Information And Electronic Systems Integration Inc. DSP encapsulation
US20230409502A1 (en) * 2022-06-16 2023-12-21 Bae Systems Information And Electronic Systems Integration Inc. Dsp eco system scalable with obfuscation
CN117056099B (zh) * 2023-08-14 2024-06-07 中国铁道科学研究院集团有限公司 一种铁路信号安全计算机平台及其内存共享方法
CN116932424B (zh) * 2023-09-14 2023-12-15 上海芯联芯智能科技有限公司 一种基于ecc检测的缓存访问方法、装置、介质和设备
CN116932333B (zh) * 2023-09-14 2023-12-26 武汉凌久微电子有限公司 一种硅后验证的axi总线实时性能监控方法
CN117709253B (zh) * 2024-02-01 2024-04-26 北京开源芯片研究院 芯片测试方法、装置、电子设备及可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473169A (zh) * 2009-12-31 2012-05-23 英特尔公司 动态系统重新配置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH077365B2 (ja) * 1987-05-29 1995-01-30 日本電気株式会社 情報処理装置
JP2586112B2 (ja) * 1988-07-13 1997-02-26 富士通株式会社 アドレス変換テーブルのアクセス制御方式
CA2107056C (en) * 1993-01-08 1998-06-23 James Allan Kahle Method and system for increased system memory concurrency in a multiprocessor computer system
US6134602A (en) * 1997-09-24 2000-10-17 Microsoft Corporation Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system
DE69942339D1 (de) * 1998-08-24 2010-06-17 Microunity Systems Eng System mit breiter operandenarchitektur und verfahren
US7099999B2 (en) 2003-09-30 2006-08-29 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
WO2006127613A2 (en) * 2005-05-24 2006-11-30 Marathon Technologies Corporation Symmetric multiprocessor fault tolerant computer system
US8799620B2 (en) 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US8166276B2 (en) 2009-02-27 2012-04-24 Advanced Micro Devices, Inc. Translate and verify instruction for a processor
JP5716537B2 (ja) * 2011-05-20 2015-05-13 日本電気株式会社 記憶媒体制御装置、記憶装置、記憶媒体制御方法、プログラム
GB2491665B (en) * 2011-06-08 2014-02-26 Inst Information Industry Processor bridging in heterogeneous computer system
US9152570B2 (en) * 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
GB2514107B (en) * 2013-05-13 2020-07-29 Advanced Risc Mach Ltd Page table data management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473169A (zh) * 2009-12-31 2012-05-23 英特尔公司 动态系统重新配置

Also Published As

Publication number Publication date
KR102114941B1 (ko) 2020-06-08
US20180307619A1 (en) 2018-10-25
WO2015061731A1 (en) 2015-04-30
EP3060992A4 (en) 2017-06-28
EP3060992A1 (en) 2016-08-31
US20150120978A1 (en) 2015-04-30
EP3060992B1 (en) 2019-11-27
JP2017502435A (ja) 2017-01-19
US10223280B2 (en) 2019-03-05
CN105814547A (zh) 2016-07-27
US10025721B2 (en) 2018-07-17
JP6552512B2 (ja) 2019-07-31
KR20160076532A (ko) 2016-06-30

Similar Documents

Publication Publication Date Title
CN105814547B (zh) 输入/输出内存映射单元和北桥
CN103827839B (zh) 用于在支持共享虚拟存储器的异构计算系统中的tlb关闭的方法和装置
CN104462004B (zh) 微处理器及其处理核间同步运作的方法
CN106030534B (zh) 用于挽救部分执行的硬件事务的方法和系统
CN104216680B (zh) 微处理器及其执行方法
TW201030671A (en) Graphics processing units, metacommand processing systems and metacommand executing methods
CN104331388B (zh) 微处理器及在微处理器的处理核间同步的方法
CN104238997B (zh) 微处理器及其执行方法
CN104216679B (zh) 微处理器及其执行方法
US20160139922A1 (en) Context sensitive barriers in data processing
CN104360727B (zh) 微处理器及使用其省电的方法
CN105765547A (zh) 用于执行总线锁定和转译后备缓冲器失效的方法和装置
CN104239275A (zh) 多核微处理器及其重新配置方法
CN104239274B (zh) 微处理器及其配置方法
CN104331387B (zh) 微处理器及其配置方法
TWI292099B (en) Apparatus, method and computer program product for processing data within a secure processing system
CN104239272B (zh) 微处理器及其操作方法
CN104216861B (zh) 微处理器及在微处理器中同步处理核的方法
CN104239273B (zh) 微处理器及其执行方法
Kornaros et al. An IOMMU for hardware-assisted full virtualization of heterogeneous multi-core SoCs

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant