一、芯片的架构模式
冯诺依曼架构
自己理解,不需要执行的程序存储在硬盘/FLASH中,需要执行的程序则读取到内存中(c程序存储的表),然后cpu进行运算。cpu执行程序都是与ram操作,而不需要rom(flash)。
5. 哈佛架构
这个架构主要是单片机。
cpu和ram、rom之间都要打交道。
这两种架构分别有哪些芯片?
哈佛架构主要是单片机(MCU)、冯诺依曼架构主要是cortex-a9的三星exynos-4412、麒麟970等芯片,他们往往都有很大的内存(DDR)。
两种混合架构
平时执行的程序使用冯诺依曼架构,(进程)也就是执行程序的程序存储放在DDR上,不执行时程序放在FLASH中。
另外内部有一个很小的ram和rom,用来执行启动程序,上电就执行启动程序。
有了系统后就可以实现进程调度可以实现多进程、多线程。
二、计算机组成
一、输入设备
输入设备的任务是把人们编好的程序和原始数据送到计算机中去,并且将它们转换成计算机内部所能识别和接受的信息方式。常用的有键盘、鼠标、扫描仪等。
二、输出设备
输出设备的任务是将计算机的处理结果以人或其他设备所能接受的形式送出计算机。常用的有显示器、打印机、绘图仪等。
三、存储器、CPU
四、计算机的总线结构
将各个硬件按某种方式连接起来,就构成了计算机硬件系统。
总线系统包含三种总线,分别是数据总线 DB(data Bus)、地址总线 AD(address Bus)和控制总线 CB(control Bus)。
数据总线,专门用来传输数据的。数据总线的位宽是微型计算机的一个很重要的指标,通常与微处理的位数一致。例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。
地址总线,专门用来传输地址的。它还决定了计算机可寻址的大小。
控制总线,用来传输控制信号和时序信号。例如cpu给存储设备和IO接口的 读/写信号、中断响应信号、片选信号等;还有其他设备反馈给cpu的中断请求信号、复位信号、总线请求信号、限备就绪信号等。控制总线的具体情况取决于CPU。
三、CPU的工作原理
cpu内部主要包括控制器和运算器。
1) 存储器
存储器是用来存放程序和数据的部件,它是一个记忆装置,也是计算机能够实现“存储程序控制”的基础。
包括:Cache、主存储器、辅助存储器。
「高速缓冲存储器(Cache)」 CPU可以直接访问,用来存放当前正在执行的程序中的活跃部分,以便快速地向CPU提供指令和数据。
「主存储器」 可由CPU直接访问,用来存放当前正在执行的程序和数据。
「辅助存储器」 设置在主机外部,CPU不能直接访问,用来存放暂时不参与运行的程序和数据,需要时再传送到主存。
2) 运算器
运算器的核心是算术逻辑运算部件ALU,还包括若干个寄存器(如累加寄存器、暂存器等)。
ALU可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。
相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。
3) 控制器
控制单元是整个CPU的指挥控制中心,由程序计数器 PC(program counter)、指令寄存器 IR(Instruction Register)、指令译码器 ID(Instruction Decoder)、操作控制器 OC (Operation Controller)等组成。
它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。
4) CPU的运行原理总结
控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指令读到指令寄存器进行译码。
对于执行指令过程中所需要用到的数据,会将数据地址也送到地址总线,然后CPU把数据读到CPU的内部存储单元(就是内部寄存器)暂存起来,最后命令运算单元对数据进行处理加工。
5) 指令执行过程
一条指令执行的过过程主要分为以下4步:
1、取指令,cpu的控制器根据指令计数器中的指令地址,将指令从内存中读取到指令寄存器中。
2、译指,指令译码器分析指令寄存器中的指令,并决定何种操作(就是指令里的操作码)。
3、执行,操作控制器根据分析后的指令按一定时序执行;执行分两个阶段,“取操作数”和“进行运算”。
4、修改指令计数器,指向下一条指令的地址。
6) ARM技术特征
ARM的成功,一方面得益于它独特的公司运作模式,另一方面,当然来自于ARM处理器自身的优良性能。作为一种先进的RISC处理器,ARM处理器有如下特点。
- 体积小、低功耗、低成本、高性能。
- 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件。
- 大量使用寄存器,指令执行速度更快。
- 大多数数据操作都在寄存器中完成。
- 寻址方式灵活简单,执行效率高。
- 指令长度固定。此处有必要讲解一下RISC微处理器的概念及其与CISC微处理器的区别。
中间还有arm的发展史(原文)
7)ARM指令
ARM指令是RISC(Reduced Instruction Set Computing),即精简执令运算集,RISC把着眼点放在如何使计算机的结构更加简单和如何使计算机的处理速度更加快速上。RISC选取了使用频率最高的简单指令,抛弃复杂指令,固定指令长度,减少指令格式和寻址方式,不用或少用微码控制。这些特点使得RISC非常适合嵌入式处理器。
RISC可以实现以相对少的晶体管设计出极快的微处理器。通过研究发现,只有大约20%的指令是最常用的,把处理器能执行的指令数目减少到最低限度,对它们的执行过行优化,就可以极大地提高处理的工作速度。
一般来说,RISC处理器比同等的CISC(Complex Instruction Set Computer,复杂指令集计算机)处理器要快50%-75%,同时RISC处理器更容易设计和纠错。
一般指令的格式如下:
「操作码:」 操作码就是汇编语言里的mov,add,jmp等符号码;
「操作数地址:」 用于说明该指令需要的操作数所在的地方,是在内存里还是在CPU的内部寄存器里。
实际上的机器指令格式远比这个复杂,下图是常用的ARM指令格式:
四、SOC
SOC: 系统芯片是一个将计算机或其他电子系统集成单一芯片的集成电路。系统芯片可以处理数字信号、模拟信号、混合信号甚至更高频率的信号。
从狭义角度讲,它是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上; 从广义角度讲, SoC是一个微小型系统,如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的系统。
1. ARM base Soc
嵌入式系统中常常要使用系统芯片。系统芯片的集成规模很大,一般达到几百万门到几千万门。SOC相对比较灵活,它可以将arm架构的处理器与一些专用的外围芯片集成到一起,组成一个系统。
下图是一个典型的基于ARM架构的SOC架构图。
一个典型的基于ARM的Soc架构通常包含以下几个主要部件:
- ARM Processor core 处理器核
- Clocks and Reset Controller 时钟和复位电路
- Interrupt Controller 中断控制器
- ARM Propherals 外部设备
- GPIO
- DMA Port
- External Memory Interface 外部内存接口
- On chip RAM 偏上RAM
- AHB、APB总线
该架构是我们理解汇编指令和编写裸机程序的基石。
当我们拿到一个新的SOC的datasheet,首先就要根据这个架构,来查看SOC的**「RAM空间、时钟频率、包括哪些外部设备的控制器,各个外设控制器的操作原理,各个外设对GPIO的引脚复用情况、各个控制器的SFR地址、中断控制器是如何管理众多中断源的等等」。**