【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器

  • 学习交流加(可免费帮忙下载CSDN资源):
  • 个人微信: liu1126137994
  • 学习交流资源分享qq群1(已满): 962535112
  • 学习交流资源分享qq群2: 780902027

深入浅出处理器这几篇文章可能你觉得对软件开发用处不大,这个看个人理解吧,若是想贯通上下,知其然还要知其所以然的话,或许还是有点用处的。学习处理器的篇章非常少,花一点时间学一下也无所谓的!

在我之前还是做硬件的时候,我一直不理解微处理器和微控制器的区别。
之前写过一篇文章,讲X86处理器的,可以点击查看:X86处理器

文章目录

  • 1、 处理器
    • 1.1、寄存器分类
    • 1.2、处理器中的关键寄存器
    • 1.3、处理器的IO操作
  • 2、硬件设计的关键
    • 3、处理器的启动过程
  • 4、总结

1、 处理器

处理器分为两种:微处理器和微控制器。

微处理器与微控制器有以下区别:

  • 微处理器

    – CPU

  • 微控制器

    –CPU + 片内内存 + 片内外设

注意:

  1. 微控制器具有成本低,功耗低等优点,常用于嵌入式系统设计
  2. 对于软件工程师而言,微处理器与微控制器没有任何区别

其中,CPU与外设(包括微控制器的片内外设与片外外设)都有寄存器,但是它们的用处却是非常的不一样。之前写过的X86处理器那篇文章中,已经讲了一些X86处理器的寄存器的用处,大致就是存储数据的,但是微控制器上的外设中的寄存器,不是用来存储数据的,而是用来控制外设的行为和工作方式的。

1.1、寄存器分类

  1. CPU寄存器

    – 专用指令执行,数据运算, 变量处理,参数传递

  2. 外设寄存器

    – 用于控制外设的行为和工作方式、

    –寄存器值的配置需要查看相应的硬件手册

1.2、处理器中的关键寄存器

今天我们只了解两个寄存器:PC程序计数器寄存器,SP栈指针寄存器。

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

    – PC实际上就是代码中的每一条指令的地址,这个地址刚好就是内存中代码段中的偏移地址

    –每执行一条指令,PC中的值,就会发生变化

    – PC始终保存着一条指令,这条指令就是CPU即将要执行的那条指令(下一条要执行的指令)

  • SP栈指针(Stack Pointer)

    –SP寄存器,始终保存着栈空间的栈顶地址,实现LIFO特性

    – SP栈指针用于保护函数调用的现场,比如中断断点,通用寄存器,函数的返回值等。具体如何保护,在以后的文章中会讲解

具体使用方法,会在后面的文章中讲解,今天暂时知道这两个寄存器的概念与用法。

1.3、处理器的IO操作

众所周知,一台电脑有很多外设,USB,声卡,显卡等,这些都是外设。那么处理器是如何与外设进行数据通信的呢?

处理器与外设之间的通信通过IO操作完成。

那么既然有IO操作,肯定是要有CPU去寻址的过程,在CPU所能寻址的范围内,找到外设的地址,对该地址进行读写就可以与外设进行通信。那么外设如何通过IO将自己的地址空间映射给CPU的寻址空间呢?

  • 通过内存映射IO空间

    – 外设通过精密的硬件链接映射到CPU的寻址空间。

    – 然后CPU通过地址访问与外设进行数据读写访问

  • 独立的IO空间

    –外设独立于CPU的地址空间,无法通过CPU的寻址来与外设进行通信

    – 此时,需要使用专用的指令与外设进行通信

上面是CPU与外设的基本通信方式,我们不必纠结于具体的硬件实现,毕竟我们是做软件开发。

那么,CPU现在可以与外设进行通信了,那么CPU如何操作外设呢?

  1. 通过IO端口配置控制寄存器
  2. 通过IO端口读取数据寄存器

从软件工程师的角度来看,只要对不同的IO端口读写,就可以操作外设;读写IO端口时候的具体值和意义需要查询具体的硬件手册。

2、硬件设计的关键

上一节我们知道了CPU是如何与外设打交道的。那么在硬件上,大概设怎样的设计呢?

首先CPU与外设之间要有地址总线与数据总线,然后需要有一个片选信号用来确保是否“启动”该外设。

在这里插入图片描述

通过具体的硬件设计,可以使地址总线上的值在某个范围时,片选信号为“真”,即:使能连接的外设,从而读取相应地址中的数据!!!

具体的硬件如何设计不去细究,这里知道大概原理即可,

3、处理器的启动过程

在一开始,我们的电脑是没有操作系统的,那么处理器是如何启动的呢?

  • 处理器启动后,PC(IP)寄存器固话了一个默认值
  • PC默认值决定了CPU上电后第一条执行指令在哪
  • 第一条执行指令,是CPU的启动程序BIOS(BIOS以后讲解)

下图为CPU简易的启动过程
在这里插入图片描述

大致了解一下BIOS:

固化于硬件中的一个程序,用于初始化硬件,然后将指令指针寄存器PC(IP)指向主引导扇区程序,主引导扇区程序再来引导操作系统内核的自举程序,然后启动操作系统。(后期会专门学习操作系统,现在暂时不用了解)

4、总结

基础不牢,地动山摇。上来就提倡看各种源码的,不是大牛就是菜鸡。大牛很少,菜鸡很多。

本系列文章几乎全部参考狄泰软件学院相关课程,想学习的可以加群,
群聊号码:199546072

学习探讨加个人:
qq:1126137994
微信:liu1126137994

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 上一篇文章我们学习了微处理器与微控制器的区别。点击链接查看上一篇文章的内容:微处理器与微控制器 本篇文章我们学习中断的概念与意义。…

推荐学习-数据结构与算法之美

推荐一个学习资源:数据结构与算法之美。主要包括以下几个学习内容: 20个经典数据结构与算法100个真实项目场景案例文科生都能看懂的算法手绘图解轻松搞定BAT的面试通关秘籍 作者:王争 前谷歌工程师 内容很强。扫描我的二维码买的话&#x…

【软件开发底层知识修炼】三 深入浅出处理器之三 内存管理与内存管理单元(MMU)

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 上一篇文章学习了中断的概念与意义,以及中断的应用-断点调试原理。点击链接复习上一篇文章:中断的概念与意义 本片文章继续学…

hbase思维导图

持续更新中 hbase思维导图 感谢分享1. hbase 概述2. hbase 数据模型3. hbase 架构4. hbase 的读写流程5. hbase 优化1. hbase 概述 2. hbase 数据模型 3. hbase 架构 4. hbase 的读写流程 5. hbase 优化

安卓从入门到进阶推荐学习方法与书籍整理(pdf)

前言:技术书阅读方法论 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用。 对于每一章的知识,先阅读标题&…

SharePoint中的权限体系

1.MOSS中的权限结构 MOSS中的权限结构主要有三部分:网站权限,列表权限,个人权限。 网站权限由18种如下图: 列表权限由12种,如下图: 个人权限由三种,如下图: 2.权限级别 上面提供…

MobaXterm_Personal_20.1最简单方式链接阿里云服务器

MobaXterm_Personal_20.1链接购买的阿里云服务器1.登录到阿里云首页2.阿里云首页3. 找到 服务器实例4. 重置密码5. 配置 MobaXterm_Personal_20.15.1 MobaXterm_Personal_20.1介绍6. 输入重置的密码1.登录到阿里云首页 2.阿里云首页 3. 找到 服务器实例 4. 重置密码 5. 配置 Mo…

机器学习和python学习之路精心整理技术书从入门到进阶

“机器学习/深度学习并不需要很多数学基础!”也许你在不同的地方听过不少类似这样的说法。对于鼓励数学基础不好的同学入坑机器学习来说,这句话是挺不错的。不过,机器学习理论是与统计学、概率论、计算机科学、算法等方面交叉的领…

FusionChart完全入门手册8

动画样式类型 FusionCharts做得最好的事情之一就是图表动画序列,这是用户静静乐道的。默认情况下,FusionCharts仅在数据绘制(柱状图、饼图、折线图等)时候使用动画。但是FusionCharts V3不限制你的想象力。 使用动画样式,你可以…

算法与数据结构+一点点ACM从入门到进阶吐血整理推荐书单(珍藏版)

学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2: 780902027 前言:技术书阅读方法论…

工作中使用的工具

工作中使用的工具分享一下后续持续更新

【软件开发底层知识修炼】四 深入浅出处理器之四 结合高速缓存以及TLB与虚拟内存

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 文章目录0、回顾1、高速缓存(Cache)的引入2、利用TLB加速地址翻译3、Cache与物理内存是如何映射的3.1、直接映射法&#xff1a…

研发中会使用到的工具

研发中会使用到的工具分享一下后续持续更新

【软件开发底层知识修炼】五 gcc-C语言编译器

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 文章目录1、GCC与gcc2、gcc的幕后工作3、实用的gcc选项3.1、预处理选项-解决宏错误3.2、-S参数-辅助编写汇编程序的好方法3.3、获取系统头文件路径3.4…

思维模型分享

思维模型1.思维建模1.1 模型的用途1.2构建模型的3种方法1.3多样性预测定理1.4分类模型1.5 变差模型1.5.1 解释变差的百分比1.6 模型误差分解定理1.7 多模型思维1.8 对人类行为建模1.8.1 理性行为者模式2.模型思维2.1 正态分布2.2中心极限定理2.2.1 平方根法则2.2.2 检验显著性2…

在工程中最常用的 vim使用技巧

学习交流加(可免费帮忙下载CSDN资源):个人微信: liu1126137994学习交流资源分享qq群1(已满): 962535112学习交流资源分享qq群2: 780902027 文章目录1、vim编辑常用快捷键2、文件索引…

动态规划过程

动态规划过程应用背包问题:分享一下 有一个背包,容量是4磅,现有如下产品 1)要求达到的目标为装入的背包的总价值最大,并且要求重量不能超出 2) 要求转入的物品不能重复 思路分析:算法其实是模型建立的过程 …

【剑指offer - C++/Java】5、用两个栈实现队列

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 牛客网题目链接:用两个栈实现队列 文章目录1、题目分析2、代码Java代码:C代码3、总结题目描述: 用两个栈来实现一…

【剑指offer - C++/Java】6、旋转数组的最小数字

题目链接:旋转数组的最小数字 文章目录1、题目描述2、题目分析3、代码3.1 Java代码3.2、C代码4、总结1、题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小…