RISC-V CPU加电执行流程 (4)

现代系统使用同步通信来实现往返于存储系统中DRAM的高数据传输速率。 同步通信的系统使用时钟信号作为时序参考,因此可以以与该参考已知的关系来发送和接收数据。 维持这种关系的困难在于工艺,电压和温度变化会改变时钟和数据信号之间的时序关系,从而导致时序裕量(timing margin)降低。 随着信号速度的增加,该问题变得更加严重,从而限制了系统以更高的速度通信数据的能力。

DLL 用于维护时钟信号和输出数据信号之间的正时关系。DLL 的一个关键要素是相位探测器,它检测时钟和输出数据之间的相位差异。相位探测器检测此相差,并通过低通滤波器向可变延迟线发送控制信息,该延迟线可调整内部时钟的正时以保持所需的正时关系(PLL 使用电压控制振荡器来调整此正时关系)。维持这两个信号之间的相位关系的一个困难是,向相位检测器提供反馈的循环必须考虑到输出逻辑和输出驱动程序的正时特征。这一点很重要,因为它估计了时钟和输出驱动因素驱动的数据之间的相位差异。为了实现这一目标,模仿输出逻辑和输出驱动程序的行为特征的电路入到此反馈回路中,以模拟当过程、电压和温度变化时的时间延迟和行为变化。通过DLL和PLL以这种方式保持时钟和输出数据之间的正时关系,可以提高计时间距,并解决了提高信号速度的重要限制。

PLL 类似于 DL,但也可用于拆分或乘以外部系统时钟频率,用于芯片的其他部分。PLL 可用于向 DRAM 的核心提供较慢的时钟频率,而接口则以更高的时钟频率运行。以这种方式使用的PLL使DRAM核心预装,允许DRAM核心以较慢的频率运行(提高DRAM产量),同时允许接口以更高的速度运行,以提高系统性能。

RISC-V CPU加电执行流程

 

1.9.2 DDR中PHY

DDR PHY是指芯片存储器的高速接口物理层,是SOC和外界存储之间数据地址传输的一个重要通道。它主要基于时钟上下沿分别采集数据来达到提高传输速率的目的。

内存子系统一般理解包含下面这些部分:

RISC-V CPU加电执行流程

 

在BIOS的代码中除了按照硬件手册和用户的选择填寄存器外,还存在着一部分内存初始化代码MRC(Memory Reference Code),也叫Memory Training代码,主要用来调整时序和提高信号完整性。内存IO的频率十分高,微小的误差也会被放大,Memory Training通过 “训练” 得到一组对齐、补偿和参考电压参数,来平衡和对冲线路的差异和信号的噪声。

 

PHY是物理接口的部分(其所处结构大致为DDR controller接口ßàPHYßà外部DDR接口),它包括了内存的Training所需要的物理层支持。因此它的主要功能是作为一个硬件接口,处理时序,将信号以一个较好的时序发出。

1.9.3 GEM GXL TX PLL中的PLL

(1)TX:内置时钟

(2)PLL:(Phase Locked Loop)相锁环

      

1.9.4 DTB (硬件设备树)

硬件设备树是一种描述硬件资源的数据结构,它通过bootloader将硬件资源传给内核,使得内核和硬件资源描述相对独立。

 

直观来说,在Windows中,DTB即为下图中 “我的电脑” 属性里的 “设备管理器”。

RISC-V CPU加电执行流程

 

设备树由一系列被命名的节点及其属性构成,一般来说,其包含的信息如下:

CPU的数量和类别

内存基地址和大小

总线和桥

外设连接

中断控制器和中断使用情况

GPIO控制器和GPIO使用情况

它基本上就是画一棵电路板上CPU、总线、设备组成的树,Bootloader会将这棵树传递给内核,然后内核可以识别这棵树,并根据它展开出Linux内核中的相关设备。

 

设备树的组成包括三部分,DTC(Device Tree CompilerDTS(Device Tree SourceDTB(Device Tree Blob

DTS: dts文件是对Device Tree的描述,放置在内核的/arch/arm/boot/dts目录。一个*.dts文件对应一个ARM的machine。dts文件描述了一个板子的硬件资源。以前写在mach-xxx文件中的内容被转成了dts文件。

DTC: DTC为编译工具,它可以将.dts文件编译成.dtb文件。

DTB: DTC编译*.dts生成的二进制文件(.dtb),bootloader在引导内核时,会预先读取.dtb到内存,进而由内核解析。

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzzjw.html