(从零开始的小白学习生活)
文章目录
课程内容
微处理器 | 指令系统 | 接口 | 应用与开发 |
---|---|---|---|
微处理器 Intel 8086处理器 Arm处理器 Arm Cortex-M4 | Arm处理器 1. 指令系统特点 2. 寻址方式 3. 核心指令 4. 汇编程序设计 | 1. 输入/输出接口基础 2. 接口设计 3. 异常和中断 4. 常用总线 | Cortex-M4编程 |
第一章
微处理器,微型计算机,微型计算机系统
- 微处理器:运算器+控制器,也称CPU
- 微型计算机(微机):总线把I/O接口、运算器、控制器(CPU)和RAM、ROM(存储器)组合
- 单片机 / 单板机 / 多板机
- 微型计算机系统:微机+外设设备+系统软件
三者关系用图片表示如下:
微处理器(CPU)
CPU的功能(微型计算机的核心部件)
- 进行算术和逻辑运算(算术逻辑单元ALU)
- 暂存少量数据(累加器AC、通用寄存器组RS、程序计数器PC、标志寄存器FR、堆栈指针SP)
- 对指令译码并执行(指令译码器ID、指令寄存器IR、控制逻辑阵列PLA)
- 与存储器、外设进行数据交换(地址寄存器MAR、数据寄存器MDR、总线BUS)
- 提供整个系统的定时和控制信号(总线BUS)
- 响应其他部件发出的中断请求(BUS)
各部件的功能
- 算术逻辑单元ALU:算术运算、逻辑运算(不同系统的ALU功能差别很大)
- 累加器AC & 通用寄存器组RS:保存数据
- 程序计数器PC:存放下一条指令的地址,并每次自动+1(控制程序执行的顺序)
- 堆栈指针SP:存放栈顶地址
- 标志寄存器FR:存放执行结果的特征、处理器状态
- 区分:指令寄存器IR、地址寄存器MAR、数据寄存器MDR
指令流水线
- 传统CPU执行程序的过程:取指令与执行指令串行进行
- 流水线处理方式:各个部件并行工作,若干条指令的不同执行阶段可以并行执行
- 好处
- 提高了执行效率
- 降低了对存储器的存取速度的要求
- 分类
- 二级流水线:取指令+执行指令
- 三级流水线:取指令+译码指令+执行指令
- 六级流水线:(1)取指令(2)译码指令(3)计算操作数地址
(4)取操作数(5)执行指令(6)写操作数
示意图:
- 备注
- 流水线的级别实质上代表了上图矩形之间重叠的程度
- 流水线级数并不是越多越好
超标量技术
- 标量CPU:具有一条通用的指令执行流水线的处理器
- 超标量CPU:具有两条及以上的指令执行流水线的处理器,可同时执行2条或2条以上指令的处理器
CISC 与 RISC 技术
CISC | RISC | |
---|---|---|
全称 | 复杂指令集计算机 | 精简指令集计算机 |
英文 | Complex Instruction Set Computer | Reduced Instruction Set Computer |
特点 | 硬件(处理器)复杂,软件简单,芯片成本高 | 硬件简单,软件(编译器)复杂,芯片成本高 |
高级语言支持 | 硬件完成 | 软件完成 |
指令集 | 指令集庞大,长度不同 | 简单的单周期指令,长度相同 |
寄存器数目 | 寄存器较少 | 寄存器较多 |
微型计算机
两大结构
- 冯诺依曼结构(即普林斯顿结构)
- 由运算器、存储器、控制器、输入和输出设备5大部分组成;
- 数据和程序都以二进制代码形式表示,且不加区别地存放在同一个存储器中,由统一总线访问,统一编址;
- 由控制器从存储器中依次取出指令并执行(存储程序原理)。
- 缺点:数据和指令的存取无法同时进行。
- 哈佛结构
- 指令和数据分开存储,便于并行处理;
- 独立的地址和数据总线。
微型计算机组成
冯诺依曼计算机结构示意图:
- 总线
- 计算机系统各功能模块间传递信息的公共通道;
- 一般由总线控制器、总线发送器、总线接收器以及一组导线组成;
- 在微型计算机中,根据总线的位置和应用场合,将总线分为:片内总线、片总线(局部总线)、内总线(系统总线)和外总线(通信总线)。
- 系统总线包括:
数据总线DB | 地址总线AB | 控制总线CB | |
---|---|---|---|
方向 | CPU与其他部件双向 | 由CPU单向送出 | CPU与其他部件双向 |
作用 | 传输数据 | 传输地址 | 传输控制信号 |
备注 | 条数是每个单元可以存储数字的位数 | 条数是可以寻址的单元的位数 |
- 通过与系统总线相连,各功能部件之间的关系 转变为 各部件面向系统总线的单一关系。
- 为系统功能的扩展、更新和产品的标准化、通用性提供了良好的基础。
- 存储器
- 按照存储器与CPU的关系,分为内存储器(主存)和外存储器(辅存)。
- 内存储器:CPU直接随机存取,速度快,体积小,集成度高,外部电路简单,容量较小;
- 外存储器:不能由CPU直接访问,速度慢,容量大,成本低,数据能长期保存。
- 为协调速度、容量、成本之间的关系,目前各类计算机广泛采用由高速缓冲存储器、内存储器和外存储器组成的 三级存储结构 。
- 分层的存储器系统:
- 0层:CPU内部存储器 速度最快,数量少
- 1层:高速缓冲存储器CACHE(1级,2级)静态RAM(SRAM)
- 2层:主存储器 动态RAM(DRAM)
- 3层:大容量的磁盘存储器,虚拟存储技术
- 4层:保留需长期存储暂时不用的数据,磁盘或光盘
- 输入/输出设备
- 除主机(CPU和内存)以外的其他机电或电子设备统称 外部设备/外围设备 ,简称 外设
- 由于外设的结构、工作原理、速度、信号形式等各不相同,所以不能直接挂接到系统总线上,而要通过输入/输出适配器,即I/O接口
微型计算机的分类
- 从结构形式来分:
- 单片机:将CPU、一定容量的存储器、I/O接口及时钟发生器集成在一块芯片上的单芯片式微型计算机,又被称为微控制器。
- 单板机:将微处理器、一定容量的存储器、输入/输出接口。简单的外设(键盘、LED显示器)、辅助设备通过总线装在一块印刷电路板上的微型计算机。
- 系统机(多板微型计算机):将单板机模块、存储器模块、I/O接口等模块组装在一块主机板上,通过主机板上的系统总线和各种外设适配器连接键盘、显示器、打印机、光驱、软硬盘驱动器,再配上电源……个人计算机就是多板微型计算机系统。
-
从数据总线宽度(即一次操作中所能传送的二进制位数的最大值)来分:4位、8位、32位、64位机。
-
从应用来分:通用机(适应性强)和专用机(有效、经济、快速)
微型计算机系统
微型计算机系统的性能指标
- 字长:字长越长,有效位数越多,精度越高。
- 主存容量
- 主频
- 运算速度
- 系统可靠性:平均无障碍时间、可维护性、可用性
- 系统兼容性
- 性能价格比
嵌入式系统及ARM处理器体系
嵌入式系统特征
- 软件硬件可裁剪
- 软件要求固件化
- 适用于对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统
ARM体系
从ARMv7架构开始以Cortex命名,并分成三个系列:
- Cortex-A 应用处理器:面向移动计算、智能手机、服务器等应用的高端处理器。
- Cortex-R 实时处理器
- Cortex-M 微控制器
计算机中数的表示与编码
十进制、二进制、八进制、十六进制的相互转换
注意事项:
- 二进制数字后面加B,八进制加O,十六进制加H,十进制加D或者不加;
- 数码的个数称为基数R,逢R进一;
- 小数点右移一位相当于乘基数R,反之相当于除以R。
数制之间的转换:
- R进制数转换为十进制数:“按权展,求并和”
- 十进制数转换为R进制数:
- 整数部分的转换:“除R取余”,先除出来的余数是低位,从下往上抄
- 小数部分的转换:“乘R取整”,先乘出来的整数是高位,从上往下抄
- 二进制与八进制、十六进制之间的转换:分割成三位和四位
带符号数的表示
真值:机器数所代表的实际数值,一般写成十进制数的形式。
原码:最高位是符号位,正数为0,负数为1,其余位为数值位,代表数字的绝对值,按照二进制的常规形式进行转换。
反码:正数的反码与原码相同,负数的反码为它的绝对值的正数的原码全部按位取反(包括符号位)。
补码:正数的补码与原码相同,负数的补码为它的反码+1。
由反码/补码求真值:
- 正数的原码=反码=补码=二进制数,直接按权展求并和即可得到真值。
- 负数反码求真值:若是负数(最高位为1),按位取反转换为十进制,得到绝对值,再对该十进制数取负即可。
- 负数补码求真值:
- 若是负数(最高位为1),按位取反转换为十进制,+1,得到绝对值,再对该十进制取负即可。(求反加一,加符号位)
- 即:[[x]补]补 = x
原码和补码的特点对比:
原码 | 补码 |
---|---|
(1)简单,直观; (2)0的表示不唯一,有+0和-0两种形式; (3)加减法运算复杂。 | (1)0的补码只有一个; (2)加减法运算方便; (3)机器字长为n,则补码表示的整数范围为-2^(n-1) ~ 2^(n-1)-1 |
注:对于八位来说,0的补码是00000000,-128的补码是10000000。
即:在反码的表示体系中,+0和-0是重合的,而补码将反码的表示范围向右整体平移了一个单位,11111111作为反码表示-0,作为补码却表示-1;10000000作为反码表示-127,作为补码却表示-128。
如下表所示:
真值 | 原码 | 反码 | 补码 |
---|---|---|---|
+0 | 00000000 | 00000000 | 00000000 |
-0 | 10000000 | 11111111 | 00000000 |
-1 | 10000001 | 11111110 | 11111111 |
+127 | 01111111 | 01111111 | 01111111 |
-127 | 11111111 | 10000000 | 10000001 |
-128 | / | / | 10000000 |
补码的运算:
- 原理:[A]补 + [B]补 = [A+B]补
- 注意只有正数的补码等于原码!!!
- 加完之后记得把补码还原成真值!!!
- 需要判断是否发生溢出:如果带符号数的运算超出了计算机可以表示的范围,产生不正确的答案,则发生溢出。只有同符号的数相加才会发生溢出。
- 正向溢出和负向溢出
- 注:溢出的原因是计算机的位长限制,当数值位的进位达到符号位时,若把多出来的最左边一位作为符号位,和仍然是正确的答案。
- 可以通过扩展数的位数防止溢出。正数扩展,高位全部加0,负数扩展,高位全部加1。
八位纯小数的补码:
由下表可见规律:
真值 | 原码 | 补码 |
---|---|---|
+12 | 00001100 | 00001100 |
+12/128 | 0.0001100 | |
-12 | 10001100 | 11110100 |
-12/128 | 1.1110100 |
即:m除以2^7的补码,等于m的补码在符号位右边加一个小数点,即:整数部分的个位是符号位。
补码的表示范围是:-1 ~ +127/128
移码:
- 又称:余码、增码或偏移二进制码。
- 与补码的关系:符号位相反,数值位相同。
数的定点表示与浮点表示(针对小数)
- 定点表示:小数点的位置是固定不变的。运算简便,但表示范围小。
- 浮点表示:小数点的位置是浮动的。表示范围大,精度高,但运算复杂,成本高。
原理:一个二进制数可以表示为一个纯整数/小数与一个2的整数次幂的乘积的形式,即N = (2 ^ p) * S(类似于十进制的科学计数法)。其中S表示了N的全部有效数字,称之为N的尾数;P指明了小数点的位置,称之为N的阶码。2称为阶码的底。
- 定点:P=0
- 浮点:P≠0,且可在一定范围内取值。二进制浮点表示:B = ±S * (2 ^ ±P),在机器中表示的形式为:
- 浮点数常采用规格化表示法:使数值最高位为有效数值位。对于原码表示的尾数,使其最高位为1;对于补码表示的尾数,使尾数最高数值位与符号位不同。
- 浮点数的精度取决于尾数的位数,数值范围取决于阶码的位数。
大小端模式
- 小端模式:内存的低地址存数据的低位,内存的高地址存数据的高位
- 大端模式:内存的高地址存数据的低位,内存的低地址存数据的高位
- 不同端模式的处理器在进行数据传递时必须要考虑端模式的不同
- ARM可以自由设置大端或者小端存储
- 在网络上传输数据时,TCP/IP协议规定了在网络上必须采用网络字节顺序,也就是大端模式
计算机中常用的编码
BCD码:又称“二-十进制码”,用4位二进制数表示1位十进制数。
BCD码与二进制数之间不能直接进行转换,必须把BCD码转换为十进制数之后,再转换为二进制数。反之同样。
ASCII码:标准ASCII码采用7位编码,表示128种字符。最高位(第8位)可以加奇偶校验位。
汉字的编码:
-
汉字信息在系统内传送的过程就是汉字代码转换的过程。
-
汉字输入码(外码)、汉字内部码(内码)、汉字输出码(字形码)
-
汉字交换码(国标码字符集:GB2312-80)
-
国标码字符集中的任何一个图形、符号及汉字都是用两个7位字节表示的。
-
内码是将国标码两字节的最高位都置1形成的,以便与西文ASCII码相区别。
-
例如:00110000 00100001->10110000 10100001