MCU的架构

MCU的架构主要包含三部分,CPU,存储器以及外设。
其中对于CPU的学习,主要需要掌握如下几个方面:

  1. 寄存器组
  2. 指令
  3. 中断
  4. 时钟

CPU的一个总体架构图:


在上图中,可以清晰地看到指令寄存器,控制单元、寄存器组、逻辑运算单元、程序状态寄存器,以及指令存储单元,数据存储单元。
下面对上述几个部分展开详细论述。

算术逻辑运算单元


算术逻辑单元英文缩写为ALU,是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由与门和或门组成的算术逻辑单元,主要功能是进行二位元的算术运算,加减乘(不包含除)。
其中算术逻辑运算单元主要包含如下四个要素:

  1. 两个输入数据 ———— operands(操作数)
  2. 一个指令 ———— operation(运算)
  3. 一个输出数据 ———— result(运算结果)
  4. 状态(Status)———— flag(标志位)

寄存器

逻辑运算单元操作数的来源

在进行简单的运算的时候,可以通过寄存器组提供操作数进行运算,具体过程如下图所示。

逻辑运算单元运算结果的存储

寄存器组除了上述提供操作数的来源以外,还具备将逻辑运算单元的运算结果存储到寄存器组的功能。示意图入下图所示。

因此对于寄存器组来讲,它可以用于临时保存两个操作数的运算结果,同时也能够提供操作数给ALU进行运算。除此之外,
任何CPU都包含若干通用以及专用寄存器
寄存器的数目以及宽度是衡量cpu的重要指标

数据存储器

逻辑运算单元操作数的来源

在CPU进行计算的时候,往往不能进行简单的运算,所以如果单单靠寄存器组无法保存比较大的数据,所以引入数据存储器的概念,需要注意的一点是,存储器不是CPU的组成部分,对存储器的访问要比对寄存器的访问慢很多。总体来说,操作数可以从寄存器中来,也可以从数据存储器中来。

逻辑运算单元运算结果的存储

数据存储器除了能够为逻辑运算单元提供操作数以外,还能够存储逻辑运算单元的运算结果。下图中的双向箭头即表示既可以从此处获取数据,也可以将计算结果存储到这里。而此处存储于数据存储器的逻辑运算单元的运算结果和存储于寄存器组中的逻辑运算单元结果的具有一定的区别。用一句易于理解的话来讲:
寄存器中存储的结果就像考试过程中在草稿纸中算出的一步的结果,但这个结果还不是最终答案,还不能誊抄至试卷上,还需要进一步计算
存储于数据存储器中的值相对于存储于寄存器中的值,可以比喻为是计算的最终结果,可以誊抄至试卷上结果

控制单元

上述分析了操作数的来源,逻辑运算单元结果的存储。两种过程在运行的过程中,都可能来自不同的对象,CPU在运行的过程中要有条不紊的执行这些操作,所需要的一个机制就是控制单元。如图所示就是关于控制单元的一个示意图。

从上图可以清晰的看到从控制单元出来的信号分别流向不同的开关,这些信号线也就控制着这些数据的流向,从而也就保证了CPU有条不紊地工作。而从上图还能得到的一个信息是控制单元还有一个输入量,而这个输入量正是指令寄存器中的若干条指令。因此,总体来说,控制单元主要负责接收指令寄存器的值,并相应的产生控制信号控制数据的流向,从而保证了CPU的工作。因此总结下俩,控制单元只要有以下两种功能。

  1. 接收指令寄存器中指令
  2. 产生相应的开关信号

在接收寄存器中的指令并给出相应的开关信号的过程中,用专业术语来描述,这个过程就是指令解析,产生相应的开关信号的过程也可以看做是数据流向。指令解析和数据流向的简要说明如下所示。

  1. 指令解析:分析改指令需要执行什么操作
  2. 数据流向:确定该指令用到的操作数来源和产生结果的去向

在CPU中,从哪里取得数以及说是将数以怎样的方式送到目标地址的这些过程也可以用一专业术语描述,即寻址方式,不同的CPU具有不同的寻址方式。
最后,对于控制器可以总结如下:

控制单元将一条特定的指令解析为对存储器,寄存器,逻辑运算单元的控制

获取指令

在讲述了上述过程中,控制单元接收指令,并对指令进行解析。那指令从哪里来,又是如何一条一条运行的。在这里就要有必要引出一下

                      程序是一切有序指令的集合

程序由指令序列构成,保存在程序存储器中。这些指令序列“依次”进入CPU中去执行。
而CPU是如何有序执行程序的,也就是如何有序的执行一系列指令呢?这里就要引入另一个寄存器的概念:

                         PC指针寄存器(程序计数器)


PC指针寄存器的功能主要是:

  1. 下一条待执行的指令地址保存在PC寄存器中
  2. 指令被取出后,PC更新指向下一条指令

总结

上述就是关于CPU核心部分的讲解,最后总结如下:
程序是一系列有序指令的集合,程序在CPU中的运行也就是一条条指令的有序运行。通过在一个时钟信号的驱动下,存储器中的指令被一条一条地送往控制单元进行解析,依据解析得到的信号控制CPU的运行,同时PC指针寄存器永远指向下一条待执行的指令,这一机制也就保证了指令的有序运行
通过控制单元解析得到的信息,从而决定CPU是从存储器还是从寄存器中获取操作数,当获取到操作数之后,操作数会被送往ALU进行计算,根据解析得到的信息,ALU计算得到的结果也会被送往寄存器或者存储器中进行存储

CPU的运行机制——————ARM微控制器及嵌入式系统(清华大学慕课记录)相关推荐

  1. 复位、时钟、存储器和总线————————ARM微控制器与嵌入式系统清华大学慕课记录

    复位 初始化微控制器内部电路 将所有寄存器恢复成默认值 确认MCU的工作模式 禁止全局中断 关闭外设 将IO设置为高阻输入状态 等待时钟趋于稳定 从固定地址取得复位向量并开始执行 中断向量表 中断向量 ...

  2. 清华大学视频:ARM微控制器与嵌入式系统

    清华大学视频课件:ARM微控制器与嵌入式系统(2017) 本课程课程要求学生具备C语言编程基础,在课程中逐步讲解ARM微控制器(单片机)与嵌入式系统,面向实践安排教学,鼓励动手实践和自由创新,适合想参 ...

  3. 清华大学视频课件:ARM微控制器与嵌入式系统

    清华大学视频课件:ARM微控制器与嵌入式系统(2017春) 直接点击博客网页连接就可以进入下载页面,因为是免费分享,点击后可能会有广告,请量解,点击普通下载. 将网址复制粘贴到浏览器地址栏,因为是免费 ...

  4. 课程笔记 -- 《ARM微控制器与嵌入式系统》

    "人生是如此简单,而又是这般辉煌." 村上春树 --<如果我们的语言是威士忌> 推荐 最近看了清华大学曾鸣老师的嵌入式开发入门课程<ARM微控制器与嵌入式系统&g ...

  5. ARM Cortex -M 体系结构————————ARM微控制器与嵌入式系统(清华大学慕课记录)

    ARM的发展过程 对于ARM公司来讲,ARM公司只做CPU设计,采用出售IP的方式运营,半导体产商无需自己设计CPU,是生产关系的革命,提高了生产力.下面这张图ARM核的多个系列,我们可以看到ARM从 ...

  6. ARM微控制器与嵌入式系统 基础知识

    学习地址 2.1 基础概念 机械计算 图灵 :一个计算的问题一定可以拆解为有限个计算的集合(可计算性) 01 冯诺依曼结构:运算器.控制器.存储器.输入设备.输出设备 模拟信号 连续 数字信号 离散 ...

  7. ARM微控制器与嵌入式系统

    文章目录 图灵机 编码Encoding ASCII编码 从晶体管到概念CPU 通用CPU 微控制器MCU ARM Cortex-M指令集 图灵机 可计算性(calculability)是指一个实际问题 ...

  8. 堆栈的概念————————ARM微控制器与嵌入式系统(清华大学慕课记录)

    堆栈.堆.栈的概念 堆:堆可以被看成是一棵树.堆是在程序运行时,申请某个大小的存储空间.即动态分配内存,对其访问和对一般内存的访问没有区别. 栈:栈是一种运算受限的线性表.仅允许在栈的一端进行插入和删 ...

  9. 清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(二)

    I2C(Inter IC Bus)的通讯数据帧: SCL线无方向区分,SDA线上有数据的流动方向.上图中灰色的代表的是主机向从机发送数据,此时SDA线的电平控制权由主机掌控,从机只能监听该线上的电平状 ...

最新文章

  1. Ubuntu16.04.1 安装Nginx
  2. 网页解析:如何获得网页源码中嵌套的标签。
  3. 德州农工大学 计算机排名,德州农工大学美国大学排名及专业排名汇总(USNEWS美国大学排名版)...
  4. 解决问题的策略-分而治之
  5. 人工智能第二课:认知服务和机器人框架探秘
  6. 2017.9.6 外星人 思考记录
  7. 【git私服推送文件出现的问题】refusing to update checked out branch: refs/heads/master
  8. 学习笔记-数据结构与算法之线性表
  9. C/C++ 格式化读取和读取一行
  10. 利润表模板excel_德勤HR:请1小时内,用Excel搭建哔哩哔哩财务估值模型
  11. (tensorflow2.1.0安装教程) 对应Anaconda3(对应python3.7)+cuda10.1+cudnn7.6.5+Pycharm 网盘 链接
  12. 平面设计专业介绍,平面设计专业有哪些课程
  13. ubuntu18.04+opencv3.4.10+opencv3.4.10contrib+LSD使用
  14. PAT1062 最简分数
  15. hazelcast java_Hazelcast
  16. Appium自动化测试元素定位方式
  17. 导出excel中文文件名乱码问题
  18. 《武则天正传》读后感
  19. matlab偏最小二乘截距,matlab代写偏最小二乘回归(PLSR)和主成分回归(PCR)
  20. 头发保护 - 二硫化硒洗剂

热门文章

  1. 【Office办公软件考试试题题目】Office 办公自动化(XHKC-ZY-002)
  2. 多媒体技术就是利用计算机对,2016年9月计算机应用基础统考题库 计算机多媒体技术...
  3. 简单快捷通用导出word功能
  4. 关于win7下魔兽争霸不能全屏的问题
  5. 基于腾讯 x5 开源库,提高 webView 开发效率,大概要节约你百分之六十的时间成本。该案例支持处理 js 的交互逻辑且无耦合、同时暴露进度条加载进度、可以监听异常 error 状态、支持视频播放
  6. 技术总监该具备的 道,法,术,器,势【非广告】
  7. 北京实时公交查询微信小程序
  8. php 开启 scandir,解决PHP环境Warning: scandir()问题
  9. matlab实验报告井字棋,一字棋实验报告
  10. do sb suggest to_suggest to do 和 suggest doing 的区别