好吧,之前投实习的时候把NPU看成NLU,然后投了个软件测试,现在竟然进面试了,还是得准备一下,抱个佛脚。不过,真的xs,我当初怎么会投这个的啊,现在看职位描述真没一个知道的。
文章目录
- 软件测试了解
-
- 公司简介
-
- 面经(牛客)
- 1. NPU嵌入式神经 络处理器
- 2. 工具链
- 3. 软件测试
-
- 3.1 岗位界定
- 3.2 基础知识
- 4. ASIC与FPGA
-
- 4.1 FPGA现场可编程门阵列
- 4.2 ASIC专用集成电路
- 4.3 ASIC与FPGA对比
- 4.4 Testbench
- 5. linux面试/shell脚本编程
软件测试了解
岗位:软件测试工程师(NPU工具链方向)
职位描述:1、负责NPU软件工具链的测试工作;2、负责ASIC FPGA验证testbench开发,编写测试用例;3、与IC设计工程师、软件工程师协作,完成FPGA验证、验证脚本调试工作;4、维护验证计划、测试用例等文档,撰写测试 告、验证 告。
岗位要求:1、熟悉C/C++/Python编程;2、熟悉linux环境, shell脚本编程;3、了解常用的CNN模型结构和算子的计算特征。
IC设计工程师:Integrated Circuit Designer,从事IC开发,集成电路开发设计的职业。IC专业就是集成电路设计专业。集成电路设计,是电子工程学和计算机工程学的一个学科,其主要内容是运用专业的逻辑和电路设计技术设计集成电路(IC)。
公司简介
奥比中光科技集团股份有限公司是一家以AI 3D传感技术为核心的科技创新型企业。公司总部设立在深圳,在上海、西安和美国均设有分部。AI 3D感知是为人工智能提供三维视觉能力的关键基础共性技术。奥比中光突破国际技术垄断,拥有从芯片、算法,到系统、框架、上层应用支持的全栈技术实力,在AI 3D感知领域专利申请量居世界前三,成为亚洲第一家、全球第四家掌握AI 3D感知全领域技术的平台型科技企业,占据行业制高点。
面经(牛客)
- 自我介绍(大概聊了一下项目 为什么不投开发岗而投了测试岗)
- 测试理论(在哪里学习到测试回归测试冒烟测试及两者有什么区别;自动化测试工具有哪些单介绍这些工具是做什么的动化测试的应用场景、能否替代手工测试、为什么
- 操作系统(linux:查看文本内容有哪些命令、在文本中查找某个关键词出现的地方或出现次数其中涉及到的命令有哪些、查找文件的命令)
- 数据库(自己项目中涉及到哪些数据库及其操作、存储过程用法和作用、sql语句:找出语数英综成绩加起来总分前十的学生id)
- 反问环节(公司其他业务、这个岗位负责哪方面的业务、个人改进意见)
- 你对我们公司做的东西有了解吗
- 常见的损失函数(应用场景)
- 激活函数的作用(我只说了个非线性,面试官不满意,然后我就具体说了每一种激活函数的作用,算过关吧)
- Python基础,list每隔两个取一个元素(我说直接for循环,面试官问更快速的方式,面试结束后我才想起来可能是列表推导式,主要是我忘了列表推导比for循环更快)。
- 你理解的梯度下降方法(我简单提到了SGD,动量,一阶距,二阶距,Radam,lookahead等,没有细究)
- 感受野的大小,对目标检测时大目标和小目标的分类,有什么影响
- 1*1卷积的作用,降维和升维,和全连接有什么区别,可以代替全连接/li>
- dropout层原理,神经元结点冻结是随机取得吗重是怎么算的向传播是怎么传的/li>
- vgg卷积核为什么取3*3
1. NPU嵌入式神经 络处理器
嵌入式算法移植优化学习笔记5——CPU,GPU,TPU,NPU都是什么。
NPU指的是“嵌入式神经 络处理器”,采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。NPU处理器专门为物联 人工智能而设计,用于加速神经 络的运算,解决传统芯片在神经 络运算时效率低下的问题。
衡量芯片计算性能的重要指标称为算力。通常而言,将每秒所执行的浮点运算次数(亦称每秒峰值速度)作为指标来衡量算力,简称为 FLOPS。现有的主流芯片运算能力达到了 TFLOPS 级别。一个 TFLOPS(teraFLOPS)等于每秒万亿(=10^12)次的浮点运算。增加深度学习算力需要多个维度的齐头并进的提升:
4.1 FPGA现场可编程门阵列
FPGA,Field Programmable Gate Array,即现场可编程门阵列,它是在 PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物,是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA 芯片主要由 6 部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式 RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
FPGA 还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。FPGA能完成任何数字器件的功能,甚至是高性能 CPU 都可以用 FPGA 来实现。
FPGA 拥有大量的可编程逻辑单元,可以根据客户定制来做针对性的算法设计。除此以外,在处理海量数据的时候,FPGA 相比于 CPU 和 GPU,独到的优势在于:FPGA 更接近 IO。换句话说,FPGA是硬件底层的架构。比如,数据采用 GPU 计算,它先要进入内存,并在 CPU 指令下拷入 GPU 内存,在那边执行结束后再拷到内存被 CPU 继续处理,这过程并没有时间优势;而使用 FPGA 的话,数据 I/O 接口进入 FPGA,在里面解帧后进行数据处理或预处理,然后通过 PCIE 接口送入内存让 CPU 处理,一些很底层的工作已经被 FPGA 处理完毕了(FPGA 扮演协处理器的角色),且积累到一定数量后以 DMA 形式传输到内存,以中断通知 CPU 来处理,这样效率就高得多。
虽然 FPGA 的频率一般比 CPU 低,但 CPU 是通用处理器,做某个特定运算(如信 处理,图像处理)可能需要很多个时钟周期,而 FPGA 可以通过编程重组电路,直接生成专用电路,加上电路并行性,可能做这个特定运算只需要一个时钟周期。
比如一般 CPU 每次只能处理 4 到 8 个指令,在 FPGA 上使用数据并行的方法可以每次处理 256 个或者更多的指令,让FPGA可以处理比CPU多很多的数据量。
举个例子,CPU 主频 3GHz,FPGA主频 200MHz,若做某个特定运算 CPU 需要 30 个时钟周期,FPGA 只需一个,则耗时情况:CPU:30/3GHz =10ns;FPGA:1/200MHz =5ns。可以看到,FPGA 做这个特定运算速度比 CPU 块,能帮助加速。
北京大学与加州大学的一个关于 FPGA 加速深度学习算法的合作研究。展示了 FPGA 与 CPU 在执行深度学习算法时的耗时对比。在运行一次迭代时,使用 CPU 耗时 375 毫秒,而使用 FPGA 只耗时 21 毫秒,取得了18倍左右的加速比。
FPGA 相对于 CPU 与 GPU 有明显的能耗优势,主要有两个原因。首先,在 FPGA 中没有取指令与指令译码操作, 在 Intel 的 CPU 里面,由于使用的是 CISC 架构,仅仅译码就占整个芯片能耗的 50%;在 GPU 里面,取指令与译码也消耗了 10%~20%的能耗。其次,FPGA 的主频比 CPU 与 GPU 低很多,通常 CPU 与 GPU 都在 1GHz 到 3GHz 之间,而 FPGA 的主频一般在 500MHz 以下。如此大的频率差使得 FPGA 消耗的能耗远低于 CPU 与 GPU。
FPGA与CPU在执行深度学习算法时的耗能对比。在执行一次深度学习运算,使用 CPU 耗能 36 焦,而使用 FPGA 只耗能 10 焦,取得了 3.5 倍左右的节能比。通过用 FPGA 加速与节能,让深度学习实时计算更容易在移动端运行。
相比CPU和GPU,FPGA 凭借比特级细粒度定制的结构、流水线并行计算的能力和高效的能耗,在深度学习应用中展现出独特的优势,在大规模服务器部署或资源受限的嵌入式应用方面有巨大潜力。此外,FPGA 架构灵活,使得研究者能够在诸如 GPU 的固定架构之外进行模型优化探究。
究其本质它仍是芯片的一种。很多人不清楚FPGA到底算软件还是硬件实它介于软硬件之间。如果用它做接口、通信的话,它就偏向硬件;如果用它做算法、控制,那么它就偏向软件。
4.2 ASIC专用集成电路
ASIC,Application Specific Integrated Circuit,专用集成电路,是指应特定用户要求或特定电子系统的需要而设计、制造的集成电路。严格意义上来讲,ASIC 是一种专用芯片,与传统的通用芯片有一定的差异。是为了某种特定的需求而专门定制的芯片。
ASIC 作为集成电路技术与特定用户的整机或系统技术紧密结合的产物,与通用集成电路相比,具有以下几个方面的优越性:体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低。回到深度学习最重要的指标:算力和功耗。我们对比 NVIDIA 的 GK210 和某 ASIC 芯片规划的指标,如下所示:
从算力上来说,ASIC 产品的计算能力是 GK210 的 2.5 倍。第二个指标是功耗, 功耗做到了 GK210 的 1/15。第三个指标是内部存储容量的大小及带宽。这个内部 MEMORY 相当于 CPU 上的 CACHE。深度雪地的模型比较大,通常能够到几百 MB 到 1GB 左右,会被频繁的读出来,如果模型放在片外的 DDR 里边,对 DDR 造成的带宽压力通常会到 TB/S 级别。
全定制设计的ASIC,因为其自身的特性,相较于非定制芯片,拥有以下几个优势:1. 同样工艺,同样功能,第一次采用全定制设计性能提高 7.6 倍;2. 普通设计,全定制和非全定制的差别可能有 1~2 个数量级的差异;3. 采用全定制方法可以超越非全定制 4 个工艺节点(采用 28nm 做的全定制设计,可能比 5nm 做的非全定制设计还要好)我们认为,ASIC 的优势,在人工智能深度学习领域,具有很大的潜力。
ASIC 在人工智能深度学习方面的应用还不多,但是我们可以拿比特币矿机芯片的发展做类似的推理。比特币挖矿和人工智能深度学习有类似之处,都是依赖于底层的芯片进行大规模的并行计算。而 ASIC 在比特币挖矿领域,展现出了得天独厚的优势。
4.3 ASIC与FPGA对比
FPGA主要用于要求快速迭代或者小批量产品,或者作为ASIC的算法验证加速。ASIC用于设计规模大,复杂度比较高的芯片,或者是成熟度高,产量比较大的产品;
小批量需求时,单片FPGA成本低于ASIC,随着产品量的增加,单片ASIC成本逐步降低;
在相同工艺条件下,FPGA功耗要大于ASIC。FPGA,尤其是基于占用大量硅面积的、每个单元六个晶体管的静态存储器(SRAM)的查寻表(LUT)和配置元件技术的FPGA,其功耗要比对等的ASIC大得多;
速度方面:FPGA内部是基于通用的结构,根据RTL设计选择内部布局布线,当然通用必然导致冗余。ASIC是根据设计需求,最优化cell逻辑资源,并且做到最优布局走线,降低走线延迟和CELL延时。
定制化的电路设计和工艺使用ASIC面积小于FPGA。
FPGA设计流程是先根据需求选择符合设计要求的FPGA芯片,然后按照下图流程设计(整的FPGA设计流程包括功能描述、电路设计与输入、功能仿真、综合优化、综合后仿真、实现与布局布线、时序仿真、板级仿真与验证、调试与加载配置)。
ASIC设计分为前端设计,后端设计,封装测试(ASIC的设计流程(数字芯片)包括:功能描述、模块划分、模块编码输入、模块级仿真验证、系统集成和系统仿真验证、综合、STA(静态时序分析)、形式验证。在ASIC设计过程中,往往要用到FPGA进行原型验证。FPGA验证是进行ASIC设计的重要环节,其后,还需要引入ASIC版本源码,插入IOPAD,DFT,功耗估计和进行其它后端流程。完成FPGA验证可以说就完成了ASIC整套流程的50~80%。)。

两者的定位
FPGA和ASIC产品的使用要根据产品的定位和设计需要来选用,ASIC产品适用于设计规模特别大,如CPU、DSP或多层交换芯片等,或者是应用于技术非常成熟且利润率非常低的产品,如家用电器和其它消费类电器,亦或是大量应用的通用器件如RAM、PHY等。而FPGA产品适用于设计规模适中,产品要求快速占领市场,或产品需要灵活变动的特性设计等方面的产品,如PDH、2.5G以下SDH设备和大部分的接口转换芯片等。当然具体使用那种产品来设计还要设计者充分考虑自己的产品定位来决定。
两者在互相融合
最明显的莫过于处理器中开始集成FPGA,而可编程的ASIC也开始兴起。随着SoC成为主流,两者的边界也就不辣么明显了。
4.4 Testbench
Testbench是一种用任意语言编写的程序或模块,用于在模拟过程中执行和验证硬件模型的功能正确性。 Verilog 主要用于硬件建模(模拟),该语言包含各种资源,用于格式化,读取,存储,动态分配,比较和写入模拟数据,包括输入激励和输出结果。
Testbench 的主要组件如下:
- 时间表声明:指定所有延迟的时间单位
- Module:它定义了测试文件的top模块,测试文件的top模块通常没有输入输出端口,测试是直接监控寄存器和线 这些内部信 的活动
- 内部信 :它将驱动激励信 进入 UUT 并监控 UUT 的响应,信 驱动和监控
- UUT 实例化
- 激励生成:编写语句以创建激励和程序块
- 响应监控和比较:自我测试语句,能 告数值,错误和警告
(参考:Testbench编写技巧、FPGA中testbench的编写技巧、Testbench编写要点、如何编写testbench)
FPGA验证工程师职责:
1、负责搭建.维护FPGA验证平台;2、FPGARTL代码编写调试仿真;3、FPGA时序约束文件编写,综合实现;4、负责在FPGA验证平台上进行相关的调试和测试;5、FPGA验证相关文档的编写。
5. linux面试/shell脚本编程
Linux面试详解
Linux经典面试题及答案整理
常用的Linux命令(面试/工作必备)
Linux面试必备20个常用命令
70个经典的Shell脚本面试题与答案
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!