多线程时如何使用CPU缓存?

一口Linux 2024-07-14 17:04

点击左上方蓝色“一口Linux”,选择“设为星标

第一时间看干货文章 

【干货】嵌入式驱动工程师学习路线
【干货】Linux嵌入式知识点-思维导图-免费获取
【就业】一个可以写到简历的基于Linux物联网综合项目
【就业】找工作简历模版



 

一、前言

计算机的基础知识聊的比较少,但想要更好的理解多线程以及为后续多线程的介绍做铺垫,所以有必要单独开一篇来聊一下 CPU cache。

二、CPU

前面有一篇文章关于 CPU是如何进行计算 感兴趣的同学,可以先移步了解一下,不了解也没有关系,不影响这这篇文章的理解。

2.1 CPU 发展史以及为什么需要 cpu cache

时间回到1978年,第一颗在个人PC上使用的微处理器——8088,它的主频才4.77MHz,导致当时CPU的存取时间(800ns左右)远大于内存的存取时间(200ns左右),所以那时候根本不需要Cache。

到80386开始,CPU的频率一下提高到40MHz,但是内存的上升速度却没有象 CPU一样快,导致没有相匹配的内存可以使用,使得CPU要耗费几个,十几个时钟周期来等待内存的读写,这显然不能让人接受,于是有两种解决方案同时被提出来:一种是在CPU内加入等待周期,降低CPU的处理能力;而另一种就是寻找一种速度快,面积小,延迟短的存储体来做CPU与内存的中转站,也就是我们现在所说的Cache(缓存)。第一种方法显然是自欺欺人,牺牲CPU的性能来换取整体的平衡,所以第二种方法立刻被采用。

不过在386时期,由于成本的问题,并没有内部L1 Cache,只有外部的Cache。而486时代,CPU频率再次增加,外部Cache的速度也要相应提高,使得成本太高,于是内嵌了8K的L1 Cache,同时也可以使用外部的L2 Cache。

直到Pentium时代,由于Pentium采用了双路执行的超标量结构,有2条并行整数流水线,需要对数据和指令进行双重的访问,为了使得这些访问互不干涉,于是出现了8K数据Cache和8K指令Cache,并且可以同时读写,不过L2还是外部的,接着出现的Pentium Pro为了提高性能,把L2内嵌了,到此为止,就确定了现代缓存的基本模式了,并一直沿用至今。

这里还有一些关于 cacha 的访问数据,从数据中可以看出 L1 cache 相比于访问主存,性能提高 200 倍

2.2 CPU Cache 是什么

通常cpu内有3级缓存,即L1、L2、L3缓存。 其中L1缓存分为数据缓存和指令缓存,cpu先从L1缓存中获取指令和数据,如果L1缓存中不存在,那就从L2缓存中获取。每个cpu核心都拥有属于自己的L1缓存和L2缓存。如果数据不在L2缓存中,那就从L3缓存中获取。而L3缓存就是所有cpu核心共用的。如果数据也不在L3缓存中,那就从内存中获取了。当然,如果内存中也没有那就只能从硬盘中获取了。

2.2.1 CPU Cache 原理

CPU Cache利用时间局部性和空间局部性原理来优化数据访问性能。这两个原理在Cache工作中扮演关键角色,以下是对CPU Cache工作原理与时间局部性、空间局部性的详细解释:

  1. 时间局部性

  • 概念:时间局部性意味着一旦数据被访问,它在不久的将来会再次被访问。

  • Cache应用:当处理器访问一个数据后,该数据会被保留在Cache中,因为存在时间局部性,表示该数据在短期内可能再次被访问。

  • 优势:通过利用时间局部性,Cache能够减少对主存的访问次数,提高数据访问速度,因为处理器在未来访问相同数据时可以直接从Cache中获取。

  • 空间局部性

    • 概念:空间局部性表明一旦访问了一个数据,其临近的数据也有可能被访问。

    • Cache应用:由于空间局部性,Cache可能会预先加载邻近数据块,以提高整体的Cache命中率。

    • 优势:通过存储相邻数据块,Cache利用空间局部性可以更有效地提供处理器可能需要的数据,减少Cache未命中的情况。

  • 工作原理

    • 缓存命中:当处理器请求数据时,首先在Cache中查找。如果数据存在于Cache中,发生缓存命中,处理器直接从Cache读取数据。

    • 缓存未命中:如果请求的数据未在Cache中找到,发生缓存未命中,需要从主存加载数据到Cache中。

    • 时间局部性应用:当数据被访问并存储在Cache中,根据时间局部性,该数据在不久的将来可能再次被访问。

    • 空间局部性应用:根据空间局部性,Cache可能会预取与即将被访问的数据相关的邻近数据块,以提前加载可能被访问的数据。

  • 优化策略

    • 数据块大小:选择适当的数据块大小以最大化空间局部性的利用。

    • 替换策略:设计针对时间局部性的替换策略,保留最近使用的数据。

    • 预取策略:根据空间局部性预先加载可能被访问的数据,以提高Cache命中率。

    综合利用时间局部性和空间局部性原理,CPU Cache能够极大地优化数据访问性能,减少主存访问延迟,提高处理器的运行效率,是计算机系统中至关重要的组件之一。

    2.2.2 CPU Cache 实现

    2.2.2.1 CPU Cache 是通过 SRAM 实现的

    在现代计算机中,我们最熟悉的半导体存储体有三种:

    1. 用于存储BIOS信息的EEPROM(Electrically Erasable Programmable Read Only Memory,电可擦写可编程只读存储器)

    2. 用于存储临时工作数据的DRAM(Dynamic Random Access Memory,动态随机访问存储器)

    3. SRAM(Static Random Access Memory,静态随机访问存储器)。

    EEPROM由于成本过高,速度太慢,肯定不能做为Cache材料的选择,而DRAM和SRAM两种,为什么是SRAM用来做Cache,而不是DRAM呢?当然最大的原因是速度。

    我们知道DRAM目前最常见的应用就是内存了,它是利用每个单元的寄生电容来保存信号的,正因如此,它的信号强度就很弱,容易丢失,所以DRAM需要时时刷新来确定其信号(根据DRAM制造商的资料,DRAM至少64ms要刷新一次,并且由于每次读取操作都会破坏DRAM中的电荷,所以每次读取操作之后也要刷新一次,这就表示,DRAM至少有1%的时间是用来刷新的)。这样,DRAM的存储周期就增大了,当然潜伏期也变大了。我们从Cache的起源可以看出,正是因为内存的读取时间过高而引入Cache的,所以DRAM不符合做Cache的标准。

    SRAM不是通过电容充放电来存储数据,而是利用设置晶体管的状态来决定逻辑状态,让其保存数据,并且这种逻辑状态和CPU本身的逻辑状态相象,换句话说,SRAM可以以接近CPU频率的速度来运行(在今年秋季的IDF上,Intel公布的65nm工艺的SRAM,可以���行在3.4GHz的频率上),再加上读取操作对SRAM是不具破坏性的,不存在刷新问题,大大的缩短了潜伏期。所以这种低延迟,高速度的SRAM才是Cache材料的首选。

    2.2.2.2 为什么不用寄存器实现

    虽然寄存器和缓存都用于存储数据以提高处理器的性能,但它们有不同的设计目的和工作方式,导致无法直接将寄存器用作缓存。这里解释为什么CPU不使用寄存器来替代缓存:

    1. 速度和容量

    • 速度:寄存器通常是CPU内部最快的存储器,访问速度非常快,但寄存器的容量非常有限。缓存虽然比主存慢,但容量更大,能够存储更多数据并且与处理器核心之间的传输速度也更接近。

    • 容量:寄存器的数量非常有限,一般只有几十个甚至更少,而缓存可以容纳更多数据,提供更大的数据集合供处理器访问,利用了空间局部性和时间局部性的原理。

  • 成本和复杂性

    • 成本:寄存器的成本非常高昂,因为它们需要在CPU内部直接连接到执行单元。在CPU中集成大量寄存器会显著增加芯片成本,而缓存虽然也会增加成本,但比寄存器便宜。

    • 复杂性:设计一个大规模的寄存器集合管理和调度是非常复杂的,而缓存的管理和替换策略相对容易实现。

  • 共享和处理器设计

    • 共享性:寄存器是每个处理器核心私有的,而缓存是共享的,多个核心可以共享同一级别的缓存。这种共享能够更好地支持多核处理器的设计。

    • 处理器设计:处理器的设计通常会包含多级缓存结构,每个级别的缓存都有特定的目的和功能,以提供更好的性能均衡。寄存器是用于存储指令、数据和中间结果,而缓存是用于加速访问主存的部分数据。

    综上所述,虽然寄存器和缓存都用于存储数据以提高处理器性能,但由于速度、容量、成本、复杂性和处理器设计等方面的考虑,CPU不直接使用寄存器作为缓存的替代品。不同的存储器层次结构在处理器设计中起着各自不同的重要作用。

    对CPU cache 整体了解之后,我们就可以进一步了解高速缓存的内部细节了

    2.2.2 CPU Cache 内部细节

    CPU Cache 在读取内存数据时,每次不会只读一个字或一个字节,而是一块块地读取,这每一小块数据也叫 CPU 缓存行(CPU Cache Line)。也就是说CPU 缓存和内存之间交换数据的最小单位通常是缓存行(Cache Line)。缓存行是缓存中数据的最小存储单位,在CPU和主内存之间传输数据时,以缓存行为单位进行数据传输和管理。

    这也是对局部性原理的运用,当一个指令或数据被拜访过之后,与它相邻地址的数据有很大概率也会被拜访,将更多或许被拜访的数据存入缓存,可以进步缓存命中率。

    在现代计算机系统中,通常使用的缓存(Cache)类型主要分为三种:直接映射缓存(Direct-Mapped Cache)、多路组相连缓存(Set-Associative Cache)和全相连缓存(Fully Associative Cache)。不同的缓存类型有其特点和适用场景。至于具体哪种类型的缓存用于计算机的L1、L2或L3缓存,这取决于具体的处理器架构和制造商的实现。

    以下是这三种缓存类型的简要介绍:

    1. 直接映射缓存(Direct-Mapped Cache):在这种缓存中,每个缓存行只能存储一个特定的主存地址或地址范围的数据。每个缓存行都有一个唯一的标签与之关联,用于确定数据是否存在于缓存中。这种映射方式比较简单和高效,适用于高速缓存系统。它有一个主要的缺点是缓存行的使用不够灵活,如果多个不同的地址都需要同一个缓存行大小的数据,可能会造成冲突和性能下降。

    2. 多路组相连缓存(Set-Associative Cache):在这种缓存中,一个缓存行可以存储多个可能的地址范围的数据。这种类型的缓存允许多个主存地址共享相同的缓存行,并可以通过一个或多个标签来标识每个缓存行中的不同数据。这种设计提供了更大的灵活性,但查找操作可能需要更多的时间,因为处理器需要在多组选项中做出选择。这在缓存使用较多时会减少命中时间偏差的变化,有利于提高平均命中率。在计算机中经常使用的是所谓的伪相联策略,结合直接映射和全相连策略的特点。

    3. 全相连缓存(Fully Associative Cache):在这种类型的缓存中,没有任何限制条件用于决定哪些地址范围的数据可以存储在同一个缓存行中。每个缓存行都可以存储任何地址的数据,这使得查找操作相对复杂且耗时较长。然而,这种灵活性使得全相连缓存能够在某些情况下实现最佳的性能优化。这种类型在现代计算机系统中使用较少。在实际的处理器设计中,不同层次的缓存可能采用不同的策略以满足性能和能效的平衡需求。比如现代计算机可能在多级缓存中采用不同的映射策略组合,以适应不同的应用场景和需求。因此,具体的实现取决于处理器的架构和制造商的选择。建议您查阅具体的处理器文档或参考相关技术文档来获取最准确的信息。

    接下来一一解释一下:

    2.2.2.1 直接映射缓存

    直接映射缓存会将一个内存地址固定映射到某一行的cache line。

    其思想是将一个内存地址划分为三块,分别是Tag, Index,Offset(这里的内存地址指的是虚拟内存)。将cacheline理解为一个数组,那么通过Index则是数组的下标,通过Index就可以获取对应的cache-line。再获取cache-line的数据后,获取其中的Tag值,将其与地址中的Tag值进行对比,如果相同,则代表该内存地址位于该cache line中,即cache命中了。最后根据Offset的值去data数组中获取对应的数据。整个流程大概如下图所示:

    下面是一个例子,假设cache中有8个cache line,

    对于直接映射缓存而言,其内存和缓存的映射关系如下所示:

    从图中我们可以看出,0x00,0x40,0x80这三个地址,其地址中的index成分的值是相同的,因此将会被加载进同一个cache line。

    试想一下如果我们依次访问了0x00,0x40,0x00会发生什么?

    当我们访问0x00时,cache miss,于是从内存中加载到第0行cache line中。当访问0x40时,第0行cache line中的tag与地址中的tag成分不一致,因此又需要再次从内存中加载数据到第0行cache line中。最后再次访问0x00时,由于cache line中存放的是0x40地址的数据,因此cache再次miss。可以看出在这个过程中,cache并没有起什么作用,访问了相同的内存地址时,cache line并没有对应的内容,而都是从内存中进行加载。

    这种现象叫做cache颠簸(cache thrashing)。针对这个问题,引入多路组相连缓存。下面一节将讲解多路组相连缓存的工作原理。

    2.2.2.2 多路组相连缓存

    多路组相连缓存的原理相比于直接映射缓存复杂一些,这里将以两路组相连这种场景来进行讲解。

    所谓多路就是指原来根据虚拟的地址中的index可以唯一确定一个cache line,而现在根据index可以找到多行cache line。而两路的意思就是指通过index可以找到2个cache line。在找到这个两个cache line后,遍历这两个cache line,比较其中的tag值,如果相等则代表命中了。

    下面还是以8个cache line的两路缓存为例,假设现在有一个虚拟地址是0000001100101100,其tag值为0x19,其index为1,offset为4。那么根据index为1可以找到两个cache line,由于第一个cache line的tag为0x10,因此没有命中,而第二个cache line的tag为0x19,值相等,于是cache命中。

    对于多路组相连缓存而言,其内存和缓存的映射关系如下所示:

    由于多路组相连的缓存需要进行多次tag的比较,对于比直接映射缓存,其硬件成本更高,因为为了提高效率,可能会需要进行并行比较,这就需要更复杂的硬件设计。

    另外,如何cache没有命中,那么该如何处理呢?

    以两路为例,通过index可以找到两个cache line,如果此时这两个cache line都是处于空闲状态,那么cache miss时可以选择其中一个cache line加载数据。如果两个cache line有一个处于空闲状态,可以选择空闲状态的cache line 加载数据。如果两个cache line都是有效的,那么则需要一定的淘汰算法,例如PLRU/NRU/fifo/round-robin等等。

    这个时候如果我们依次访问了0x00,0x40,0x00会发生什么?

    当我们访问0x00时,cache miss,于是从内存中加载到第0路的第0行cache line中。当访问0x40时,第0路第0行cache line中的tag与地址中的tag成分不一致,于是从内存中加载数据到第1路第0行cache line中。最后再次访问0x00时,此时会访问到第0路第0行的cache line中,因此cache就生效了。由此可以看出,由于多路组相连的缓存可以改善cache颠簸的问题。

    2.2.2.3 全相连缓存

    从多路组相连,我们了解到其可以降低cache颠簸的问题,并且路数量越多,降低cache颠簸的效果就越好。那么是不是可以这样设想,如果路数无限大,大到所有的cache line都在一个组内,是不是效果就最好?基于这样的思想,全相连缓存相应而生。

    下面还是以8个cache line的全相连缓存为例,假设现在有一个虚拟地址是0000001100101100,其tag值为0x19,offset为4。依次遍历,直到遍历到第4行cache line时,tag匹配上。

    全连接缓存中所有的cache line都位于一个组(set)内,因此地址中将不会划出一部分作为index。在判断cache line是否命中时,需要遍历所有的cache line,将其与虚拟地址中的tag成分进行对比,如果相等,则意味着匹配上了。因此对于全连接缓存而言,任意地址的数据可以缓存在任意的cache line中,这可以避免缓存的颠簸,但是与此同时,硬件上的成本也是最高。

    2.2.3 Cpu Cache Line 空闲

    无论是三种缓存类型的哪种,Cache Line 要想被使用则必须处于空闲状态。

    当说一个cache line(缓存行)处于空闲状态时,通常是指该缓存行当前没有有效的数据或有效的标记。在多级缓存中,每个缓存行通常包含了用于存储数据的存储单元、标记(tag)用于标识缓存行中数据的来源(比如主存地址),以及其他控制信息。

    以下是关于缓存行空闲状态和标识码的解释:

    1. 空闲状态

    • 当一个cache line 被说成“空闲时”,意味着该缓存行当前不包含有效的数据。这可能是因为该缓存行还未被加载、已经被替换出去、还没有被写入数据,或者数据已被清除等情况。

  • 标识码(Tag):

    • 在直接映射缓存或其他高速缓存设计中,每个缓存行都会有一个标识码(tag),用于标识该缓存行中数据在主存中的地址范围,并区分不同的缓存行。

    • 当某个缓存行处于空闲状态时,其相应的标识码可能不存在或被标记为无效,因为没有合法的数据与之对应。

    在高速缓存中,空闲状态的缓存行是指该缓存行当前没有有效的数据,可能会在后续的访问中被加载、写入或更新。标识码通常用于查找特定数据的方法,当缓存行处于空闲状态时,标识码可能会被标记为无效或未被使用,以便在未来的访问中正确地识别和处理迁移数据。

    2.2.3 Cpu Cache Line 大小

    CPU的缓存线(cache line)大小是在设计阶段确定的固定值,通常由CPU架构的设计者根据性能需求和成本考虑来确定。不同的处理器架构可能会采用不同大小的缓存线,常见的缓存线大小通常是64字节、128字节或更大。以下是一些常见的缓存线大小选项:

    1. 64字节

    • 许多现代处理器(如英特尔和AMD的一些架构)使用64字节的缓存线大小。这意味着每次从主存中加载数据时,处理器会将整个64字节的缓存行加载到缓存中,即使只需要其中的一部分数据。

  • 128字节

    • 有些处理器采用128字节的缓存线大小,这种设计能够更大程度上利用空间局部性的特点,提供更多数据以供处理器在未来访问。

  • 其他大小

    • 除了64字节和128字节,还有一些处理器架构可能选择其他大小的缓存线,具体取决于设计者的需求和考虑。

    缓存线的大小主要受到以下因素的影响:

    • 空间局部性:较大的缓存行可以更好地利用空间局部性,一次加载更多数据,减少对主存的频繁访问。

    • 性能需求:较大的缓存行可能提供更好的性能,但也会增加缓存的开销和复杂性。

    • 成本:较大的缓存行会增加对缓存存储器和总线带宽的需求,可能导致更高的硬件成本。

    因此,选择缓存线的大小是一个权衡取舍的过程,需要考虑多个因素以找到最适合特定处理器架构和应用场景的大小。

    2.2.3.1 如何查看服务器中 Cpu Cache Line 大小

    要确定服务器的缓存行大小,可以采取以下几种方法:

    1. 查阅处理器规格:查看服务器所用处理器的规格说明书或相关文档。处理器制造商通常会在其技术规格文档中提供有关缓存的详细信息,包括缓存层次结构、缓存行大小等。通过查找处理器型号和规格信息,您应该能够找到缓存行的大小。

    2. 使用 CPU-Z 或类似工具:CPU-Z 是一种常用的免费工具,可以用来查看计算机的硬件信息,包括处理器型号、缓存大小和缓存行大小等。通过运行 CPU-Z 或类似的硬件信息工具,您可以查看服务器使用的处理器类型以及相关的缓存信息。

    3. 操作系统命令:在某些操作系统中,您可以使用特定的命令来查看系统的硬件信息,包括处理器的缓存相关信息。例如,在 Linux 环境下可以使用命令如下来查看缓存信息:


    作者:shengjk1
    链接:https://juejin.cn/post/7390480675172335666

    end



    一口Linux 


    关注,回复【1024】海量Linux资料赠送


    精彩文章合集

    文章推荐

    【专辑】ARM
    【专辑】粉丝问答
    【专辑】所有原创
    专辑linux入门
    专辑计算机网络
    专辑Linux驱动
    【干货】嵌入式驱动工程师学习路线
    【干货】Linux嵌入式所有知识点-思维导图


    一口Linux 写点代码,写点人生!
    评论
    •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
      锦正茂科技 2024-12-03 11:50 66浏览
    • 艾迈斯欧司朗全新“样片申请”小程序,逾160种LED、传感器、多芯片组合等产品样片一触即达。轻松3步完成申请,境内免费包邮到家!本期热荐性能显著提升的OSLON® Optimal,GF CSSRML.24ams OSRAM 基于最新芯片技术推出全新LED产品OSLON® Optimal系列,实现了显著的性能升级。该系列提供五种不同颜色的光源选项,包括Hyper Red(660 nm,PDN)、Red(640 nm)、Deep Blue(450 nm,PDN)、Far Red(730 nm)及Ho
      艾迈斯欧司朗 2024-11-29 16:55 167浏览
    • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
      电子与消费 2024-11-30 22:03 86浏览
    • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
      丙丁先生 2024-12-01 17:37 83浏览
    • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
      晶台光耦 2024-12-02 10:40 102浏览
    • 在电子技术快速发展的今天,KLV15002光耦固态继电器以高性能和强可靠性完美解决行业需求。该光继电器旨在提供无与伦比的电气隔离和无缝切换,是现代系统的终极选择。无论是在电信、工业自动化还是测试环境中,KLV15002光耦合器固态继电器都完美融合了效率和耐用性,可满足当今苛刻的应用需求。为什么选择KLV15002光耦合器固态继电器?不妥协的电压隔离从本质上讲,KLV15002优先考虑安全性。输入到输出隔离达到3750Vrms(后缀为V的型号为5000Vrms),确保即使在高压情况下,敏感的低功耗
      克里雅半导体科技 2024-11-29 16:15 126浏览
    • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
      紫光展锐 2024-12-03 11:38 65浏览
    • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
      万象奥科 2024-12-03 10:24 37浏览
    • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
      wuyu2009 2024-11-30 20:30 106浏览
    • 国产光耦合器正以其创新性和多样性引领行业发展。凭借强大的研发能力,国内制造商推出了适应汽车、电信等领域独特需求的专业化光耦合器,为各行业的技术进步提供了重要支持。本文将重点探讨国产光耦合器的技术创新与产品多样性,以及它们在推动产业升级中的重要作用。国产光耦合器创新的作用满足现代需求的创新模式新设计正在满足不断变化的市场需求。例如,高速光耦合器满足了电信和数据处理系统中快速信号传输的需求。同时,栅极驱动光耦合器支持电动汽车(EV)和工业电机驱动器等大功率应用中的精确高效控制。先进材料和设计将碳化硅
      克里雅半导体科技 2024-11-29 16:18 168浏览
    • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
      youyeye 2024-12-02 23:58 51浏览
    • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
      刘旷 2024-12-02 09:32 98浏览
    • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
      coyoo 2024-12-03 12:20 70浏览
    • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
      Industio_触觉智能 2024-12-03 11:28 41浏览
    • 学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&
      youyeye 2024-11-30 14:30 70浏览
    我要评论
    0
    点击右上角,分享到朋友圈 我知道啦
    请使用浏览器分享功能 我知道啦