Skip to content

67_指令集篇

kuangyufei edited this page Sep 5, 2022 · 1 revision

本篇关键词:、、、

下载 >> 离线文档.鸿蒙内核源码分析(百篇博客分析.挖透鸿蒙内核).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 | 知乎 | 掘金 > 站点发布,百篇博客系列目录如下。

按功能模块:

基础知识 进程管理 任务管理 内存管理
双向链表 内核概念 源码结构 地址空间 计时单位 优雅的宏 钩子框架 位图管理 POSIX main函数 调度故事 进程控制块 进程空间 线性区 红黑树 进程管理 Fork进程 进程回收 Shell编辑 Shell解析 任务控制块 并发并行 就绪队列 调度机制 任务管理 用栈方式 软件定时器 控制台 远程登录 协议栈 内存规则 物理内存 内存概念 虚实映射 页表管理 静态分配 TLFS算法 内存池管理 原子操作 圆整对齐
通讯机制 文件系统 硬件架构 内核汇编
通讯总览 自旋锁 互斥锁 快锁使用 快锁实现 读写锁 信号量 事件机制 信号生产 信号消费 消息队列 消息封装 消息映射 共享内存 文件概念 文件故事 索引节点 VFS 文件句柄 根文件系统 挂载机制 管道文件 文件映射 写时拷贝 芯片模式 ARM架构 指令集 协处理器 工作模式 寄存器 多核管理 中断概念 中断管理 编码方式 汇编基础 汇编传参 链接脚本 内核启动 进程切换 任务切换 中断切换 异常接管 缺页中断
编译运行 调测工具
编译过程 编译构建 GN语法 忍者无敌 ELF格式 ELF解析 静态链接 重定位 动态链接 进程映像 应用启动 系统调用 VDSO 模块监控 日志跟踪 系统安全 测试用例

百万注源码 | 处处扣细节

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

  • < gitee | github | coding | gitcode > 四大码仓推送 | 同步官方源码。

关注不迷路 | 代码即人生

期间不断得到小伙伴的支持,有学生,有职场新人,也有老江湖,在此一并感谢,大家的支持是前进的动力。尤其每次收到学生的赞助很感慨,后生可敬。 >> 查看捐助名单

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

Clone this wiki locally