大连网站建设辽icp备,站长工具seo下载,googleapis wordpress,个人建站软件文章目录一、可编程器件的编程原理1.1 电子器件的发展方向1.2 可编程器件的特点1.3 整个编程及运行过程二、指令集对CPU的意义2.1 汇编语言与C等高级语言的差异2.2 汇编语言的本质2.2.1 编程语言的发展过程2.2.2 汇编语言的特点和用途三、RISC和CISC的区别3.1 复杂指令集CPU --…
文章目录一、可编程器件的编程原理1.1 电子器件的发展方向1.2 可编程器件的特点1.3 整个编程及运行过程二、指令集对CPU的意义2.1 汇编语言与C等高级语言的差异2.2 汇编语言的本质2.2.1 编程语言的发展过程2.2.2 汇编语言的特点和用途三、RISC和CISC的区别3.1 复杂指令集CPU --- CISC3.2 精简指令集CPU --- RISC3.3 CPU的设计方式发展3.4 RISC与CISC指令集对比3.5 发展趋势四、统一编址独立编址4.1 什么是IO什么是内存4.2 内存访问方式4.3 IO访问方式五、程序与数据六、冯诺依曼结构和哈佛结构6.1 优劣对比七、软件编程控制硬件的关键 --- 寄存器7.1 寄存器的定义7.2 关于寄存器7.3 两类寄存器八、ARM 体系结构要点总结8.1 ARM 是RISC架构8.2 ARM 是哈佛结构的本文来源于朱有鹏老师的课程有兴趣购买课程学习的小伙伴可以私聊我我拉你进朱老师的学习群。
一、可编程器件的编程原理
1.1 电子器件的发展方向
模拟器件 -- 数字器件 ASICApplication Specific Integrated Circuit 专用集成电路这个是不可以编程的 -- 可编程器件
1.2 可编程器件的特点
CPU在固定频率的时钟控制下, 节奏运行。CPU可以通过总线读取外部存储设备中的二进制指令集然后解码执行。这些可以被CPU解码执行的二进制指令集是CPU设计的时候确定的是CPU的设计者本文中提及的是ARM公司定义的本质上是一串串1和0组成的数字。这就是CPU的汇编指令集。
1.3 整个编程及运行过程
从源代码到CPU执行过程 .c等高级语言源代码 ----编译器----- .S汇编源代码 ----汇编器----- Elf格式二进制可执行程序 ----Objcopy工具-----Bin格式烧录文件 ----总线----- CPU读入后先解码 ----CPU内部指令流水线----- CPU执行指令。
注 对预编译编译汇编链接过程不清楚的可以看看这位小伙伴的博文。
二、指令集对CPU的意义
2.1 汇编语言与C等高级语言的差异
汇编难写C好写。汇编无可移植性C语言有一定的可移植性Java等更高级的语言移植性更高。汇编语言效率最高C语言次之Java等更高级语言效率更低。汇编不适合完成大型复杂的项目更高级语言更适合完成更大更复杂的项目。
2.2 汇编语言的本质
汇编的实质是机器指令机器码的助记符是一种低级符号语言。机器指令集是一款CPU的编程特性是这款CPU的设计者制定的。CPU的内部电路设计就是为了实现这些指令集的功能机器指令集就好像CPU的API接口一样。
2.2.1 编程语言的发展过程
纯机器码编程汇编语言编程C语言编程C语言编程Java C#等语言编程脚本语言
2.2.2 汇编语言的特点和用途
汇编语言就是CPU的机器指令集的助记符是一款CPU的本质特性。不同CPU的机器指令集设计不同因此汇编程序不能在不同的CPU间互相移植。使用汇编编程可以充分发挥CPU的设计特点所以汇编编程效率最高因此在操作系统内核中效率极其重要处都需要汇编处理。
三、RISC和CISC的区别
3.1 复杂指令集CPU — CISC
Complex Instruction-set computer 复杂指令集CPUCISC体系的设计理念是用最少的指令注意说的是指令而不是指令集来完成任务譬如计算乘法只需要一条MUL指令即可因此CISC的CPU本身设计复杂、工艺复杂但好处是编程器好设计。CISC出现较早至今Intel还一直采用CISC设计。
3.2 精简指令集CPU — RISC
Reduced Instruction-set Computer 精简指令集CPURISC的设计理念是让软件来完成具体的任务CPU本身只提供基本功能指令集。因为RISC CPU 的指令集只有很少的指令这种设计相对于CISCCPU的设计和工艺简单了但是编译器的设计变难了。
3.3 CPU的设计方式发展
早期简单CPU指令和功能都很有限。CISC年代-------CPU功能拓展依赖于指令集的拓展实质是CPU内部组合逻辑电路的拓展。RISC年代-------CPU仅仅提供基础功能指令譬如内存与寄存器通信指令基本运算与判断指令符等功能拓展由使用CPU的人利用基础架构来灵活实现。
3.4 RISC与CISC指令集对比
一般典型的CISC CPU指令在300左右。ARM CPU常用指令在30条左右。 注ARM为什么功耗低 乱序执行能力不如X86
3.5 发展趋势
没有纯粹的RISC或CISC发展方向是RISC与CISC结合形成一种介于两者之间的CPU类型。
四、统一编址独立编址
4.1 什么是IO什么是内存
内存是程序的运行场所内存和CPU之间通过总线连接CPU通过一定的地址来访问具体的内存单元。IOinput and output是输入输出接口是CPU和其它外部设备如串口、LCD、触摸屏、LED等之间通信的道路一般的IO就是指CPU的各种内部和外部的外设。
4.2 内存访问方式
内存通过CPU的数据总线来寻址定位然后通过CPU的数据总线来读写。CPU的地址总线的位数是CPU设计时确定的因此一款CPU所能寻址的范围是确定的而内存是需要占用CPU的寻址空间的。内存和CPU的这种总线连接方式属于直接连接优点是效率高访问快缺点是资源有限拓展性差。
4.3 IO访问方式
IO是指CPU连接的各种外设。CPU访问各种外设有两种方式,具体如下 (1) 类似于访问内存的形式即把外设的寄存器当做一个内存地址来读写从而以访问内存相同的方式来访问各种外设叫 IO与内存统一编址方式。 (2) 使用专用的CPU指令来访问某种特定外设叫 IO与内存独立编址。
对比
由于内存访问频率高因此采用总线式连接直接地址访问效率最高。IO与内存统一编址方式优势是IO当作内存来访问编程简单缺点是IO也需占用一定的CPU地址空间而CPU的地址空间是有限资源。IO与内存独立编址方式优势是不占用CPU地址空间缺点是CPU设计变复杂了。
五、程序与数据
程序运行时两大核心元素程序数据程序是我们写好的源代码经过编译汇编之后得到的机器码这些机器码可以拿给CPU去解码执行CPU不会也不应该去修改程序所以程序是只读的。数据是程序运行过程中定义和产生的变量的值是可以读写的程序运行实际就是改变数据的值。
六、冯诺依曼结构和哈佛结构
程序和数据都放在内存中且彼此不被分离的结构称为冯诺依曼结构。譬如Intel的CPU均采用冯诺依曼结构。程序和数据分开独立放在不同的内存块中彼此完全分离的结构称为哈佛结构。譬如大部分的单片机MCS51、ARM9等均采用哈佛结构。
6.1 优劣对比
冯诺依曼结构中程序和数据放在一起因此安全和稳定性是个问题好处是处理起来简单。哈佛结构中程序一般放在ROM、FLASH中和数据一般放在RAM中独立分开存放。因此好处是安全和稳定性高缺点是软件处理复杂一些需要统一规划链接地址等。 注FLASHROM硬盘只读属性 DDR内存RAM
七、软件编程控制硬件的关键 — 寄存器
7.1 寄存器的定义
寄存器属于CPU外设的硬件组成部分。CPU可以像访问内存一样访问寄存器。寄存器是CPU的硬件设计者制定的目的是留作外设被编程控制的“活动开关”。正如汇编指令集是CPU的编程接口API一样寄存器是外设硬件的软件编程接口API。使用软件编程控制某一硬件其实就是编程读写硬件的寄存器。
7.2 关于寄存器
编程操作寄存器类似于访问内存。寄存器中每个bit位都有特定的含义因此编程操作时需要位操作。单个寄存器的位宽一般和CPU的位宽int/char一样以实现最佳访问效率。 注CPU的位宽指的是数据总线的条数
7.3 两类寄存器
Soc中有两类寄存器通用寄存器和SFR。
通用寄存器ARM中有37个是CPU的组成部分CPU的很多活动都需要CPU的支持和参与。SFRSpecial Function Register特殊功能寄存器不在CPU中而存在CPU的外设中我们通过访问外设的SFR来编程操控这个外设这就是硬件编程控制的方法。 注 SFR硬件外设某个寄存器的地址对应的数据位都是设计时定义的。
八、ARM 体系结构要点总结
8.1 ARM 是RISC架构
常用ARM汇编指令只有二三十条ARM是低功耗CPUARM 的架构非常适合单片机、嵌入式、尤其是物联网领域而服务器等高性能领域, 目前主导还是IntelARM是统一编址的,大部分ARM m3 m4 m7 m0 ARM9 ARM11 A8 A9等都是32位架构32位ARM CPU 支持的内存少于4G通过CPU 地址总线来访问SOC的各种内部外设通过各自的SFR 编程访问这些SFR的访问方式类似于访问普通内存这叫IO与内存统一编址
8.2 ARM 是哈佛结构的
常见ARM 除ARM7外都是哈佛结构的哈佛结构也决定了 ARM逻辑程序使用实地址即 物理地址的链接比较麻烦必须使用复杂的链接脚本告知连接器如何组织程序对于OS之上的应用工作在虚拟地址之中则不需要考虑这么多