Ice Lake CPU RESET流程

2024-06-13 00:18
文章标签 流程 cpu reset lake ice

本文主要是介绍Ice Lake CPU RESET流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、 处理器支持3种reset,分别是cold reset和warm reset和PWRGD reset;

a) cold reset是指在首次上电触发CPU的PWRGOOD和RESET_N,其中PWRGD的触发需要在Base Clock就绪并且power都已经稳定之后才可以,该reset将会复位处理器里的所有的状态,包括被其他reset阻止的sticky state。

b) warm reset是指RESET_N被触发并解触发,在PWRGOOD信号保持触发的状态下。Warm reset会保存error log和系统检查bank状态(machine check bank states)用来做error分析。

i. 一个干净的warm reset的典型流程应该开始于BIOS给CF9寄存器写值;紧随Reset_Warn,PCH会用GO_S1_RW来作为响应;这些信息通过DMI由PCH发给CPU。RESET_N信号被触发,PCH和处理器之间的握手(handshake)将会提示CPU接下来即将发生RESET,并允许其做相关的准备。当GO_S1_RW周期握手完成后,处理器会将所有的核(cores)置于静止状态(期间core将不会expect任何traffic)并过度至LFM(low frequency Mode)。当warn reset 周期完成之后,处理器会drain 他的IO 队列(queues),将memory置于自刷新(self-refresh)如果需要的话,并且将PCIe和DMI3的链接置于L2。当从reset重新恢复的时候,PLL(除了filter PLL和PCU PLL外)将会被重新锁定。IO链接将会经历初始化和校准。

ii. 一个突发的热复位多数因为error而发生,没有来自于PCH的GO_S1_RW和Reset_Warn来触发RESET_N。

c) PWRGOOD复位类似于cold reset,是指PWRGOOD解触发而RESET_N被触发。这种复位方式bypass了Voltage Regulator的上升时间。FIVRs(full integrated voltage regular,集成式调压模块,cpu die上集成电源vr技术)将会重新上电因为当PWRGOOD解触发的时候,所有的片上FIVRs都会掉电。

2、 Reset Flow

Reset Flow包含7个阶段

(1) Phase 1 and 2 (Expectation from the platform)

该阶段的主要功能是起电源井(bring up power wells),以CPU PWRGOOD触发为结束。Platform预期将会按照如下的顺序触发信号:

PWRGD解触发并且RESET_N被触发;

在所有的外部电(external power rails)起来并且refrence clock(BCLK)稳定2ms之后,平台触发PWRGD和继续触发RESET_N信号给socket;

PWRGD必须有一个明确的边沿(clean edge);

只要所有的外部电源都保持稳定的话,则PWRGD持续触发

(2) Phase 3(Early CPu infrastructure bring up)

该阶段的主要目的是初始化片上的逻辑和必要的时钟用来结束PCU的复位状态(bring the PCU out of reset),进入到此阶段则表明平台已经稳定了参考时钟并且平台的电源轨(power rail)都已经起来了。实质上,在触发PWRGD之前平台所有需要依赖的条件都已经满足。

触发PWRGD(从Phase2到Phase3的触发条件)

早期启动power well,FIVR启动(Early boot power well/FIVR ramps up)

Filter PLL和PCU PLL锁定

PCU提出复位(bring up of reset)并且开始下载fuse(download of fuses)

解触发PCH reset signal预示着从phase 3到phase 4的过渡;

(3) Phase 4 (PCH and uncore agent subsystem bring up)

该阶段的作用是启动边带寄出设备(side-band infrastructure)、共享FIVR 和 PLL和任何不需要从PCH得到strap信息的子系统;Strap信息在DMI link训练完成之后被发送。在状态的最后,RESET_N到处理器将会解复位。

PCH微控制器从复位中出来后(come out of reset),开始复位pcode执行器,这个是计划的“重进入”点对于Warm Reset processing来说。(This is the planned ‘re-entry’ point for warm Reset processing)

全局PMSB(Power Management IOSF sideband)和GPSB(General
Purpose IOSF sideband)从复位中被带出

PECI和SPD SMBUS从复位中走出

SVID接口被设置来初始化外部的VR的输入电压为目标值

PLL将DMI3、intel UPI和PCIe link的锁定

在DMI link 训练完成后strap information将会被发送

RESET_N信号的解触发会完成PCU的复位并且标志着从P4阶段转移到p5阶段

(4) Phase5 (Uncore initialization and core bring up)

该阶段的作用是初始化非核(uncore)和完成core的复位

P5是在外部pin RESET_N解触发完成之后进入的。Boot mode related straps可以使用同时他们会在PWRGOOD触发的时候被采样;

Pcode服务DMI3的握手协议(pcode services DMI3 handshake protocol)。如果DMI3的连接使用了DMI3模式,那么pcode开始DMi3连接的训练并且检查链路是否被训练为L0 gen1的速率。如果是传统的socket(legacy socket),并且如果DMI3并没有在3到4ms的时间内达到L0,那么pcode将会执行error flow。在一个非传统socket上,如果DMI3 link没有被训练为L0,那么pcode将不会记录MCA(will not log an MCA)并且不会触发CATERR_N。

Pcode基于straps修饰boot模式流程(pcod performs boot mode processing based on straps)。它会合适地设置advertised firmware,IO,和Intel TXT(Trusted Execution Technology(可信执行技术)) agent bit。它也会根据straps来升级intel UPI 参数交换寄存器(parameters exchange register)。

开始intel UPI链路的训练:(a)在传统socket下,会从slow mode开始UPI链路的training,然后停在参数交换(parameter exchange)(stalling at parameter exchange will hold peer socket from completing its link training and hence the reset sequence)。没有均衡被pcode执行;(b)在非传统socket下开始UPI 链路训练,链路连接到传统的socket将不会完成训练直到传统socket上的uncore初始化和DMI3 握手完成。链路连接到remote
socket将会完成训练和初始化。

Pcode决定了核数(core)、切片数(slices)和核的st/mt-threading数量。在这一步pcode也计数了BIOS禁止的核的数量。Pcode决定是否BIST应该被执行。如果BIST
strap被设置或者被请求之后,BIST将会被执行;

Pcode编程(program)了内存控制逻辑(memory controller logical ids)并且从物理转换到逻辑模式;

LLC复位并配置

如果BMCINIT strap被设置,pcode进入SSP模式,并且pcode服务PECI接口来允许PECI主机来配置非核。如果它不是service processor boot mode,pcode等待链接来得到参数交换(parameter exchange)

Pcode使用intel UPI parameter exchange寄存器来配置返回路径(return route)到所有的事务(agents found at one-hop distance)

Core完成reset

(5) Reset phase 6(Microcode execution)

这一步是在core完成内部reset序列并准备开始fetch。如果没有线程被委派(designated)为boot strap processor(BSP),然后它将会进入等待状态。否则它开始抓取Architectrue Reset Vector并且开始BIOS的执行;

在开始前应假设:(a)在这个阶段开始前,以下信息应该被提供给core:APIC-ID,是否是BSP,SMT enable/disable,reset模式(cold,warm,C6 exit)

获取BIOS所需的非核心(uncore necessary to the get to the BIOS)并且TXT地址空间全部初始化完成;

在这一阶段:

初始化内核的内部结构,阵列,微架构和结构状态(architectural)

执行MLC BIST ,如果BIST被允许的话

从非核读取LLC BIST 结果,并且在EAX register中报告;

报告LLC和MLC BIST结果

被选择为BSP的核和线程将会抓取BIOS或进入到等待状态;

结束时应假设至少有一个线程被委派为BSP包

(6) Reset phase 7(BIOS execution and memory controller bring up)

在该阶段下,BIOS开始在内核中跑起来并且通过(go through)了所有必要的枚举和设置(enumeration & set up)。内存控制子系统也完成了复位在该状态中,这一节描述了BIOS需要去做什么来配置处理器;

开始的假设为:(a)到BIOS的路径已经建立起来(通过UPI或者DMi3)(b)到Intel TXT 地址空间的路径已经建立起来

这一节至描述了BIOS针对处理器的任务,在OS接管之前

Program CPUBusNo:CPUBusNo描述了PCI配置空间的Bus number。该寄存器将会被设置为0并且在所有类型的reset中被标志为无效(marked invalid)。BIOS将会需要将核实的bus number编程进这个寄存器中,并且将这个寄存器标志位有效。直到这个有效位被设置之前,CPU都不会解码bus#到配置tx传输上(config tx transactions)。所有的传输都会被socket在本地消耗。

DDR/IMC bring up:将memory 子系统带离reset,bios需要按照如下流程:(需要注意的是,在目前的版本的处理器中,IMC的bring up会在较早的时候被提出。在这一阶段会改变频率)(a)BIOS询问DIMM和配置预期的DDR连接速率;(b)BIOS处理SET_MC_FREQ指令给pcode,后者然后锁定IMC PLLs并且bring up IMC按照需要的速率;

UPI link configuration:从cold reset中出来或者S3重新恢复(resume)时,Intel UPI连接将会按照slow mode来建立(come up)。BIOS询问平台的其他socket来找到被各种socket所支持的频率最高的共同分母(the highest common denominator of frequencies supported by various
socket)。流程如下:BIOS编程新的intel UPI PLL 速率并且通过BIOS到pcode的Mailbox command来指示fast mode。

Core min/max ratio change:BIOS将会需要为每一个socket里的FlexRatioMSR来编程;

Core Enable/Disable flow:平台允许的内核将会在Resolved_Core里被报告。BIOS将会编程内核来disable CSR_DESIRED_CORES里的mask;

Credit 初始化在uncore中

调用平台的warm reset来是上述的改变生效

其他在该阶段执行的任务包括:

BIOS调用phase shedding在DRAM VR,通过调用MailBox_BIOS_CMD_VDD_RAMP

BIOS处理comm决定哪一个DRAM被CPU发现,CPU在冷复位时会做一次这样的动作

理器将会支持cold boot序列,其中包括DDR电源的设置。BIOS需要决定平台上VR的类型并调整电压为预期的电压值;

BIOS将会需要初始化多种电源管理特性在交给OS接管之前

这篇关于Ice Lake CPU RESET流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055754

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

火语言RPA流程组件介绍--浏览网页

🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器

Java程序到CPU上执行 的步骤

相信很多的小伙伴在最初学习编程的时候会容易产生一个疑惑❓,那就是编写的Java代码究竟是怎么一步一步到CPU上去执行的呢?CPU又是如何执行的呢?今天跟随小编的脚步去化解开这个疑惑❓。 在学习这个过程之前,我们需要先讲解一些与本内容相关的知识点 指令 指令是指导CPU运行的命令,主要由操作码+被操作数组成。 其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

C++/《C/C++程序编译流程》

程序的基本流程如图:   1.预处理        预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。 读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理将所有的“#define”删除,并且展开所有的宏定义处理所有的条件编译指令,如:“#if”、“

笔记本电脑的具体选购步骤流程

2.1 笔记本电脑的具体选购步骤流程   关于笔记本电脑的选购,一直是热点话题。不管是新手还是老前辈,选购前,总是要先上网查一查,汇总一些信息或经验。因为选购一台笔记本电脑,从它的配置、外观到做工等很多方面都需要考量,所以挑一台自己喜欢的、适合自己的笔记本电脑也是一件很费脑筋的事情。本节将一些选购笔记本电脑的经验进行了总结,供广大读者选购笔记本电脑时参考。   笔记本电脑选购流程如下

基于微信小程序与嵌入式系统的智能小车开发(详细流程)

一、项目概述 本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐等多个领域。 二、系统架构 1. 系统架构设计 本项目的系统架构主要分为以下几个部分: 微信小程序:负责用户界面、控制指令的