摩登3平台首页_吐血整理的万字Linux内核源码规范

从编码风格错误开始 快速修改编码风格的工具 scripts/checkpatch.pl scripts/Lindent astyle Linux 内核代码风格 1 缩进 2 把长的行和字符串打散 3 大括号和空格的放置 4 命名 5 Typedef 6 函数 7 集中的函数退出途径 8 注释 9 你已经把事情弄糟了 10 Kconfig 配置文件 11 数据结构 12 宏,枚举和RTL 13 打印内核消息 14 分配内存 15 内联弊病 16 函数返回值及命名 17 不要重新发明内核宏 18 编辑器模式行和其他需要罗嗦的事情 19 内联汇编 20 条件编译 从编码风格错误开始 曾经在开发Linux内核驱动的时候,创建了一个补丁文件,但是在把补丁打到主分支的时候提示很多编码风格的错误问题,后来重做了补丁才解决了问题,这也是没有严格按照的Linux编码风格从而导致的问题。因为当时代码量不大,所以解决问题的时间相对较少。在代码量增大的情况下可以借助工具进行自动修改。 快速修改编码风格的工具 scripts/checkpatch.pl 这是一个检查patch是否符合内核编码规范的脚本。默认的调用也确实如此。如果用来检查原文件,需要加上-f的选项。 scripts/Lindent 源码路径下的scripts目录中的工具Lindent可以用来自动修改缩进问题。不过使用Lindent要求系统安装indent这个工具。Ubuntu系统下可以使用apt-get install indent进行「安装」。 astyle 比较推荐使用这个工具,因为比较相当方便,可以一键式转换成linux,java,gnu等等风格。 下载地址项目地址文档说明 如何使用,可以参考具体文档说明,写的比较详细。 总而言之,应该顾全大局,在进行内核开发和驱动开发的时候,严格遵守Linux的编码规范,避免由于编码不规范带来的种种问题,可以参考内核路径下Documentation/CodingStyle文档,以下转自Linux内核文档,最权威的文档路径,很全很强大,原来在这个网站上已经有中文版了,感谢万分,具体的更新可以跳转到你懂的网址。 「来自 Documentation/process/coding-style.rst 的中文翻译」 Linux 内核代码风格 这是一个简短的文档,描述了 linux 内核的首选代码风格。代码风格是因人而异的, 而且我不愿意把自己的观点强加给任何人,但这就像我去做任何事情都必须遵循的原则 那样,我也希望在绝大多数事上保持这种的态度。请 (在写代码时) 至少考虑一下这里 的代码风格。 首先,我建议你打印一份 GNU 代码规范,然后不要读。烧了它,这是一个具有重大象征性意义的动作。 不管怎样,现在我们开始: 1 缩进 制表符是 8 个字符,所以缩进也是 8 个字符。有些异端运动试图将缩进变为 4 (甚至 2!) 字符深,这几乎相当于尝试将圆周率的值定义为 3。 理由:缩进的全部意义就在于清楚的定义一个控制块起止于何处。尤其是当你盯着你的 屏幕连续看了 20 小时之后,你将会发现大一点的缩进会使你更容易分辨缩进。 现在,有些人会抱怨 8 个字符的缩进会使代码向右边移动的太远,在 80 个字符的终端 屏幕上就很难读这样的代码。这个问题的答案是,如果你需要 3 级以上的缩进,不管用 何种方式你的代码已经有问题了,应该修正你的程序。 简而言之,8 个字符的缩进可以让代码更容易阅读,还有一个好处是当你的函数嵌套太 深的时候可以给你警告。留心这个警告。 在 switch 语句中消除多级缩进的首选的方式是让 switch 和从属于它的 case 标签对齐于同一列,而不要 两次缩进 case 标签。比如: switch (suffix) {case 'G':case 'g':        mem <<= 30;        break;case 'M':case 'm':        mem <<= 20;        break;case 'K':case 'k':        mem <<= 10;        /* fall through */default:        break;} 不要把多个语句放在一行里,除非你有什么东西要隐藏: if (condition) do_this;  do_something_everytime;…

摩登3注册开户_嵌入式Linux项目开发的几个步骤

微控制器制造商的开发板,以及他们与开发板一起提供的软件项目例程,在工程师着手一个新设计时可以提供很大帮助。但在设计项目完成其早期阶段后,进一步设计时,制造商提供的软件也可能会导致一些问题。 使用实时操作系统作为应用程序代码平台的设计还面临着许多挑战,比如如何将功能分配给不同的并行任务、如何设计高可靠的进程间通信、以及如何在硬件上测试整个软件包等问题。 越来越多的OEM厂商发现,避免上述两个问题的最好方式,是使用基于开源、经过验证、可扩展、可运行在不同硬件平台的操作系统Linux开始新的设计。就已经被移植到各种计算机硬件平台的操作系统的数量来说,Linux首屈一指。 Linux的衍生版本已运行在非常广泛的嵌入式系统中,包括:网络路由器、移动电话、建筑自动化控制、电视机和视频游戏控制台。 虽然Linux被成功使用,但并不意味着它很容易使用。Linux包含的代码超过一百万行,其运作带有鲜明的Linux方法论味道,初学者可能难以迅速掌握。 因此,本文的主旨是为使用Linux的嵌入式操作系统版本——μClinux,开始一个新的设计项目,该指南共分为五个步骤。为了说明该指南,本文介绍了在意法半导体的STM32F429微控制器(ARMCortex-M4内核,最高180MHz)上的一个μClinux项目实现,使用了Emcraft 的STM32F429DiscoveryLinux板支持包(BSP)。 步骤1:Linux工具和项目布局 每个嵌入式软件设计都从选择合适的工具开始。 工具链是一组连接(或链接)在一起的软件开发工具,它包含诸如GNU编译器集合(GCC)、binutils(一组包括连接器、汇编器和其它用于目标文件和档案工具的开发工具)和glibc(提供系统调用和基本函数的C函数库)等组件;在某些情况下,还可能包括编译器和调试器等其它工具。 用于嵌入式开发的工具链是一个交叉工具链,更常见的叫法是交叉编译器。 GNUBinutils是嵌入式Linux工具链的第一个组件。GNUBinutils包含两款重要工具: ●“as”,汇编器,将汇编代码(GCC所生成)转换成二进制代码 ●“ld”,连接器,将离散目标代码段连接到库或形成可执行文件 编译器是工具链的第二个重要组成部分。在嵌入式Linux,它被称为GCC,支持许多种微控制器和处理器架构。 接下来是C函数库。它实现Linux的传统POSIX应用编程接口(API),该API可被用来开发用户空间应用。它通过系统调用与内核对接,并提供高阶服务。 工程师有几种C函数库选择: ●glibc是开源GNU项目提供的可用C函数库。该库是全功能、可移植的,它符合Linux标准。 ●嵌入式GLIBC(EGLIBC)是一款针对嵌入式系统优化的衍生版。其代码是精简的,支持交叉编译和交叉测试,其源代码和二进制代码与GLIBC的兼容。 ●uClibc是另一款C函数库,可在闪存空间有限、和/或内存占用必须最小的情况下使用。 调试器通常也是工具链的一部分,因为在目标机上调试应用程序运行时,需要一个交叉调试器。在嵌入式Linux领域,GDB是常用调试器。 上述工具是如此地不可或缺,但当它们各自为战时,会花太长时间来编译Linux源代码并将其整合成最终映像(image)。幸运的是,Buildroot(自动生成交叉编译工具的工具)会自动完成构建一个完整嵌入式系统的过程,并通过产生下述任一或所有任务,简化了交叉编译: ●交叉编译工具链 ●根文件系统 ●内核映像 ●引导映像 对嵌入式系统设计师来说,还可以方便地使用一种工具(utility)聚合工具,如BusyBox,这种工具将通常最需要的工具整合在一起。根据 BusyBox的信息页面介绍,“它将许多常用UNIX工具的微型版本整合成一个小的可执行文件。它提供了对大多数你通常会在GNUfileutils和 shellutils等工具中看到的工具的替代。BusyBox里的工具通常比其全功能GNU对应版本的选择少;但所包含选项所提供的预期功能和行为则与对应的GNU所提供的几无差别。对任何小或嵌入式系统来说,BusyBox提供的环境都是相当完整的。” 最后一个重要工具是一款BSP,是为搭载了项目目标MCU或处理器的主板专门做的。 BSP包括预先配置的工具,以及将操作系统加载到主板的引导加载程序。它还为内核和器件驱动器提供源代码(见图1)。 步骤2:引导序列、时钟系统、存储器和串行接口 典型的嵌入式Linux启动顺序执行如下: 1)引导加载程序固件(示例项目里的U-Boot)运行于目标MCU内置闪存(无需外部存储器),并在上电/复位后,执行所有必需的初始化工作,包括设置串口和用于外部存储器(RAM)访问的存储器控制器。 2)U-Boot可将Linux映像从外部Flash转移到外部RAM,并将控制交接到RAM中的内核入口点。可压缩Linux映像以节省闪存空间,代价是在启动时要付出解压缩时间。 3)Linux进行引导并安装基于RAM的文件系统(initramfs)作为根文件系统。在项目构建时,Initramfs被填充以所需的文件和目录,然后被简单地链接到内核。 4)在Linux内核下,执行/sbin/init。/sbin/init程序按照/etc/inittab中配置文件的描述对系统进行初始化。 5)一旦初始化进程完成运行级执行和/sbin/init里的命令,它会启动一个登录进程。 6)壳初始化文件/etc/profile的执行,标志着启动过程的完成。 通过使能就地执行(ExecuteInPlace——XIP)可以显著缩短启动时间、提升整体性能,XIP是从闪存执行代码的方法。通常,Linux代码是从闪存加载到外部存储器,然后从外部存储器执行。通过从闪存执行,因不再需复制这步,从而只需较少的存储器,且只读存储器不再占程序空间。 -END- | | 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3测速代理_在SMT32程序HEX文件中加入固件版本信息

本文内容转自阿莫论坛,作者icode 整理排版:单片机爱好者 分享一个小技巧,使用MDK编译器,让STM32程序HEX文件中加入固件版本信息,估计很多老手都已经在使用(你有好的方法欢迎分享,希望我的砖能引来你的玉),该方法献给新手或初学者。 代码如下: //------------------------------------------------------------------------------#include //------------------------------------------------------------------------------#define VERINFO_ADDR_BASE   (0x8009F00) // 版本信息在FLASH中的存放地址const char Hardware_Ver[] __attribute__((at(VERINFO_ADDR_BASE + 0x00)))  = "Hardware: 1.0.0";const char Firmware_Ver[] __attribute__((at(VERINFO_ADDR_BASE + 0x20)))  = "Firmware: 1.0.0";const char Compiler_Date[] __attribute__((at(VERINFO_ADDR_BASE + 0x40))) = "Date: "__DATE__;const char Compiler_Time[] __attribute__((at(VERINFO_ADDR_BASE + 0x60))) = "Time: "__TIME__;//------------------------------------------------------------------------------ 写入到程序中: 选项配置中:Flash地址与大小不用做任何修改! HEX文件: 串口打印输出: xiaomu: 这样可以, 但是有一个缺点,就是生成的bin文件都是满flash大小的, 造成每次烧录都是整个flash读写。 其实这个可以把存放地址放到前面,比如偏移1K的地方,都不用改指定地址 icode: 是的, 程序末尾 到 VERINFO_ADDR_BASE地址这一段会被填充成0x00, 根据需要可以修改 VERINFO_ADDR_BASE 减小地址 或者说 不强制指定地址,  由编译器自动分配, 但这样就要去找相应的版本标识字符串了。 不想前面这一段被大量填充0x00,让HEX文件体积小一点的话, 可以把选项配置中Flash的Size改小一点,把VERINFO_ADDR_BASE设置成从FlashSize后面的空间开始,这样生成的HEX文件就小了,且未用空间就不会被大量填充0x00了。 方法如下: 免责声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。 猜你喜欢 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3注册网址_EUV让摩尔定律重获新生,6nm 5G芯片手机明年量产

今年2月,紫光展锐发布了首款采用SoC单芯片设计的5G方案“虎贲T7520”,采用了6nm EUV工艺制造,拥有多层极紫外光刻技术加持,相比初代7nm晶体管密度提高18%,芯片功耗则可降低8%。 虎贲T7520基于马卡鲁2.0平台,这也是继华为、高通、三星、联发科之后首款采用6nm EUV的5G SoC。 据国内媒体报道,近日紫光展锐执行副总裁周晨接受采访时表示,T7520很快会达到CS(商业样品)的状态。他表示,紫光展锐在这个产品上投入很多资源。 “这个产品是我们整个5G,特别是面向消费类产品很重要的根。我们基于T7520后续规划的是系列化的5G SoC产品,也都在路上。” 据悉,搭载虎贲T7520的手机将于明年量产。 对于为何选择6nm,紫光展锐CEO楚庆表示,EUV重新让摩尔定律获得了生命。业界第一个使用EUV的工艺节点是7nm,我们选择6nm是因为EUV的应用更加成熟,供货也充足。” 在早先的科普文章中,紫光展锐曾提到,只有引入EUV技术的6nm才是真正的6nm。 自1965年英特尔创始人之一的戈登·摩尔提出摩尔定律以来,半导体领域就一直在遵循着“当价格不变时,集成电路上可容纳的元器件的数目,约每隔18个~24个月便会增加一倍,性能也将提升一倍”的规律前行。技术人员一直在研究开发新的IC制造技术,以缩小线宽、增大芯片的容量。 EUV光刻机的出现,就是一个重大突破。它实现了高速,低功耗和高集成的芯片生产工艺,满足了5G高性能、超带宽、低时延和海量连接的需求。 内容来源: 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3平台注册登录_国内罕见,半导体“双翼”龙头

连续聊了2天无线通信模组,今天又回到半导体板块。昨天留言区有两位小伙伴对赛微电子产生疑问,原因是8英寸晶圆产能吃紧,是否有利赛微电子? 确实利好赛微电子,但赛微电子主要针对MEMS的晶圆,并非涉及处理器、其他芯片的其他晶圆。 华叔Tips:MEMS芯片其实一个微电子加工的机械装置,比如将马达、陀螺仪、反射镜面都做成MEMS芯片的大小。有多小?比螨虫还要小,可以说巧夺精工。 MEMS优点在于有更低功耗、更轻重量、更好量产和一致性。我们手机摄像头的光学防抖模组,就是用MEMS技术做成驱动芯片制造。 而赛微电子旗下子公司瑞典Silex,是全球10大MEMS代工厂,营收全球排第3,超越台积电、索尼,仅次于意法半导体、TELEDYNE。 而且,全球光刻机龙头都是用Silex提供的透镜系统MEMS部件。最近赛微电子在北京建设的8英寸MEMS项目已经投产,产能1万片/月(带来7~8亿元营收),最终目标是3万片/月。而瑞典Silex从6英寸提升至8英寸,产能升至7000万片/月。 其实,8英寸吃紧不仅仅对赛微电子有利,涉及晶圆代工的厂商还包括:台积电、中芯国际、华虹半导体、华润微。 中芯国际之前我们聊过了,今天不打算讲单项专业选手的赛微电子,重点放在十项全能的华润微,它的晶圆代工产品更广泛,不仅限于MEMS,还有其他领域。 我们先看看为何8英寸晶圆会吃紧? 现在许多分立器件、功率器件、MEMS、模拟芯片都切换至8英寸晶圆,加重了8英寸产能负荷,导致这一年8英寸晶圆产能吃紧。 8英寸(200mm)晶圆厂还是主流,但随着12英寸(300mm)每年新建数量的增加,已成当前主流。根据IC Insights预计,2021年全球12英寸晶圆厂将增长至123座,到2023年全球12英寸晶圆厂总数将达到138座。 由于龙头都将重心放置12英寸晶圆,8英寸晶圆厂数量在持续下滑。另外, 8英寸晶圆厂的设备有限,二手设备昂贵又流通量少,导致8英寸晶圆新产能增长有限。 其实,8英寸晶圆吃紧从今年二季度就有传,这样会影响哪些公司?首先,IC设计厂商成本提升,面板驱动、触控等零组件升价。 说完大环境后,华叔重点聊聊华润微,它是国资委的华润集团旗下子公司。另外,华润电力、华润置地、华润水泥控股、华润燃气、华润医药、华润啤酒在港股上市,华润三九、华润双鹤、东阿阿胶、江中药业在A股上市。 华润微拥有芯片设计、晶圆制造、封装测试等全产业链的半导体龙头,这种也叫IDM模式,即包办:芯片设计、制造、封装和测试等环节。也是国内10大半导体企业中,唯一一家拥有IDM模式的企业,也是国内最大的功率器件厂商,国内营收最大、技术最领先的MOSFET厂商。 讲真,华润微涉及业务真的太多太多了,这里包括两大块:产品与方案(IDM模式,即全产业链模式,全部自己从设计到生产、销售包办)、制造与服务(即代工模式)。 产品与方案包括:功率半导体、智能控制、智能传感器。这里收入占比最高是功率器件,约占该产品与方案业务的90%收入,传感器、控制器业务规模尚小。 看到这一块是否似曾相似,对,之前我们聊过的圣邦股份、芯海科技、思瑞浦就是做模拟IC,也就是包含信号链IC、电源管理IC、MCU微控制器,只是华润微主要是做电源管理IC。 制造与服务包括:晶圆制造、封装测试、掩模制造。 一、商业模式 产品与方案—— 功率器件占该业务营收最大,而MOSFET又是占功率器件中收入最多的业务,华润微国内拥有全部MOSFET产品研发、制造能力的主要厂商,华润微的低压MOS市占率超70%。 2019年,MOSFET占该业务62%收入、功率IC占14%、传感器占6%、IGBT和MCU控制器占7%。IDM模式利于积累工艺经验提升竞争优势、利于技术沉淀、提供差异化产品、缩短产品周期、提升产品附加值,形成经营闭环。 华润微成长逻辑中,最关键是3点: 1、MOS行业高景气增长。 2、国产替代实现份额提升。 3、产能、先进工艺不断优化。 今年上半年,MOS产品技术迭代,不断创新丰富产品线,收入同比+21.43%。主要原因是电动车对低压MOS需求、园林工具、4G\5G基站储能、电机驱动等需求带动,还有高压MOS,如手机快充和电源等。 IGBT累积多项自主知识产权核心技术,为UPS、逆变器、变频器等领域客户丰富产品,收入同比+49.9%。IGBT主要是工业焊机和跑步机驱动,可能是由于疫情导致大家在家运动。 疫情带动下,MCU在额温枪、额温枪、电子体温计等产品需求强劲,同比+598%,光电传感产品同比+45%。而烟雾报警器产品成功导入品牌客户,电源产品导入国内品牌空调客户。MEMS传感器增速快,主要是医疗电子驱动,还有汽车的胎压检测等领域。 制造与服务—— 华润微除了晶圆自给自足,还提供晶圆代工,包含6、8英寸的代工服务,是国内前3的本土晶圆代工企业。 另外,在内资企业中市占率第1,是国内最大的本土掩模制造企业。 这里主要看下游需求,最近需求旺盛,产能吃紧,上面也说了,这里就不再重复了。 二、基本面 制造及服务,及晶圆类等业务收入依然占比最高,超一半以上。产品与方案即半导体、控制器、传感器业务在这几年收入不断攀升,已经上涨至45%左右。 华润微国内业务依然是大头,收入超80%,国外业务不到20%。 产品业务受到国产替代、产品结构改善,毛利率持续稳步上升,有一定原因是传感器毛利率带动,疫情导致传感器毛利率达到50%,同比+50%,对毛利增长贡献较大,三季度欧洲第二波疫情爆发,即使不会再快速上升,至少目前毛利率会持续一段时间。 前面内容都写了业绩增长的原因,主要是因为疫情带动,还有新能源车、快充需求带动。 三季度,华润微营收同比+18.32%,净利润同比+154.59%,扣非净利润同比+355.8%。 华润微流动资金非常充足,负债率32%,存货12.82亿元,净资产96.67亿元,存货占净资产13.26%。这些数据都看不出有华润微有资金风险和存货计提风险。 另外,华润微还要关注它的折旧问题,上半年减少4000万,今年减少6000~7000万,预计要到2023年才能进入折旧稳定期,明年折旧额大概减少5000万。还有,华润微产能利用率很满,导致没有多余的产能用于做研发,三季度会有改善空间。 三、前景 上面说过,华润微很看重MOS的行业景气度,根据Yole,2017年全球IGBT、MOS规模为104亿美元,预计2023年,功率半导体规模会增长至132亿美元,IGBT占63%、预计5G建设会拉通信对MOS需求,实现5年8.3%的复合增长。 尤其疫情影响下,MOS更加缺货严重,全球龙头的英飞凌高压MOS交货期超16周,其他厂商交期超20周,导致目前行业产线饱满、供不应求。 而在晶圆代工8英寸未见扩张,导致2020年产能吃紧持续。根据IC Insights, 2019年全球仅有720万片8寸,预计2020年全球晶圆产能将新增1790万片,2021年新增产能将创新高2080万片。 另外,华润微还布局第三代半导体,打开成长空间。 受新能源车庞大需求的驱动,以及光伏风电、充电桩等领域,对于效率和功耗要求提升,预计到2027年碳化硅功率器件市场规模将超100亿美元,18~27年9年的复合增速接近 40%。 IDM模式这一块优势就不再重复了,上面也说过。 四、风险 1、半导体行业景气度不及预期。 2、产品研发不及预期。 3、未来持续巨额资金投入风险。 4、行业竞争风险。 5、与国际领先厂商存在技术差距的风险。 五、投资逻辑 券商预计2021年华润微净利润为11.32亿元,考虑明年可能疫情会逐步受控,疫情带来的红利将减退,华叔给出明年预计净利润在10.5亿元,预计PE在50~55倍,对应合理市值区间是525~577.5亿,目前华润微的市值691.38亿元已经透支未来业绩增长。 其他重点资讯—— 1、先导智能:近期中标宁德时代32.28亿元(不含税)锂电池生产设备项目,约占公司2019年经审计营收总额的68.92%。此次中标有利于公司及子公司在新能源电池领域的业务拓展,提高公司收入规模及盈利能力。 2、歌尔股份:筹划控股子公司歌尔微电子分拆上市。歌尔微电子主要从事公司MEMS麦克风、MEMS传感器、微系统模组等相关产品的设计、制造和销售,产品主要应用于智能手机、智能无线耳机、可穿戴产品、汽车电子等领域。 这两天下跌都是受到这消息影响,华叔会抽时间写相关推文,市场有可能跟之前星网锐捷解读一样,这样是否影响母公司利润? 3、荣耀买家基本敲定:渠道商组合深圳星盟接盘,华为高管留守。从消息人士处获悉,华为出售荣耀一事基本敲定,本月晚些时候将正式对外宣布。从股东名单看,星盟信息都是手机渠道商。新公司第一大股东北京松联科技有限公司原本就是荣耀的代理商。此外,普天、中邮器材等都是国资背景的手机代理商分销商。天音通信有限公司经营范围包括通信产品的购销及技术服务,是A股上市公司天音控股的全资子公司。 路透社消息称,荣耀此次出售价格为150亿美元,即1000亿人民币。但另有知情人称,对照小米的市值,荣耀出售价格可能定在2000亿元。 来抄作业了,价格换算回到华叔聊5G首页,点击“估值查询”进入股价换算器,教程在对话框输入“估值”获取。 最后提醒,投资有风险,数据仅为跟踪记录。 在华叔聊5G首页回复“5G”获取5G科技指数。 微信每次改版都让华叔非常揪心,小伙伴都说找不到华叔,,微信怎么改版也能找到华叔。 企业推文快速查询方法: 方法一:回到“华叔聊5G”首页,点入“”即可查阅。 方法二:在华叔聊5G首页右上角点击“”,进入历史消息页面点击右上角的“”,,回车后即可获取相关推文。 顺便在历史消息中点击“”,星标华叔聊5G,这样找华叔更方便哦。 最全的5G信息就在这里▼ 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3娱乐登录地址_为H3C、腾讯插翅腾飞!intel这次真的让人直呼Yes

出品 21ic中国电子网 付斌 网站:21ic.com 多次自我突破的摩尔定律,几番“压榨”下,虽说有望回归两年一更新的频率,但还是有很多人感叹“廉颇老矣”。不过事实上,摩尔定律在提出之时,就在论文的第二页指明了摩尔定律失效的前路,这就是电子行业所追捧的“异构计算”,intel现称之为XPU(CPU+GPU+FPGA+加速器)。   材料受到了限制,所以才有了电化学镀铜和机械平面化的双镶嵌结构;物理受到了限制,所以才有了金属栅极和高K电介质;制程受到了限制,神说“要有光”,所以才有了光刻技术……回溯1965年,intel的创始人戈登·摩尔提出了改变世界的 摩尔定律至今已经自我突破了三次瓶颈。   虽然几经放缓, intel已让其重新回归两年一更新。 但实际上,我们仍然不知道1nm节点后的名字,这一迷之领域仍是纸上谈兵的阶段。反观登纳德缩放比例定律和阿姆达尔定律也基本进入瓶颈期, 现在正是异构计算,即加速计算的时代。 今年4月,intel提出 XPU+oneAPI的超异构计算 的概念,即通过CPU、GPU、FPGA和其他加速器的混合式架构,配合统一开发平台oneAPI进行软硬的有机结合方式进行超级加速计算。同期,全新的计算架构Xe被一并提出,并在今年8月正式宣布Xe图形架构下的几款独立显卡。   时至今日,大势已至,intel正式“亮刃”,拔剑反复打磨的“干将和莫邪”,尽数展示了intel一直遵循戈登·摩尔论文的成果。 11月11日,intel召开“XPU和软件发布会”,发布了独立服务器GPU,并宣布将于今年12月正式交付oneAPI Gold版本,21ic中国电子网记者受邀参加此次发布会。   硬件:支持Linux的独立服务器GPU 手游作为可以随手畅玩的一种极佳消遣方式,逐渐成为现代人放松的好方法。任何技术参数都是口说无凭,直接看intel发布的这款服务器GPU到底有什么神奇之处。 根据intel的介绍,新华三 (H3C) XG310是一款云服务GPU,在相比传统卡3/4的长度 (全高x16 PCle 3.0) 下,封装了4颗intel服务器GPU。 典型双卡系统之中,可支持120个Android游戏并发用户,而这一数字最高甚至可以扩展到160个并发用户,实际数量取决于具体游戏和服务器配置。   值得一提的是,在使用至强(Xeon)可扩展处理器下,即使不扩展服务器数量,可直接扩展显卡容量,在每个系统上支持更多流和订阅用户,并且同时实现较低的总体拥有成本(TCO)。 换言之,只需要两张GPU,无需再单独购置服务器,就多能满足120个玩家实时连线游戏的任务。   数据显示,2017至2022年视频直播将增加15倍、游戏流量将增加9倍,到2022年视频将占全球IP流量的82%,而Android占据了全球移动设备的74%,intel正是看重了这一重大转变因此首次发布了其数据中心独立图形显卡intel Server GPU。   这是一款基于 Xe-LP微架构的高密度、低延时独立GPU, 而本款产品的特殊之处在于除了瞄准了视频和游戏渲染应用场景下的数据中心,更加 优化了对Linux操作系统的支持, 使得不同操作系统之间代码复用成为了可能,也使得这款独立GPU注定能够成为Android游戏云服务的新宠。   参数上,intel Server GPU配备 128-bit渲染管线 (128-bit wide pipeline) 和 8GB LPDDR4 专用板载低功耗显存 。   开发上,开发人员可利用目前Media SDK中的通用API,这一API也将于 明年迁移到oneAPI视频处理库 (oneVPL) 当中。   架构上,不仅是本次推出的新品,整个Xe产线都将全线优化Linux上的开发。通过intel给出的intelServer GPU的Android云游戏架构上,这款面向数据中心的独立GPU在Linux OS (CentOS/Ubuntu) 的容器和虚拟化上提供了更好的优化,扩展代码库在Linux上的支持。从架构上来看,游戏流服务将输入到intel Cloud Rendering (ICR) 中;利用FFMPEG编译、3DMesa渲染输出声音;利用intel GPU UMD渲染视频;而Android 游戏的云端主机和Android容器将利用intel桥接技术连接。   据悉,目前intel正与诸多软件和服务合作伙伴合作,共同将intel服务器GPU推向市场,其中包括 Gamestream、腾讯和Ubitus。   腾讯云游戏副总经理方亮表示:“intel是我们安卓云游戏解决方案上非常重要的合作伙伴。intel至强可扩展处理器和intel服务器GPU,打造了一个 高密度、低时延、低功耗、低TCO (总拥有成本) 的解决方案,让我们能够在每台双卡服务器上生成超过100个游戏实例,诸如《王者荣耀》、《传说对决》。”   笔者认为, 此款云服务独立GPU在功耗上优化的非常彻底, 不仅使用了独立显卡Xe架构中最为低功耗的Xe-LP,还利用LPDDR4作为显存进一步降低功耗。众所周知数据中心是耗电和发热大户,因此只有在提高密度和性能的架构下降低器件的功耗才能全面压低功耗。   另一方面,操作系统和软件正逐渐靠拢开源,开源也是造就流量增长的功臣之一。正因为瞄准的主要是Android的游戏和视频市场,因此在爆发式增长的流量下, 无需扩充服务器,直接插独立GPU卡对于节约成本具有非凡的意义。   软件:oneAPI Gold正式登场   软件和硬件谁更重要?任何时候的答案都是“我都要”,特别是对电子工程师来说,软件硬件两手都要硬,产品亦如此,新发布的独立GPU亦如此。   讲起intel,oneAPI就是这家企业的一切的硬件的载体,也是intel不折不扣的“军师”。事实上,oneAPI早在“SuperComputing 2019”时就已放出测试版。经过无数的测试和功能完善, 直到今天oneAPI Gold正式发布,并将于今年12月正式交付。   名为Gold的oneAPI实际上也是oneAPI的1.0的版本,这款软件正是intel连接CPU、GPU、FPGA和其他加速器的“钥匙”,是实现XPU必不可少的一环。就如intel的战略“水利万物而不争”一样, oneAPI包容着一切的硬件。 软件千千万,oneAPI到底有什么不一样?如果让笔者首推,一定是其直接编程的优秀开发体验,intel称之为DPC++ (Data ParallelC++) ,用一个等式简单解释就是 DPC++ =ISO C++ and Khronos SYCL。 正因为语法接近CUDA,所以在学习曲线上oneAPI是极简的,上手难度很低。   另一方面,intel的统一、简化架构编程模型,开发者可以借助oneAPI针对要解决的特定问题选择最佳加速器结构,且无需为此重写代码。intel对此的愿景是能够 提供毫不妥协的性能,不受限于单一厂商专用的代码构建,就能实现原有代码的集成。   在深度学习加速 (intel…

摩登3测速登陆_11月程序员工资统计出炉!平均14327元

2020年11月全国招收程序员340579人。2020年11月全国程序员平均工资14327元,工资中位数12500元,其中96%的人的工资介于3000元到85000元。 排名 city 平均工资 最低工资 中位数 最高工资 招聘人数 百分比 1 北京 17716 5250 16000 47500 26127 8.47% 2 深圳 17041 5250 15000 45000 49849 16.16% 3 上海 17000 5250 16000 45000 56069 18.18% 4 杭州 15707 5250 14000 45000 17234 5.59% 5 南京 13881 5250 12500 30000 17316 5.61% 6 广州 13819 5000 12500 35000 33709 10.93% 7 东莞 13296 5000 12500 35000 3950 1.28% 8 苏州 13133 5250 12500 30000 9997 3.24% 9 成都 12563 3750 12000 32500 16545 5.36% 10 厦门 12535 5000 12150 26500 1946 0.63% 11 合肥 12441 5000 11500 30000 5529 1.79% 12 武汉 12210 4750 11500 30000 18298 5.93% 13 长沙 11946 5000 11500 30000 6665 2.16% 14 大连 11912 4250 10500 31000 5715…

摩登3登录网站_中国研制的“空中出租车”在韩试飞,可垂直起降

日前,据媒体报道,韩国首尔市政府11日在首尔汝矣岛上空开展了“空中出租车”无人试飞活动,一款中国研制的自动驾驶飞行器参加试飞。 -End- 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3咨询:_5G分流,为了更好的遇见

5G系列文章回顾 1. 5G,看得见的未来 (总述) 2. 5G无线关键技术总览 3. 5G核心网关键技术总览  4. 5G承载关键技术总览 无线专题 1. 大规模MIMO自述 2. 5G RAN:您的配送服务已升级  3. 5G时代,多址技术何去何从? 4. D2D,让通信的方式简单点 5. MUSA,5G物联网为什么需要你? 6. 是兄弟一起上,5G UDN不负众望 7. 上行要想快,还需FAST带 8. 5G RAN节能 9. 5G时代,你还在手工调天线吗? 10. SSB 1+X:不管你站得多高,都让你的手机信号满满! 核心网专题 1. 5G切片,切的究竟是什么? 2. SBA,你对5G核心网做了什么? 3. 5G核心网,这次你是真的变了吗? 4. 移动边缘计算,站在5G“中央”? 5. 朋友一生一起走,计算存储要分手  6. 聆听5G的声音!  7. MANO,你凭什么编排我的人生? 8. 云“养”核心网,NFV你准备好了吗? 9. 您的新朋友OpenStack正飞奔而来,请做好准备 10. 当信令网遇上5G 11. 5G时代,短信演进之路 12. 先理解智能,再谈硬件加速 13. 融合计费,为何成为5G新宠? 14. 服务化的5GC,由谁来控制? 1. ROADM为承载网带来了什么? 2. 5G时代,是谁撼动了MPLS的江湖地位? 3. 5G是如何传输数据的? 4. 什么是SDON软件定义光网络? 5. 5G时代,是谁为数据中心带来了新的活力? 6. 5G承载网,你的路修好了吗? 7. 是谁让5G光传送网(OTN)变得更灵活及强大? 8. 5G时代,以太网家庭幸福的秘诀是什么?  9. 你以为的北京时间,是真的北京时间吗? 10.堆叠,你能为5G做些什么? 11.No PULL, Just PUSH! 12. 数据中心也要迎战5G了? 13. 原来你是这样的5G电信云! 14. 5G电信云数据中心的逻辑组网 15. “云诊断、云课堂、云旅游…”背后的力量 16. 5G承载网,你的稳定我来守护  17. 5G时代,PON出“新花样” 5G知识抢先看 欢迎继续关注后续精彩 同时 真诚欢迎您留言对5G技术的需求 我们将竭诚为您服务 我们是一群平均从业年限5+的通信专业工程师。关注我们,带你了解通信世界的精彩!分享 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3注册平台官网_Linux系统中,为什么需要区分内核空间与用户空间?

本文以 32 位系统为例介绍内核空间(kernel space)和用户空间(user space)。 内核空间和用户空间 对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方)。也就是说一个进程的最大地址空间为 4G。 操作系统的核心是内核(kernel),它独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证内核的安全,现在的操作系统一般都强制用户进程不能直接操作内核。 具体的实现方式基本都是由操作系统将虚拟地址空间划分为两部分,一部分为内核空间,另一部分为用户空间。针对 Linux 操作系统而言,最高的 1G 字节(从虚拟地址 0xC0000000 到 0xFFFFFFFF)由内核使用,称为内核空间。而较低的 3G 字节(从虚拟地址 0x00000000 到 0xBFFFFFFF)由各个进程使用,称为用户空间。 对上面这段内容我们可以这样理解:「每个进程的 4G 地址空间中,最高 1G 都是一样的,即内核空间。只有剩余的 3G 才归进程自己使用。」 「换句话说就是, 最高 1G 的内核空间是被所有进程共享的!」下图描述了每个进程 4G 地址空间的分配情况(此图来自互联网): 为什么需要区分内核空间与用户空间 在 CPU 的所有指令中,有些指令是非常危险的,如果错用,将导致系统崩溃,比如清内存、设置时钟等。如果允许所有的程序都可以使用这些指令,那么系统崩溃的概率将大大增加。 所以,CPU 将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通应用程序只能使用那些不会造成灾难的指令。 比如 Intel 的 CPU 将特权等级分为 4 个级别:Ring0~Ring3。其实 Linux 系统只使用了 Ring0 和 Ring3 两个运行级别(Windows 系统也是一样的)。 当进程运行在 Ring3 级别时被称为运行在用户态,而运行在 Ring0 级别时被称为运行在内核态。 内核态与用户态 好了我们现在需要再解释一下什么是内核态、用户态:「当进程运行在内核空间时就处于内核态,而进程运行在用户空间时则处于用户态。」 在内核态下,进程运行在内核地址空间中,此时 CPU 可以执行任何指令。运行的代码也不受任何的限制,可以自由地访问任何有效地址,也可以直接进行端口的访问。 在用户态下,进程运行在用户地址空间中,被执行的代码要受到 CPU 的诸多检查,它们只能访问映射其地址空间的页表项中规定的在用户态下可访问页面的虚拟地址,且只能对任务状态段(TSS)中 I/O 许可位图(I/O Permission Bitmap)中规定的可访问端口进行直接访问。 对于以前的 DOS 操作系统来说,是没有内核空间、用户空间以及内核态、用户态这些概念的。可以认为所有的代码都是运行在内核态的,因而用户编写的应用程序代码可以很容易的让操作系统崩溃掉。 对于 Linux 来说,通过区分内核空间和用户空间的设计,隔离了操作系统代码(操作系统的代码要比应用程序的代码健壮很多)与应用程序代码。 即便是单个应用程序出现错误也不会影响到操作系统的稳定性,这样其它的程序还可以正常的运行(Linux 可是个多任务系统啊!)。 「所以,区分内核空间和用户空间本质上是要提高操作系统的稳定性及可用性。」 如何从用户空间进入内核空间 其实所有的系统资源管理都是在内核空间中完成的。比如读写磁盘文件,分配回收内存,从网络接口读写数据等等。 我们的应用程序是无法直接进行这样的操作的。但是我们可以通过内核提供的接口来完成这样的任务。 比如应用程序要读取磁盘上的一个文件,它可以向内核发起一个 “系统调用” 告诉内核:”我要读取磁盘上的某某文件”。 其实就是通过一个特殊的指令让进程从用户态进入到内核态(到了内核空间),在内核空间中,CPU 可以执行任何的指令,当然也包括从磁盘上读取数据。具体过程是先把数据读取到内核空间中,然后再把数据拷贝到用户空间并从内核态切换到用户态。 此时应用程序已经从系统调用中返回并且拿到了想要的数据,可以开开心心的往下执行了。简单说就是应用程序把高科技的事情(从磁盘读取文件)外包给了系统内核,系统内核做这些事情既专业又高效。 对于一个进程来讲,从用户空间进入内核空间并最终返回到用户空间,这个过程是十分复杂的。举个例子,比如我们经常接触的概念 “堆栈”,其实进程在内核态和用户态各有一个堆栈。 运行在用户空间时进程使用的是用户空间中的堆栈,而运行在内核空间时,进程使用的是内核空间中的堆栈。所以说,Linux 中每个进程有两个栈,分别用于用户态和内核态。 下图简明的描述了用户态与内核态之间的转换: 既然用户态的进程必须切换成内核态才能使用系统的资源,那么我们接下来就看看进程一共有多少种方式可以从用户态进入到内核态。 概括的说,有三种方式:系统调用、软中断和硬件中断。这三种方式每一种都涉及到大量的操作系统知识,所以这里不做展开。 整体结构 接下来我们从内核空间和用户空间的角度看一看整个 Linux 系统的结构。它大体可以分为三个部分,从下往上依次为:硬件 -> 内核空间 -> 用户空间。如下图所示(此图来自互联网): 在硬件之上,内核空间中的代码控制了硬件资源的使用权,用户空间中的代码只有通过内核暴露的系统调用接口(System Call Interface)才能使用到系统中的硬件资源。其实,不光是 Linux,Windows 操作系统的设计也是大同小异。 实际上我们可以将每个处理器在任何指定时间点上的活动概括为下列三者之一: 运行于用户空间,执行用户进程。 运行于内核空间,处于进程上下文,代表某个特定的进程执行。 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断。 以上三点几乎包括所有的情况,比如当 CPU 空闲时,内核就运行一个空进程,处于进程上下文,但运行在内核空间。…