本篇关键词:、、、

下载 >> 离线文档.鸿蒙内核源码分析(百篇博客分析.挖透鸿蒙内核).pdf

硬件架构相关篇为:

指令集

  • 在计算机中,指示计算机硬件执行某种运算、处理功能的命令称为指令,它是计算机运行的最小的功能单位,而硬件的作用是完成每条指令规定的功能。
  • 每一种处理器都有自己可以识别的一整套指令,称为指令集,它是硬件和软件之间沟通的桥梁。是处理器提供给软件控制它的语言,处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。按CPU的设计理念,将软硬件沟通方式分成复杂指令集(CISC)和精简指令集(RISC) ,不同的时期流行不同的方式,取决于当时的沟通成本/性价比。
  • 早期的CPU全部是CISC架构,受限于软件和编译器技术不发达,设计方向是要用最少的机器语言指令来完成所需的计算任务,需更多的从硬件角度去考虑CPU的设计,能用硬件完成的就尽量不用软件去做。其结果导致硬件较复杂,功耗大,成本高。
  • 后期因软件和编译器技术快速崛起,相比于硬件呈指数级的增长,原来的指令集架构就不再适用新时代,RISC的优势就凸显出来,设计方向是降低硬件的大小,减少处理器的功耗,从而硬件成本低廉,省电价格又便宜自然就占据了市场的主导权,尤其在嵌入式领域这种优势就更加的明显。
对比项 CISC(复杂指令集)
Complex Instruction Set Computer
RISC(精简指令集)
reduced instruction set computer
目的 增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化 减少指令种类和简化指令功能,提高指令的执行速度
指令系统 复杂、庞大 简单、精简
指令数目 一般大于200条 一般小于100条
指令字长 不固定 固定
可访存指令 不加限制 只有 LOAD/STORE指令
各指令的执行时长 指令间执行时长差距很大 绝大多数在1个周期内完成
各种指令的使用频度 指令间频度差距很大(二八原则) 指令都比较常用
通用寄存器数量 较少
中断 机器是在一条指令执行结束后响应中断 机器在一条指令执行的适当地方可响应中断
单元电路(功耗) 包含有丰富的电路单元,因而功能强、面积大、功耗大 包含有较少的单元电路,因而面积小、功耗低
目标代码的执行效率 难以用优化编译生成高效的目标代码程序 采用优化的编译程序,生成代码相对较为高效
控制方式 绝大多数为微程序控制 绝大多数为组合逻辑控制
指令流水线 可以通过一定方式实现 必须实现
微处理器的设计周期 微处理器结构复杂,设计周期长 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术
适用场景 适用于【通用型机器】;功能强大,易于/利于实现、处理特殊功能,因有专用指令来完成特定功能 适用于【专用型机器】,因RISC指令系统的确定与特定的应用领域有关;指令规整,性能容易把握,易学易用
被应用的指令集(架构) X86指令集(架构) MIPS、ARM、RISC-V、Power-PC[IBM]、SPARC、AArch64(基于ARMv8架构的、分离出来的64位的执行状态) 指令集(架构)

x86

  • x86泛指一系列基于Intel 8086且向后兼容的中央处理器指令集架构。最早的8086处理器于1978年由Intel推出,为16位微处理器。 由于以86作为结尾(但不知为何以86数字结尾),因此其架构被称为x86
  • 1985年,英特尔发布第三代32CPU架构,但由于数字并不能作为注册商标,英特尔将其称为IA-32,全名为“Intel Architecture, 32-bit”。同时 CPU 型号到了 intel 80386,所以也称为i386,叫法一直延续至今,现在说的 x86 = i386 = IA-32 指代32位的架构。
  • 2001年,英特尔原本已经决定在64位时代推出新的架构IA-64技术的Itanium处理器产品线来接替取代x86,但它与x86的软件天生不兼容,因此想了各种办法来运行x86的软件,但结果效率十分低下,加之处理器本身和软件移植的成本难以控制,因此这个项目最终告吹。
  • 2003年,英特尔的竞争对手AMD公司自行把32x86(或称为IA-32)拓展为64位,并命名为x86-64Hammer架构,而后更名为AMD64架构,将架构打上了自己的Flag,由于AMD64处理器产品线首先进入市场,微软先推出了基于AMD64的操作系统版本。就不愿意为英特尔IA-64再开发另一个64位版本,英代尔被迫采纳AMD64架构且增加某些新的扩展到他们自己的产品,显然他们不想承认这些指令集是来自它的主要对手,便命名为EM64T架构,后正式更名为Intel 64 也叫x64
  • 所以在PC机时代,你会很容易看到 x86x86_64x64i386IA32IA64amd64这些玩意,大概知道表示什么,但很烦就不能简单点吗 ? 其背后是硬件公司竞争对手之间,软硬件公司之间激烈的PK,这样的案例比比皆是,屡见不鲜。

MIPS

  • MIPS(Microprocessor without Interlocked Pipeline Stages),是一种采取精简指令集(RISC)的指令集架构(ISA),由美国MIPS计算机系统公司开发,现为美普思科技。MIPS广泛被使用在许多电子产品、网络设备、个人娱乐设备与商业设备上。最早的MIPS架构是32位,最新的版本已经变成64位。商业市场主要竞争对手为ARMRISC-V
  • 在一些大学和技术学校中计算机架构的课程上,学生们通常会学习MIPS架构。这个架构极大地影响了后来的精简指令集架构,如Alpha
  • MIPS本来就没有一个较为统一的生态。命运多舛,被转卖多次、很多相关专利已经被卖掉了、碎片化问题非常严重。20213月,MIPS宣布MIPS架构的开发已经结束,因为该公司正在向RISC-V 过渡。

arm

  • 最著名的是 armv7指令集 支持两种指令集,ARM 指令集和 Thumb 指令集,从功耗上来说,thumb 指令集的功耗要低于 arm 指令集。
  • ARM公司的商业模式: IP(Intellectual Property,知识产权)授权模式(ARM架构授权、IP核授权、使用级授权);
  • 主要业务范围: ARM指令集、ARM微架构、ARM芯片(不自己造)

RISC-V

  • RISC-V(发音为“risk-five”)号称芯片设计领域的 linux,是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),目标是成为一个通用的指令集架构(ISA),RISC-V的不同寻常不仅在于它是一个最近诞生的指令集架构(它诞生于最近十年,而大多数其他指令集都诞生于20世纪70到80年代),而且在于它是一个开源的指令集架构。与几乎所有的旧架构不同,它的未来不受任何单一公司的浮沉或一时兴起的决定的影响(这一点让许多过去的指令集架构都遭了殃)。它属于一个开放的,非营利性质的基金会。RISC-V基金会的目标是保持RISC-V的稳定性,仅仅出于技术原因缓慢而谨慎地发展它,并力图让它之于硬件如同Linux之于操作系统一样受欢迎。

百文说内核 | 抓住主脉络

  • 百文相当于摸出内核的肌肉和器官系统,让人开始丰满有立体感,因是直接从注释源码起步,在加注释过程中,每每有心得处就整理,慢慢形成了以下文章。内容立足源码,常以生活场景打比方尽可能多的将内核知识点置入某种场景,具有画面感,容易理解记忆。说别人能听得懂的话很重要! 百篇博客绝不是百度教条式的在说一堆诘屈聱牙的概念,那没什么意思。更希望让内核变得栩栩如生,倍感亲切。
  • 与代码需不断debug一样,文章内容会存在不少错漏之处,请多包涵,但会反复修正,持续更新,v**.xx 代表文章序号和修改的次数,精雕细琢,言简意赅,力求打造精品内容。
  • 百文在 < 鸿蒙研究站 | 开源中国 | 博客园 | 51cto | csdn | 知乎 | 掘金 > 站点发布,鸿蒙研究站 | weharmonyos 中回复 百文 可方便阅读。

按功能模块:

百万注源码 | 处处扣细节

  • 百万汉字注解内核目的是要看清楚其毛细血管,细胞结构,等于在拿放大镜看内核。内核并不神秘,带着问题去源码中找答案是很容易上瘾的,你会发现很多文章对一些问题的解读是错误的,或者说不深刻难以自圆其说,你会慢慢形成自己新的解读,而新的解读又会碰到新的问题,如此层层递进,滚滚向前,拿着放大镜根本不愿意放手。

  • < gitee | github | coding | gitcode > 四大码仓推送 | 同步官方源码,鸿蒙研究站 | weharmonyos 中回复 百万 可方便阅读。

关注不迷路 | 代码即人生

据说喜欢点赞分享的,后来都成了大神。😃