提示
暂不支持移动端,请在PC端查看

首页 难题挑战 演武堂 炼金阁 模板管理 运营中心 光明顶 关于我们
搜索
作者:仗剑天涯
| |
回复数:0
【赛题讲解视频上线】EDA²侠客岛难题挑战·2025赛题讲解视频上线公告
各位参赛者: 大家好,为帮助参赛者更好的理解打榜赛题,我们诚邀各企业顶尖技术专家,针对本届赛题,梳理详细解题思路,揭秘高效解题技巧,带给广大参赛者一场赛题讲解的视听盛宴。同时其他赛题相关问题,还可在讲解视频的评论区提问或者讨论,我们将竭诚为您解答! 详细视频见:EDA²难题挑战交流 -> 各赛题讨论&答疑帖。(https://xiakedao.eda2.com/bbs/forum.php?mod=forumdisplay&fid=3&filter=lastpost&orderby=lastpost) --EDA²侠客岛组委会 --2025.2.7
作者:仗剑天涯
| |
回复数:3
什么是华为云鲲鹏
鲲鹏 原指华为海思发布的一款兼容ARM指令集的服务器芯片鲲鹏920,性能强悍,配备了64个物理核心,单核实力从CPU算力benchmark的角度对比,大约持平于同期X86的主流服务器芯片,整体多核多线程算力较同期的X86芯片更强大。但是鲲鹏的含义已经有所延伸,鲲鹏不再仅仅局限于鲲鹏系列服务芯片,目前是完整软硬件生态和云服务生态。
作者:仗剑天涯
| |
回复数:3
浅谈ATPG到底是什么
ATPG程序程序开发 APT是一个程序开发语言,Automatic Test Pattern Generation(ATPG)自动测试向量生成是在半导体电器测试中使用的测试图形向量由程序自动生成的过程。测试向量按顺序地加载到器件的输入脚上,输出的信号被收集并与预算好的测试向量相比较从而判断测试的结果。ATPG有效性是衡量测试错误覆盖率的重要指标。 一 .简介自动测试图样产生(英语:Automatic test pattern generation, ATPG)系统是一种工具,产生资料给制造出来后的数字电路作测试使用。超大规模集成电路的测试平台,要达到非常高的错误涵盖率(Fault coverage)是非常困难的工作,因为它的复杂度很高。 针对组合逻辑电路(Combinatorial logic)和时序逻辑电路(Sequential logic)的电路测试,必须要使用不同的 ATPG 方法。 二 .阶段一个ATPG的周期可以分为两个阶段:1、测试的生成2、测试的应用在测试的生成过程中,针对电路的设计的测试模型在Gate或Transistor Level产生,以使错误的电路能够被该模型所侦测。这个过程基本上是个数学过程,可以通过以下几个方法获得:1、手工方法2、算法产生3、伪随机产生--软件通过复杂的ATPG程序产生测试图形向量在创建一个测试时,我们的目标应该是在有限存储空间内执行高效的测试图形向量。由此可见,ATPG需要在满足一定错误覆盖率的条件下,产生尽可能少的测试向量。主要考虑到下述因素:1、建立最小测试组所需要的时间2、测试图形向量的大小,软件、硬件的需求3、测试过程的长度4、加载测试图形向量所需的时间5、外部设备 三 .算法现在被广泛使用的ATPG算法包括:D算法,PODEM算法和FAN算法。任何算法都需要一种叫“path sensitization”的技术,它指的是在电路中寻找一条路径以使得路径中的错误都能表现在路径的输出端。最广泛应用的算法是D算法,D代表1而D'代表0,D和D'互补。具体的方法在此不再赘述。ATPG产生过程包含以下步骤:1、错误选择,选择需要测试的错误2、初始,寻找合适的输入向量集3、传输向量集4、比较结果 四 .可测试性设计可测试性设计(英语:Design for Testability, DFT)是一种集成电路设计技术,它将一些特殊结构在设计阶段植入电路,以便设计完成后进行测试。电路测试有时并不容易,这是因为电路的许多内部节点信号在外部难以控制和观测。通过添加可测试性设计结构,例如扫描链等,内部信号可以暴露给电路外部。总之,在设计阶段添加这些结构虽然增加了电路的复杂程度,看似增加了成本,但是往往能够在测试阶段节约更多的时间和金钱。 原文地址:https://baike.baidu.com/item/ATPG/1149631
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之优化方法(六)
优化方法: 修改内存刷新速率 原理 DRAM内存内部使用电容来存储数据,由于电容有漏电现象,经过一段时间电荷会泄放,导致数据不能长时间存储,因此需要不断充电,这个充电的动作叫做刷新。自动刷新是以行为单位进行刷新,刷新操作与读写访问无法同时进行,即刷新时会对内存的性能造成影响。同时温度越高电容泄放越快,器件手册通常要求芯片表面温度在0℃到85℃时,内存需要按照64ms的周期刷新数据,在85℃到95℃时,按照32ms的周期刷新数据。 BIOS中内存刷新速率选项提供了auto选项,可以根据工作温度自动调节内存刷新速率,相比默认32ms配置可以提升内存性能,同时确保工作温度在85℃到95℃时内存数据可靠性。 修改方式 按照附录B 进入BIOS界面的步骤进入BIOS,然后在BIOS的如下位置设置内存刷新速率。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之优化方法(五)
优化方法:调整内存页的大小 原理 TLB(Translation lookaside buffer)为页表(存放虚拟地址的页地址和物理地址的页地址的映射关系)在CPU内部的高速缓存。 TLB的命中率越高,页表查询性能就越好。 TLB的一行为一个页的映射关系,也就是管理了一个页大小的内存: TLB管理的内存大小 = TLB行数 x 内存的页大小 同一个CPU的TLB行数固定,因此内存页越大,管理的内存越大,相同业务场景下的TLB命中率就越高。 说明 修改前后可以通过如下命令观察TLB的命中率($PID为进程ID): perf stat -p $PID -d -d -d 输出结果包含如下信息,其中1.21%和0.59%分别表示数据的miss率和指令的miss率。 1,090,788,717 dTLB-loads # 520.592 M/sec 13,213,603 dTLB-load-misses # 1.21% of all dTLB cache hits 669,485,765 iTLB-loads # 319.520 M/sec 3,979,246 iTLB-load-misses # 0.59% of all iTLB cache hits 修改方式 ● 调整内核内存页大小 ● 设置内存大页 ● 设置透明大页 1、设置内核内存页大小 修改linux内核的内存页大小,需要在修改内核编译选项后重新编译内核(详情可参考内核源码编译安装),简要步骤如下所示: ● 执行make mncnfg ● 选择PAGESIZE大小为64KKernel Features-->Page size(64KB) ● 编译和安装内核 2、设置内存大页 ● 在内核启动阶段设置 可参考kernel-parameters设置如下内核启动参数: ● 在运行时设置 设置node中2 MB大页的数量为20 # echo 20 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages 3、设置透明大页 透明大页是以上内存大页的升级版,使用透明大页,内核会自动为进程分配大页,因此无需手动保留大页。 设置/sys/kernel/mm/transparent_hugepage/enabled的值为: 例如关闭透明大页的设置方法: # echo never > /sys/kernel/mm/transparent_hugepage/enabled 操作系统还有很多内存参数可以调整,具体参考常用操作系统内存参数说明,常用的操作系统内存参数如下所示 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之优化方法(四)
优化方法:NUMA优化,减少跨NUMA访问内存 原理 通过2.1 鲲鹏处理器NUMA简介章节可以看到不同NUMA内的CPU core访问同一个位置的内存,性能不同。内存访问延时从高到低为:跨CPU > 跨NUMA不跨CPU >NUMA内 因此在应用程序运行时要尽可能的避免跨NUMA访问内存,我们可以通过设置线程的CPU亲和性来实现。 修改方式 ● 网 络可以通过如下方式绑定运行的CPU core,其中$cpuNumber是core的编号,从0开始;$irq为网卡队列中断号。 echo $cpuNumber > rcrqrqmfny ● 通过numactl启动程序,如下面的启动命令表示启动test程序,只能在CPU core28到core31运行(-C控制)。 numactl -C 28-31 ./test ● 在C/C++代码中通过cfny函数来设置线程亲和性。 ● 很多开源软件已经支持在自带的配置文件中修改线程的亲和性,例如nginx可以修改nginx.conf文件中的wrrcfny参数来设置nginx线程亲和性。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之优化方法(三)
优化方法:调整线程并发数 原理 程序从单线程变为多线程时,CPU和内存资源得到充分利用,性能得到提升。但是系统的性能并不会随着线程数的增长而线性提升,因为随着线程数量的增加,线程之间的调度、上下文切换、关键资源和锁的竞争也会带来很大开销。当资源的争抢比较严重时,甚至会导致性能明显降。下面数据为某业务场景下,不同并发线程数下的TPS,可以看到并发线程数达到128后,性能达到高峰,随后开始下降。我们需要针对不同的业务模型和使用场景做多组测试,找到适合本业务场景的最佳并发线程数。 修改方式 不同的软件有不同的配置,需要根据代码实现来修改,这里举例几个常用开源软件的修改方法: ● MySQL可以通过innodb_thread_concurrency设置工作线程的最并发数。 ● Nginx可以通过worker_processes参数设置并发的进程个数。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之优化方法(二)
优化方法:定时器机制调整,减少不必要的时钟中断 原理 在Linux内核2.6.17版本之前,Linux内核为每个CPU设置一个周期性的时钟中断,Linux内核利用这个中断处理一些定时任务,如线程调度等。这样导致即使CPU不需要定时器的时候,也会有很多时钟中断,导致资源的浪费。Linux 内核2.6.17版本引入了nohz机制,实际就是让时钟中断的时间可编程,减少不必要的时钟中断。 修改方式 执行cat /proc/cmdline查看Linux 内核的启动参数,如果有nѯĈɊÑff关键字,说明nohz机制被关闭,需要打开。修改方法如下: 说明 修改前后,可以通过如下命令观察timer_tick的调度次数,其中$PID为要观察的进程ID,可以选择CPU占用高的进程进行观察: perf sched record -- sleep 1 -p $PID perf sched latency -s max 输出信息中有如下信息,其中591字段表示统计时间内的调度次数,数字变小说明修改生效。 步骤1 在“/boot”目录下通过fn -name grub.cfg找到启动参数的配置文件。 步骤2 在配置文件中将nf去掉。 步骤3 重启服务器。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之优化方法(一)
优化方法:修改 CPU 的预取开关 原理 局部性原理分为时间局部性原理和空间局部性原理: ● 时间局部性原理(temporal locality):如果某个数据项被访问,那么在不久的将来它可能再次被访问。 ● 空间局部性原理(spatial locality):如果某个数据项被访问,那么与其地址相邻的数据项可能很快也会被访问。 CPU将内存中的数据读到CPU的高速缓冲Cache时,会根据局部性原理,除了读取本次要访问的数据,还会预取本次数据的周边数据到Cache里面,如果预取的数据是下次要访问的数据,那么性能会提升,如果预取的数据不是下次要取的数据,那么会浪费内存带宽。 对于数据比较集中的场景,预取的命中率高,适合打开CPU预取,反之需要关闭CPU预取。目前发现speccpu和X265软件场景适合打开CPU预取,STREAM测试工具、Nginx和数据库场景需要关闭CPU预取。 修改方式 按照B 进入BIOS界面的步骤进入BIOS,然后在BIOS的如下位置设置CPU的预取开关。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之 numactl工具
介绍 numactl工具可用于查看当前服务器的NUMA节点配置、状态,可通过该工具将进程绑定到指定CPU core,由指定CPU core来运行对应进程。 命令参考举例: 安装方式 以CentOS为例,使用如下命令安装:# yum -y install numactl numastat 使用方法 步骤1 通过numactl查看当前服务器的NUMA配置。 从numactl执行结果可以看到,示例服务器共划分为4个NUMA节点。每个节点包含16个CPU core,每个节点的内存大小约为64GB。同时,该命令还给出了不同节点间的距离,距离越远,跨NUMA内存访问的延时越大。应用程序运行时应减少跨NUMA访问内存。 步骤2 通过numactl将进程绑定到指定CPU core。 通过 numactl -C 0-15 top 命令即是将进程“top”绑定到0~15 CPU core上执行。 步骤3 通过numastat查看当前NUMA节点的内存访问命中率。 可以通过numastat命令观察各个NUMA节点的状态。 ● numa_hit表示节点内CPU核访问本地内存的次数。 ● numa_miss表示节点内核访问其他节点内存的次数。跨节点的内存访问会存在高延迟从而降低性能,因此,numa_miss的值应当越低越好,如果过高,则应当考虑绑核。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:1
【鲲鹏】CPU 与内存子系统性能调优之 perf工具
介绍 perf工具是非常强大的Linux性能分析工具,可以通过该工具获得进程内的调用情况、资源消耗情况并查找分析热点函数。 命令参考举例: 安装方式 以CentOS为例,使用如下命令安装:# yum -y install perf 使用方法 步骤1 通过perf top命令查找热点函数。 该命令统计各个函数在某个性能事件上的热度,默认显示CPU占用率,可以通过“-e”监控其它事件。 ● Overhead表示当前事件在全部事件中占的比例。 ● Shared Object表示当前事件生产者,如kernel、perf命令、C语言库函数等。 ● Symbol则表示热点事件对应的函数名称。 通过热点函数,我们可以找到消耗资源较多的行为,从而有针对性的进行优化。 步骤2 收集一段时间内的线程调用。 perf sched record命令用于记录一段时间内,进程的调用情况。“-p”后接进程号,“sleep”后接统计时长,单位为秒。收集到的信息自动存放在当前目录下,文件名为perf.data。 步骤3 解析收集到的线程调度信息。 perf sched latency命令可以解析当前目录下的perf.data文件。“-s”表示进行排序,后接参数“max”表示按照最大延迟时间大小排序。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
下一页 »
12下一页
联系我们
EDA²侠客岛邮箱:xiakedao@eda2.com
联系人电话:18191069556
ISEDA官网
IDAS官网
EDA²公众号
企业微信

Powered by Discuz!

© 2001-2025 Discuz! Team.

返回顶部 返回版块