PCIE 参考时钟架构

一、PCIe架构组件

    首先先看下PCIE架构组件,下图中主要包括

ROOT COMPLEX (RC) (CPU);

PCIE PCI/PCI-X Bridge;

PCIE SWITCH;

PCIE ENDPOINT (EP) (pcie设备);

BUFFER;

    各个器件的时钟来源都是由100MHz经过Buffer后提供。一个PCIE树上最多可以有256个PCIE设备。

1、RC (ROOT COMPLEX)

    RC是PCIE树的根节点,为主模式,RC可以有一个或者多个PCIE端口(port),它可以根CPU 和memory controller相接,CPU 与 PCIe 总线之间的接口可能包含一系列的组件(处理器接口,DRAM 接口等,甚至是包含多个芯片)将这些组件合起来称这一组的组件为根组件(Root Complex);或者说分隔PCIE domain和CPU/MEMORY domain。

   个人理解:RC在功能上和Switch几乎一样,都是用于将一个PCIE接口拓展成多个PCIE接口,区别是RC集成在芯片内部,并且还会连接内存,类似PCI总线的根桥;

    RC 存在于 PCI 树状拓扑的“根部”,代表 CPU 与系统的其余部分通信;但PCIe 协议规范并没有对 RC 进行严格定义,而是给出了一个 RC 必需功能与可选功能的列表;所以从广义上说,根组件可以被理解为系统 CPU 与 PCIe 拓扑之间的接口,这个 PCIe 端口即是 RC,在配置空间中被标记为“根端口”。

——不同处理器的RC设计并不相同,只有x86才存在PCIe总线规范定义的“标准RC”,而其它很多处理器并不存在真正意义上的RC,而只是PCIe总线控制器。

——RC与HOST主桥并不相同,RC除了完成地址空间的转换之外,还需要完成物理信号的转换(举个栗子:FSB信号协议与PCIe总线的电气特性不兼容,总线事务也不同,必须进行信号协议和总线事务的转换)。

2、Switch

提供了扇出以及聚合能力:使得单个 PCIe 端口上可以连接更多的设备,它作为数据包路由器的角色,可以根据所给数据包的地址或者其他路由信息来识别这个数据包要走哪条路径;

    Switch有一个上游端口和两个或者两个以上的下游端口。上游端口是RC或者上游Switch的下游端口。

3、EP(endpoint)

EP就是终端设备,为从模式,没有转发数据的功能;

EP有三种: legacy EP,PCIE EP,RC integrated EP。

Legacy EP:就是PCI device

PCIE EP:

RC integrated EP:集成在RC内部的EP。

4、PCIE bridge

PCIE bridge就是PCI-to-PCI/PCI-X bridge。

    提供了一个通往其他总线的接口。现在使用PCI总线的场景应该已经不多,不做扩展分析。

    PCI的EP和RC分别对应从模式和主模式,普通的PCI RC主模式可以用于连接PCI-E以太网芯片或PCI-E的硬盘等外设。RC模式使用外设一般都有LINUX 驱动程序,安装好驱动基本都能正常使用。但是对于SOC芯片本身能做EP有能做RC 两者如何互相通信可能就需要对PCIE的使用和基本原理有所了解才能较好的使用。
 


 

二、PCIe 参考时钟架构

 接着上图的架构,我们来简单看下PCIE时钟的三种架构:

1. Common Clock Architecture (即常说的CC架构);

2. Separate Clock Architecture;

3. Data Clock Architecture;

开聊之前先梳理几个概念:

  •    Jitter,时钟抖动,是对于同一 Clock 而言的, 是时钟源引起的,用来描述被测时钟与理想时钟在时域的偏差(单位为 ps RMS,皮秒均方根)。
  •    Skew,时钟偏斜,是对于多个时钟线而言的,是时钟树不平衡引起的。
  •    此外还有一个概念是频率稳定性,用来描述被测时钟频率与理想时钟频率的偏差(单位 ppm,百万分之一)。
  •     Refclk Architecture是指 PCIe 系统中收发端设备给定参考时钟的方案。

参考时钟

    PCIe Serdes 在时钟驱动下收发串行数据流。Serdes 所用时钟由 PHY 内的 PLL 生成,PLL 的参考时钟由外部提供或从接收数据流中恢复出来。

    PCIe 协议指定标准的参考时钟为 HCSL 电平的 100 MHz 时钟,Gen1~Gen4 下要求收发端参考时钟精度在 ±300 ppm 以内,Gen5 要求频率稳定性 ±100 ppm。在 FPGA 应用中,为了兼顾其他 IP,采用 LVCMOS/LVDS/LVPECL 电平 125 MHz/250 MHz 的方案也较为常见。

    关于参考时钟详细参数需求,已经测试测量等相关内容,本文将不会涉及,具体请参考PCIe CEM Spec和2.0或以上版本的PCIe Base Spec中的相关章节。

1. Common Refclk Architecture

    即同源参考时钟架构,PCIe收发设备共用一个时钟源,PCIe链路的RC和EP都使用同一个参考时钟源发出的时钟,是目前是使用最为广泛的方案,也是Spec推荐使用的,三种 PCIe 参考时钟架构中,Common Clock 是最为常用的一种时钟架构。

    对于适用同一 Common Clock 作为参考时钟的 PCIe 设备,所有设备的参考时钟分布必须匹配到15英寸以内在系统板上。在接收端数据和时钟之间的传输延迟增量(时钟偏斜(Clock Skew))必须要小于等于12ns。通常允许PCIE卡上的时钟线长不大于4inch。特别注意这点,涉及到我们实际PCB走线。这无疑对大型电路板上或跨板的 PCIe 设备间布局布线形成巨大挑战。

    采用 Common Clock 支持时钟扩频(SSC, Spread Spectrum Clock) 且对参考时钟的要求不如 Separate Clock 方案严苛。

    即使系统使用了带有扩频的参考时钟源,时钟抖动也只有-300~+2800ppm,对于频率稳定性的要求是 ±300 ppm。这对于物理层中的RxCDR和TxPLL就比较友好了,可以降低RxCDR和TxPLL的复杂程度,达到节约成本的目的。

     其次,当PCIe链路处于L0s或者L1状态时,即使链路上没有数据流,RxCDR依然可以设计出保持锁定的状态,这样做的好处是,链路从L0s或L1状态恢复到L0状态的时间将会更短。

图片

缺点:

对于适用同一 Common Clock 作为参考时钟的 PCIe 设备,所有设备间的时钟偏斜(Clock Skew)必须保持在一定范围内(有部分文章介绍是12ns,我目前还没找到数据来源),大型电路板设计或者跨板的PCIe设备布局布线存在很大挑战。

优点:

·收发侧的时钟抖动jitter都是相同的,因此便于跟踪和计算

·在此架构中,支持SSC功能,很容易达到600 ppm的指标

·即使收发端进入L0S和L1低功耗状态,refclk仍然是可用的,即使在缺少bit流提供数据边沿(in the absence of a bit stream to supply the edges in the data)的情况下,接收器的CDR仍然能够保持恢复时钟的平衡,有效阻止了本地PLL的偏移,相对于其他时钟方案,恢复到L0状态所需时间最少。

    总结:Common Refclk Architecture 稳定性好,支持SSC,是目前应用最广泛的参考时钟方案,也是最推荐的设计方案。

     

2.Separate Clock Architecture

     即独立参考时钟架构,收发端采用独立的参考时钟。 PCIe Spec强烈不推荐使用这种参考时钟架构,尽管这是其提出的三种参考时钟架构之一。PCIe链路的RC和EP使用独立的参考时钟。
两个独立时钟需要满足PCIe协议中规定的精度要求。

    PCIe Spec强调,如果使用这种架构,扩频时钟必须被禁止使用(2.5GT/s & 5GT/s),因为这中情况下使用扩频时钟的话,CDR的带宽需甚至需要大于5600ppm,这对于CDR来说是非常大的挑战。

     对于收发端采用独立参考时钟的方案,其收发端独立使用不同的参考时钟源,无需单独传递时钟,对布局布线的要求更宽松。SRNS 允许 ±300 ppm (600ppm),而 SRIS 允许 ±2800 ppm (5600 ppm,其中SSC允许 5000ppm,TX/RX允许 600 ppm)。

   根据有无 SSC 可进一步分为 SRNS ( Separate Refclk with No SSC) 及 SRIS (Separate Refclk with Independent SSC)。

    SRNS:不使用SSC功能,时钟抖动更小,不需要额外加大弹性缓存(Elastic Buffer)的深度

    SRIS: 使用SSC功能,能够有效减少电磁干扰(EMI),但是时钟抖动增加,需要额外加大弹性缓存(Elastic Buffer)的深度。

    相对于SRNS,SRIS:开启了SSC,接收侧观察到的时钟抖动会加大,因此发生SKP的频率会增加,因此在物理层需要加大弹性缓存(Elastic Buffer)的深度,用于消除开启SSC的负面影响。但是弹性缓存(Elastic Buffer)深度加大后,数据传输路径延时也增加了。

     若 PCIe 设备开启了 SRIS,其发生 SKP 的频率应该加大,同时加大弹性缓存(Elastic Buffer)的深度。弹性缓存加大使得延时更大,在一定程度上降低了 performance。对于一条 PCIe 链路,如何知道要不要采用 SRIS 呢?遗憾的是,目前尚没有机制实现收发端之间的 SRIS 协商。

需要注意的是,PCIe Base Spec V3.x中,提到对于8GT/s的PCIe链路而言,在Separate Refclk Architecture下实现扩频时钟也是可行的(即Separate Refclk With Independent SSC (SRIS) Architecture),但是需要更复杂的CDR设计,具体请参考Spec相关章节。

图片

优点:参考时钟独立,参考时钟不需要穿越背板和连接器,从而使PCB设计变得更为简单,使得架构更加的灵活。

缺点:接收侧观察到的时钟抖动(jitter)是两端参考时钟jitter的组合,并且不利于计算,使得参考时钟的设计更加严格。在此模式下,支持SSC模式对设计提出了更高的要求,例如物理层CDR设计更加复杂,物理层需要更大的缓存。

3.Data Clock Architecture

    即数据时钟参考时钟架构,仅发送端需要 Refclk,接收端无需外部 RefClk,接收端物理层从数据流中恢复出时钟提供给 CDR(Clock Data Recovery,时钟数据恢复)作为参考时钟。

 这种参考时钟架构最为简洁,也是三种方案中最易实现的方案。Rx端器件的CDR并不需要外部参考时钟,而是直接从数据流中恢复出时钟

    Data Clocked Refclk Architecture在PCIe2.0中首次,PCIe3.0中保留了这项技术,该方案仅适用于 Gen2 及 Gen3,单 lane 单向最高速率 8GT/s。但是在PCIe4.0又丢弃了。因此不推荐使用,慎用,有些不支持。  

    不过这种结构的RxCDR几乎很少在FPGA的SerDes中使用,因为在没有外部参考时钟的协助下,CDR实现锁定都是一个很大的挑战,还要保证在5600ppm的抖动范围内不失锁(对于带有扩频时钟的PCIe链路来说)。

    注:绝大部分的FPGA SerDes都是多协议SerDes,除了支持PCIe外,往往还需要支持其他主流的串行协议,比如SATA、USB、DisplayPort、HDMI、Ethernet (Q)SGMII、CoaXpress、CPRI、FPD-Link II/III、Serial RapidIO、SLVS-EC等等。这种参考时钟架构对于PCIe来说行得通,对于其他的某些串行协议来说可能是无法实现的。

图片


 

优点:实现简单,Data Clock 时钟方案是三种方案中最易实现的方案,其无需外部参考时钟

缺点:PCIe4.0 没有保留此方案,不推荐使用。

    注意,虽说PCIE时钟有三种架构,但是最常用的还是CC架构,无特殊情况,不要使用其他时钟架构,如果真的要使用其他两种架构,也需要严谨评估先。

从下表可知,展频跟非CC架构慎用。

图片

         

    鉴于PCIE时钟要求多且复杂的,故此文章给出主要的参数要求,其它详细的要求以及测试方法,后续有机会再编写分享。

信号要求:

图片

PCIE_CLK_P/N是差分信号,通常差分阻抗为100Ω,少部分要求85Ω。

电平:HCSL or LP-HCSL。

频率:100±0.03MHz。

频率稳定度:±300ppm,越小越好。

占空比:50%±10%。

抖动:如下CC模式的要求:

图片

注意:上图给出的是CC时钟架构下的抖动要求;仿真PCIE4.0时候,抖动是按照0.7ps RMS来的;仿真PCIE5.0时候,抖动是按照0.25ps RMS来的;因为标准考虑了实际系统中的额外噪声,故会比较严格。

         

提到PCIE时钟,相信大部分人会联想到CLKREQ#:

很多时候有疑问,CLKREQ#是否要接,首先要知道的是,这个信号是可选的,可要可不要。那么什么时候需要呢?如果要支持L1-PM子状态(ASPM(Active State Power Management)中的状态)和/支持时钟电源管理,那么这个信号就是必要的(即使你不是使用的CC模式)。

注意:如果硬件电路这个CLKREQ#没接的话,可让BIOS把PCIE中的ASPM的L1状态默认关闭,不然容易出现异常现象。

扩频时钟

什么是SSC?展频时钟全称Spread Spectrum Clocking 。

    顾名思义是一种对时钟频率进行调制以削平时钟产生的峰值能量的技术,可降低由时钟基频及其谐波信号产生的EMI尖峰,从而优化系统EMC结果(含传导与辐射骚扰);

    由于信号的能量过于集中在其载波频率位置,导致信号的能量在某一频点位置处的产生过大的辐射发射。为了有效地降低EMI辐射,芯片厂家在设计芯片时也给容易产生EMI的信号增加了SSC扩频时钟的功能,频率变化的时钟,其频谱能量被分散在一定频谱范围上。当前PCIE、SATA、SAS、USB3.0等高速芯片都支持SSC的功能。采用SSC的功能可以有效的降低信号所产生的EMI。

    关于SSC,SSC是一种缓慢调制时钟频率的技术,以便降低中心频率处的EMI发射,有了SSC,PCIe时钟的辐射能量就不会产生2.5GHz或5GHz的噪声尖峰信号,因为辐射被分散到中心频率周围的小频率范围上。SSC在减少电磁干扰峰化方面起着非常重要的作用,因此可以简化符合系统电磁辐射限制的工作。 

    展频的基本原理是通过将窄带信号转换为宽带信号,将能量分散在一定的宽频范围内,从而降低EMI的影响,如下图所示。

      扩频时钟可以抑制电磁干扰(EMI)。随着PCIe的速率不断上升,对SSC的需求由不明显逐渐变得迫切,但伴随PCIe速率的增长对时钟精度的要求也在增长。通过背板或线缆长距离传输一个高精度时钟是很困难的。为了降低 PCIe 时钟及数据线的电磁辐射、增强高速数据传输可靠性,PCIe 时钟可以采用 SSC 对参考进行时钟扩频。

     如果是采用独立的参考时钟,如果只有一端采用展频,或两个时钟同时展频,两个时钟的精度就很难控制。所以在PCIe Gen1,Gen2上,都限制了只有在共同时钟模式下才能使用SSC。这种情况实际限制了SSC的使用。

    于是Separate Refclk Independent SSC(SRIS):独立参考时钟的PCIe展频技术在Gen3中被提出。但一般认为这个功能在Gen3不成熟,实际不可用,正式实施要等到Gen4或Gen5。Gen1~Gen5 都支持 SSC,但只有 Gen3 及以上支持 SRIS。

     PCIe 扩频模式为向下扩频,扩频范围为-0.5%~0%,确保最大频率在标称频率之下。最大调制幅度为 -0.5%!调制频率为 30 KHz ~ 33 KHz,确保 PLL 能够跟得上,同时减小音频噪声的引入。调制波形采用三角波,该波形易于实现,且调制后的频谱接近均匀分布。注意:30 KHz ~ 33 KHz 是指频率随时间周期变化的频率,不是展宽的带宽,带宽为时钟频率的 0.5% 。

     扩频时钟对于PCIe来说是可选的,并非是强制的。如果选择支持扩频时钟的话,需满足以下要求:
※ 调制范围为+0%到-0.5%,即向下扩频(Down Spreading),如下图所示
※ 调制频率必须在30KHz到33KHz,一般为三角波
※ 参考时钟源的抖动(Jitter)需在300ppm以内


带有SSC的参考时钟频率变化曲线如下图所示:

注:为什么选用的是向下扩频,而不是中心扩频或者向上扩频?主要是考虑到,当100MHz已经是系统最靠基准频率的话, 向上扩频或者中心扩频会导致系统基准频率超过最高值,进而可能引发系统工作异常。
注:三角波的能力较为集中在低次谐波中,相比于正弦波,方波或者锯齿波,更适合用于SSC中。

图片

PCIe CC架构

 更多扩频相关介绍,请查看参考资料:http://blog.chinaaet.com/justlxy/p/5100064134。 

三、PCIe时钟实现方法和参考设计

1.使用有容微GM5528或GM5508时钟清抖器/时钟产生器芯片输出HCSL 100MHz时钟

图片

图片

图片

GM5528/GM5508输出HCSL 100MHz时钟的相噪/抖动测试

图片

GM5528/GM5508输出HCSL 100MHz 抖动数据 vs PCIe时钟标准要求

可见:GM5528/GM5508输出的HCSL 100MHz时钟符合PCIe Gen1/2/3/4/5/6 (CC)标准

(*说明:GM5528支持多达14路输出,GM5508支持多达8路输出)

2.使用有容微GM5351A时钟产生器芯片输出HCSL 100MHz时钟

    GM5351A时钟产生器芯片本身是3路2.5KHz-250MHz之间任意频率的单端输出,但是可以使用双通道(一般使用CLKout0和CLKout1,因为这两路输出PIN脚相邻便于设计)做反相配置实现HCSL的差分输出,且达到PCIe Gen2/Gen3标准:

图片

图片

GM5351A输出HCSL 100MHz 抖动vs PCIe时钟标准要求

3.使用有容微GM50301/GM50304时钟缓冲器芯片输出HCSL 100MHz时钟

图片

图片

GM50301/GM50304输出HCSL 100MHz抖动测试



 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/675436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio中打开文件管理器

文章目录 一、前言二、操作步骤 一、前言 在Android Studio中有时候需要查看手机的文件目录或者复制文件,但是有时候文件管理器找不到在哪,这里记录该操作流程 二、操作步骤 第一步: 第二步: 第三步:

云游戏发行需要哪些条件

云游戏是一种创新性的游戏服务模式,将游戏运算和渲染等处理任务移至云端服务器,通过互联网实时传输画面和操作指令,使玩家能够在低端终端设备上也能流畅玩游戏。要做云游戏发行,需要考虑一系列条件,包括技术、基础设施…

Qt未来市场洞察

跨平台开发:Qt作为一种跨平台的开发框架,具有良好的适应性和灵活性,未来将继续受到广泛应用。随着多设备和多平台应用的增加,Qt的前景在跨平台开发领域将更加广阔。 物联网应用:由于Qt对嵌入式系统和物联网应用的良好支…

通过Demo学WPF—数据绑定(二)

准备 今天学习的Demo是Data Binding中的Linq: 创建一个空白解决方案,然后添加现有项目,选择Linq,解决方案如下所示: 查看这个Demo的效果: 开始学习这个Demo xaml部分 查看MainWindow.xaml: …

【Java八股面试系列】JVM-常见参数设置

目录 堆内存相关 显式指定堆内存–Xms和-Xmx 显式新生代内存(Young Generation) 显式指定永久代/元空间的大小 垃圾收集相关 垃圾回收器 GC 日志记录 处理 OOM JDK监控和故障处理工具总结 堆内存相关 Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线…

【嵌入式-传感器】从旋转编码器到学会看懂方波

背景: 在学习STM32F103的中断时,用到旋转编码器,需要通过旋转编码器输出的DO信号,获取旋转的刻度和方向。 前提知识: 使用中断需要RCC使能GPIO外设口及AFIO口、初始化GPIO、中断引脚AFIO选择配置、EXTI外部中断配置…

第62讲商品搜索动态实现以及性能优化

商品搜索后端动态获取数据 后端动态获取数据&#xff1a; /*** 商品搜索* param q* return*/GetMapping("/search")public R search(String q){List<Product> productList productService.list(new QueryWrapper<Product>().like("name", q)…

免费生成ios证书的方法(无需mac电脑)

使用hbuilderx的uniapp框架开发移动端程序很方便&#xff0c;可以很方便地开发出移动端的小程序和app。但是打包ios版本的app的时候却很麻烦&#xff0c;官方提供的教程需要使用mac电脑来生成证书&#xff0c;但是mac电脑却不便宜&#xff0c;一般的型号都差不多上万。 因此&a…

Linux部署Nacos注册中心实现远程访问UI管理界面

Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a;持久化节点注册&#xff0c;非持久化节点注册和配置管理。 本例通过结合Cpolar内网穿透实现远程访问Nacos 提供的UI (控制台)界面,帮助管理所有的服务和应用的配置 Cpolar内网穿…

idea: 无法创建Java Class文件(SpringBoot)已解决

第一&#xff1a;点击file-->project Sructure... 第二步&#xff1a;点击Moudules 选择自己需要创建java的文件夹&#xff08;我这里选择的是main&#xff09;右键点击Sources&#xff0c;然后点击OK即可 然后就可以创建java类了

第十四篇【传奇开心果系列】Python的OpenCV库技术点案例示例:图像特征提取与描述

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例系列短博文目录前言一、OpenCV图像特征提取与描述介绍二、OpenCV图像特征提取与描述初步示例代码三、扩展思路介绍四、特征点筛选和匹配优化示例代码五、多尺度特征提取示例代码六、非局部特征描述子示例代码…

Quartus工程的qsf配置约束文件介绍

一、qsf文件概述 qsf&#xff1a;Quartus Setting File&#xff0c;是Quartus工程的配置文件&#xff1b; 包含一个Quartus工程的所有约束&#xff0c;包括工程的软件版本信息、FPGA器件信息、引脚约分配、引脚电平分配&#xff0c;编译约束和用于Classic TimingAnalyzer的时…

3分钟部署完成Docker Registry及可视化管理工具Docker-UI

安装docker-registry 由于镜像文件会非常占用空间&#xff0c;因此需要选择一个磁盘充裕的位置来存放镜像数据。 这里设置为&#xff1a;-v /data/registry:/var/lib/registry&#xff0c;其中/data/registry是宿主机存放数据的位置。 docker run -d -p 5000:5000 --restart…

[职场] 智能材料与结构专业的就业前景 #经验分享#学习方法

智能材料与结构专业的就业前景 智能材料与结构专业是面向国家智能制造强国战略&#xff0c;面向地方经济新旧动能转换需求&#xff0c;学习智能材料与结构的基础理论及基本知识&#xff0c;接受智能材料制备、组织分析、性能测试、智能材料系统集成技能的基本训练&#xff0c;…

【QT】day6

#include "home.h" #include "ui_home.h"Home::Home(QWidget *parent): QWidget(parent), ui(new Ui::Home) {ui->setupUi(this);// 从配置文件读取用户名QSettings settings("kim", "ad");username settings.value("usernam…

【03】C++ 类和对象 2:默认成员函数

文章目录 &#x1f308; 前言&#x1f308; Ⅰ 构造函数1. 构造函数概念2. 构造函数特性3. 初始化列表 &#x1f308; Ⅱ 析构函数1. 析构函数概念2. 析构函数特性 &#x1f308; Ⅲ 拷贝构造1. 拷贝构造概念2. 拷贝构造特性3. 深度拷贝构造 &#x1f308; Ⅳ 赋值重载1. 运算符…

ruoyi若依框架SpringSecurity实现分析

系列文章 ruoyi若依框架学习笔记-01 ruoyi若依框架分页实现分析 ruoyi若依框架SpringSecurity实现分析 文章目录 系列文章前言具体分析一、项目中的SpringSecurity版本二、登录认证流程分析三、权限鉴定四、退出登录五、SpringSecurity配置类 总结 前言 在ruoyi-vue若依框…

单片机的省电模式及策略

目录 一、单片机省电的核心策略 二、单片机IO口的几种模式 三、单片机的掉电运行模式 &#xff08;1&#xff09; 浅谈cpu运行为什么会需要时钟&#xff1f; &#xff08;2&#xff09;STC15系列单片机内部可以配置时钟 &#xff08;3&#xff09;分频策略&#xff0c;降低…

数据结构与算法之美学习笔记:51 | 并行算法:如何利用并行处理提高算法的执行效率?

目录 前言并行排序并行查找并行字符串匹配并行搜索总结引申 前言 本节课程思维导图&#xff1a; 时间复杂度是衡量算法执行效率的一种标准。但是&#xff0c;时间复杂度并不能跟性能划等号。在真实的软件开发中&#xff0c;即便在不降低时间复杂度的情况下&#xff0c;也可以…

Linux应用开发---网络通信

Linux应用开发—网络通信 1 网络通信概述 Linux下的网络编程&#xff0c;我们一般称为 socket 编程&#xff0c;socket 是内核向应用层提供的一套网络编程接口&#xff0c;我们可以基于socket接口开发自己的网络相关应用程序。 1.1 socket 简介 套接字&#xff08;socket&…