面试地点:英伟达-深圳
我想吐血,我跟一个朋友一起面的,他只被问了一个进程调度的问题,倒在英语关,我被问了,usb子系统,电源管理,中断,软中断,内存管理,还有arm的,反正一大堆,回答出来一半吧,一些一紧张就忘了,郁闷。
问usb子系统,电源管理,中断,软中断,内存管理,还有arm的,等等
nvidia英伟达显卡驱动今天发布了新版linux系统显卡驱动程序,版本号319.17,属于已经通过官方认证的正式版本。319.17驱动全面支持linux、freebsd、solaris 32/64位系统,显卡支持则包括geforce 6系列以来的全部桌面(独立和集成)、移动、专业、高性能产品,包括最新的geforce
Nvidia 是全球图形技术和数字媒体处理器行业领导厂商,创建于1993年,总部位于美国圣克拉拉市,在20多个国家和地区拥有约5,700名员工。公司在可编程图形处理器方面拥有先进的专业技术,在并行处理方面实现了诸多突破。
Nvidia已经开发出五大产品品牌,以满足特定细分市场的需求,包括:GeForce、Tegra、ION、Quadro、Tesla。公司不断为视觉计算树立全新标准,其令人叹为观止的交互式图形产品可广泛用于从平板电脑和便携式媒体播放器到笔记本与工作站等各种设备之上
驱动程序、IRQ 与 PCI 等待时间
稳定性问题通常不是由有缺陷的硬件所引起的,但硬件配置不当或选择异常的驱动程序会造成这类问题。当我试图在 Linux 下让我的帝盟 Viper V550(一种基于 NVIDIA TNT 芯片的 AGP 图形卡)使用 NVIDIA 自己的加速驱动程序时,就开始了这方面的经历。
NVIDIA 有它们自己的 Linux 显示驱动程序,它们是 NVIDIA、SGI 和 VA Linux 的合作结晶。与包括在 Xfree86 上的 #nvidia 频道,我与其他人讨论之后,发现不是每个人都能够使驱动程序稳定运行,然而,对于许多人,它是稳定运行的。
在 #nvidia 上,有人建议我确保 V550 没有与另一块卡共用一个 IRQ。与标准的 XFree86 驱动程序不同,加速 NVIDIA 驱动程序需要一个 IRQ 来正常运行。要查看它是否有自己的专用 IRQ,输入 "cat /proc/interrupts",您瞧,V550 与 IDE 控制器共用一个中断。在我解释这个问题之前,先讲述一点有关 IRQ 的简要背景。
PC 通常使用 IRQ 以及硬件中断,来允许外设,如视频卡和磁盘控制器,用信号通知 CPU,它们准备处理数据。在 PCI 总线出现以前,机器中的每个设备都有自己专用的 IRQ,这一点是很重要的。如果您的机器仍然使用 ISA 外设,那么这仍然是一个事实 - 所有非 PCI 设备都应该有自己专用的 IRQ。
然而,PCI 总线有点不同。在系统中,PCI 分配了四个 IRQ 可供 PCI/AGP 卡使用。通常,多个设备 可以共享这些 IRQ。(如果是这种情况,要确保共享 IRQ 的所有设备是 PCI 和 AGP。)尤其对于在可能有五个 PCI 和一个 AGP 插槽的现代机器,共享 IRQ 技术是非常重要的。没有共享 IRQ 技术,系统中使用 IRQ 的卡不可能超过四个。
但是,PCI IRQ 共享有一些限制。现代主板的 BIOS 和 Linux 内核通常支持 PCI IRQ 共享技术,但也有某些 PCI 卡在与另一个设备共享 IRQ 时,会直接拒绝正常工作。如果遇到系统随机死锁,特别是死锁发生与使用某个特定的硬件设备相关时,不妨尝试让 PCI 设备使用自己的 IRQ。第一步是查看系统中是否有任何设备共享 IRQ。可以遵循以下步骤来做到:
如果遇到有问题的设备是非 PCI 设备(ISA 或其它旧卡),那么您会发现 IRQ 冲突,可以尝试通过 BIOS、isapnptools 包或者对外设进行物理跳线来解决。请注意,如果设备是集成在主板上,即使它不占用物理 PCI 插槽,它也是 PCI 设备。
如果有问题的所有设备是 PCI 或 AGP 设备,那么是否有问题取决于硬件。通过以下步骤使所有的 PCI/AGP 设备有自己的 IRQ:
如果仍有两个受怀疑的设备共享 IRQ,那么还有两种额外选项。有些 BIOS 设置程序可以允许您将确定的某个 IRQ 分配给特定的 PCI 插槽。很少见这种 BIOS 设置程序,如果您有其中之一,可以使用这种功能来消除冲突。如果 BIOS 中没有这个选项(大多数情况下没有),那么还有一种方法可以确保解决这种问题 - 关机,关闭电源,从插座上拔掉电源,并等几分钟。然后,打开系统机箱, 将 PCI 卡换一个插槽。这种办法好象不常见,但绝对管用,特别是当系统中有多余的 PCI 插槽时,这种办法特别有用(但您要花一些时间来给每一块卡找正确的插槽。)
我使用了这个“PCI 调换诀窍”,能够使系统中的所有设备都使用唯一的 IRQ。差不多了。正如您所见,有两个 IDE 设备仍然共享一个 IRQ:
现在(几乎)所有设备都有唯一的 IRQ,我尝试加速驱动程序,并且……仍然在不到一个小时内经历了一次死锁。显然,共享的 PCI IRQ 根本不是问题所在。唉……得花些时间看看其它地方(再一次)。
一段时间后,我发现禁用 AGP 可以使 NVIDIA 驱动程序运行正常,但有一点慢。尽管不想这样做,但目前驱动程序的版本允许关闭 AGP,这可以在 XF86Config 中简单地添加一行来实现。关闭 AGP,我将视频的内存带宽降低了 4x,但是相当慢的 3D 仍然比根本无硬件 3D 加速快很多。在禁用 AGP 后, 终于有了一个稳定的系统!然而,这种临时解决方案又造成另一个问题。每当运行 3D OpenGL 动画,声音回放会变得极端扭曲并且断断续续。唷!
幸运的是,能够找到解决声音问题的方案。用 setpci
实用程序为 PCI 设备设置较理想的等待时间。过一会儿,我会向您演示具体的解决方案 -但首先介绍一些背景知识。
您可能知道,PCI 总线是共享资源 - 所有 PCI 卡通过总线轮流进行通信,通常情况下,一切都正常。但由于 PCI 总线是具有有限带宽(虽然通常情况下足够)的共享资源,某个 PCI 卡可能会对系统中的其它 PCI 卡产生负面影响。例如,如果 PCI 卡 A 正在通过总线发送数据,同时,PCI 卡 B 也想发送数据,这会发生什么情况?卡 A 是优雅地让出总线,还是继续进行数据传输 - 如果这样,要多长时间?
回答这个问题与每个 PCI 设备的配置设置,PCI 总线等待时间计时器,密切相关。通常,Linux 驱动程序为系统中的每个 PCI 设备设置了合适的 PCI 总线等待时间计时器值,大多数情况缺省设置是足够的(如果不是最优),所有设备相处融洽,系统工作正常。PCI 总线等待时间计时器可以取 0~248 之间的值。如果某个设备的设置为 0,那么当另一个设备要传输数据时,它会立即释放总线。如果设备的设置为 248,那么在停止之前会持续使用总线较长时间,而另一个设备等待轮到。
如果所有设备都有相对较高的 PCI 总线等待时间计时器设置,并且有大量数据正在通过总线发送,那么 PCI 卡通常在取得总线控制权且开始发送数据前,会等待 较长一段时间。然而,一旦取得总线控制权后,在将总线释放给其它设备之前,它们会通过总线突发传输大量数据。这正是高的 PCI 总线等待时间计时器设置不但 增加了等待时间(通过总线发送数据时的延迟)而且也 增加了有效带宽的原因。由于每个设备可以不中断地通过总线突发地传输大量数据,所以可以更加有效地使用 PCI 总线,并且 PCI 设备可以传输更多的数据。
另一方面,如果所有 PCI 设备具有低的 PCI 总线等待时间设置,那么当另一块卡需要传输数据时,它们会很高兴地放弃总线。这导致相当低的数据传输等待时间,因而没有设备会长期控制总线,造成其它设备等待。所有这些的负面影响是当两个或多个 PCI 设备同时要使用总线时,低的 PCI 总线等待时间设置 减少了有效的 PCI 总线带宽。这种现象的发生是由于突发的大量数据传输很少发生,而且总线控制权切换频繁,增加了开销。
大多数 Linux 分发版包含称为 pci-utils 的工具,该工具允许您查看和改变 PCI 设备的等待时间设置。要查看当前 PCI 设备的等待时间设置,请输入:
输入该命令将显示所有 PCI 设备的非常详细的信息。每个设备的 PCI 等待时间设置在第 3 行上列出,正好在 IRQ 设置之前。
这与扭曲声音的问题有什么联系?唔,扭曲的声音是由于缺省的 PCI 等待时间设置,当运行 3D 加速时,V550 控制了 PCI 总线。这就是原因。V550 是 AGP 2X 卡,当关闭 AGP(以增加稳定性)后,到主存的卡的带宽减少了 75%!现在,当 V550 试图通过较慢的 PCI 总线获取与原来同样数量的数据时,几乎 100% 占用 PCI 总线,这是造成声音设备有问题的原因。由于音频设备的数据缓冲区通常较小,需要及时地将音频数据发送给它们以避免缓冲区欠载运行,因而它们特别易受 PCI 等待时间问题的影响。使用当前设置,V550 使用如此之多的 PCI 带宽,以至于没有留给声卡足够带宽用来传输数据,所以缓冲区欠载运行造成声音扭曲。
对于这个问题有两种可能的解决方案。第一种也是最明显的方案,使用 setpci
命令减少 V550 的 PCI 等待时间。这使得能够迅速地共享 PCI 总线,其它设备以较短的等待时间就可以传输它们的数据。我使用 setpci
命令来尝试这种解决方案,它起作用了。然而,我不准备采用这种方法,因为我想 最大化已经受到影响的
3D 图形性能,而不是进一步降低其性能。
我决定尝试第二种方案,该方案较之第一种,性能有所提高。不是减少 V550 PCI 总线等待时间,而是将所有设备的 PCI 等待时间都提高到相对较高的值 - 176(通常设备的缺省值大约是 32,除了 V550 缺省设为 200 以上)。然后,将对易受等待时间影响的设备的 PCI 总线等待时间设置成最大值 - 248。正如我希望的,声卡通过总线以相对较大的数据块突发传送数据,从而解决了这个问题。同时,其它设备也可以传输大块的数据,数据恰好小到不独占总线,大到能有效地使用总线。因为可以解决声音问题,同时又增加了机器 PCI 总线的有效带宽,所以我非常满意这种解决方案。下面是实现该诀窍的系统启动脚本摘录:
setpci -v -s 00:,可以获取故障排除指南和其它与 NVIDIA 相关文件的最新版本。欢迎加入 #nvidia 频道,然后使用 "/msg ice-dcc xdcc list" 来接收请求自动 dcc 下载的文件列表。这是求教的好地方,#nvidia 的人通常会很友好,而且愿意向您提供帮助。电子/半导体/集成电路 上海 100-499人
全球图形技术和数字媒体处理器行业领导厂商 more
公司地址 上海市张江高科科苑路399号9号楼
NVIDIA(全称为NVIDIA Corporation,NASDAQ:NVDA,官方中文名称英伟达),创立于1993年1月,是一家以设计显示芯片和主板芯片组为主的半导体公司。Nvidia 是全球图形技术和数字媒体处理器行业领导厂商,总部位于美国圣克拉拉市,在20多个国家和地区拥有约5,700名员工。公司在可编程图形处理器方面拥有先进的专业技术,在并行处理方面实现了诸多突破。
NVIDIA亦会设计游戏 机内核,例如Xbox和PlayStation 3。NVIDIA最出名的产品线是为游戏而设的GeForce显示卡系列,为专业工作站而设的Quadro显卡系列,和用于计算机主板的nForce芯片组系列。nVIDIA的总部设在美国加利福尼亚州的圣克拉拉。是一家无晶圆(Fabless)IC半导体设计公司。
英伟达linux驱动工程师面试经验详情
linux驱动工程师的面试经验
面试地点:英伟达-深圳
我想吐血,我跟一个朋友一起面的,他只被问了一个进程调度的问题,倒在英语关,我被问了,usb子系统,电源管理,中断,软中断,内存管理,还有arm的,反正一大堆,回答出来一半吧,一些一紧张就忘了,郁闷。
问usb子系统,电源管理,中断,软中断,内存管理,还有arm的,等等
更多linux驱动工程师面试经验
面试地点:飞思卡尔半导体(FreeScale)-上海
先笔试,基本题,后面试,将项目,最后Hr谈话。简洁,半天完事...
面试地点:上海先锋商泰电子技术有限公司-上海
笔试过后是技术面,技术面的面试官挺友善的,对我研究生期间做的...
问uboot启动时为什么要关闭中断,Icache有什么好处。
答关中断是为了防止发生异常种植boot过程,Icache可以提高系统的运行效率。
linux驱动工程师的面试经验
面试地点:上海巍岭-上海
缺人,我技术基础可以就要了
问嗯,我大致讲了自己写的一个小驱动吧。
英伟达面经:想知道英伟达怎么样?看准网(Kanzhun.com)免费提供英伟达招聘、英伟达工资、英伟达面试、评价、工作环境招聘及员工等英伟达半导体科技(上海)有限公司的信息。
或各大应用商店搜索:看准
把你关于英伟达的问题大胆的提出来,这里的179位老鸟很乐意为你解答~
提交成功!请静静等待老鸟们回答~
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。