0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式开发之cpu是数字处理系统中的一个重要环节

m3eY_edn_china 来源:未知 作者:李倩 2018-04-09 08:50 次阅读

cpu是数字处理系统中的一个重要环节。在我看来,单片机微处理器dsp都可以称作是cpu,只是它们的侧重点有所不同罢了。具体来说,传统意义上的单片机更偏重于嵌入式的计算,比如说我们经常使用的51、avr、arm芯片中不仅仅含有了运算和控制功能,它还涵盖了定时器、串口、并口、usbi2c总线等外部资源。cpu一般只是作为dsp的一个核存在,它通常还会包含另外一个核,专门用于数字信号的处理工作。而微处理器,也就是我们经常说的pc上的处理器,它的工作比较单一,专注于计算和控制功能的处理,因此一般来说在这方面的性能上面,单片机和dsp都是不能和它相比的,有了南桥芯片和北桥芯片的帮助,pc的微处理器就可以专注于自己的本职工作了,效率上面也会有一个很大的提高。

对于朋友们来说,生活中遇到的最多的cpu其实是x86的cpu。当然,如果有哪位朋友喜欢apple之类的玩具,也会知道一些arm的相关事情。剩下的就是一些专用领域的cpu了,比如说在通信行业用到的比较多的powerpc芯片,在高性能服务器用的到的sun sparc芯片,在科学计算领域使用到的mips芯片。所以,无论遇到什么芯片,对于应用层开发的朋友都是一样的,只是在一些小地方需要还有一些注意的地方。比如说:

(1)数据的对齐方式

(2)数据的字节序问题

(3)函数参数的压栈问题

(4)cpu的乱序执行问题

(5)cpu中cache和内存一致性的问题

当然,如果我们所要思考只是简单的应用层设计,考虑到这些内容本身已经实属不易了。然而,我们考虑的是如何设计嵌入式操作系统的问题,所以接下来还要看看一般cpu下面都包含了哪些内容。这样,只要熟练掌握了一款cpu的设计和实现,对其他cpu的知识也会触类旁通了。

任何一款cpu,不管是完成的功能是什么样的,通常都会有这样一些基本设计:

1.寄存器

堆栈寄存器

pc寄存器

状态寄存器

运算寄存器

寄存器是cpu内部的基本资源。不管cpu的代码执行到什么时候,这些资源都是共享的,所以在cpu发生中断、函数调用、线程切换的时候,都需要对这些寄存器进行保护,常用的基本措施就是把它们保存到临时堆栈当中去。堆栈寄存器记录了当前堆栈使用到了什么地方,pc寄存器则记录当前代码跑到了什么地方,下一条指令在什么地方等。状态寄存器则保存了当前cpu的执行情况,包括计算有没有溢出、中断是关还是开、有没有o除数异常等等。至于运算寄存器就因cpu而异了,有的cpu寄存器比较少,比如说x86的寄存器;有的cpu寄存器就比较多,比如说powerpc。运算寄存器的用途很多,比如说数据访问、计算、移位、返回计算结果等等。

2.指令集

寻址指令

数学运算指令

逻辑运算指令

软中断指令

跳转指令

远程调用指令

io访问指令

栈操作指令

指令集在某种程度上直接决定了某一种cpu的类型。就像intelamd生产的cpu虽然有差别,但是它们的cpu使用的都是x86的指令集,而marwell、samsung和高通生产的cpu当然也不同,但是它们的指令集都是arm指令集。所以,如果软件在marwell上跑,一般来说也可以在Samsung上跑起来。指令集很复杂,内容很多。但是通常来说,上面这些内容都是cpu所必须要完成的几种指令。当然重中之重的还是中断和栈处理指令。

3.中断、异常处理机制

不管是什么cpu,中断部分的内容都是少不了的。试想一想,如果一颗cpu只知道不停地运行,那么它的执行效率实际上是很低的。拥有了中断的cpu不仅使得cpu可以和更多的外设io打交道,还能极大地提高自身运行的效率。不同的cpu处理中断的方法其实都差不多,在整个cpu的地址空间里面,通常在低地址区域会有一张中断向量表,表中每一项记录了每一个中断对应的处理函数。

所以,只要中断发生时,cpu就会首先将下一条pc地址压入堆栈,然后跳转到中断向量表中对应的中断地址处执行的相应的处理函数。这个过程是cpu自动完成的,不需要我们关心。这样对我们来说,它和cpu中的函数调用其实没有什么区别。等待中断处理结束后,我们使用ret指令返回到之前压入的那个ip地址处,继续下面的代码。整个过程就好像中断根本没有发生过一样。

所以,对于cpu的了解其实主要就是对寄存器、指令集和中断的了解。有了对中断和堆栈的深入理解,其实也就没有什么困难的了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10552

    浏览量

    207802
  • 嵌入式开发
    +关注

    关注

    18

    文章

    989

    浏览量

    47167

原文标题:嵌入式开发之CPU的那些事...

文章出处:【微信号:edn-china,微信公众号:EDN电子技术设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    大学生应该如何学习嵌入式开发

    嵌入式开发给出点建议: :练好基本功嵌入式系统专业是综合了计算机硬件技术,计算机软件技术以及电子电路技术的门综合学科,所涉及的内涵和知识
    发表于 09-29 14:19

    嵌入式开发Qt应用视频教程分享!

    嵌入式开发Qt应用也是我们在学习嵌入式重要
    发表于 01-03 14:10

    嵌入式是什么? 嵌入式开发是什么意思?

    嵌入式。   嵌入式是什么意思 什么是嵌入式开发:  嵌入式开发就是指在各种微型处理器运行
    发表于 07-26 15:58

    嵌入式处理系统

    嵌入式处理系统 嵌入式系统概述 嵌入式处理系统设计 并行计算机的组织结构模型
    发表于 02-25 16:53 43次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>处理系统</b>

    嵌入式开发

    嵌入式开发就是指在嵌入式操作系统下进行开发嵌入式Linux是以Linux为基础的嵌入式作业
    发表于 12-20 13:21
    <b class='flag-5'>嵌入式开发</b>

    嵌入式开发CPU大端和小端模式的详细资料和程序分析讲解

    嵌入式开发,大端(Big-endian)和小端(Little-endian)是重要的概念。
    发表于 05-06 18:23 0次下载
    <b class='flag-5'>嵌入式开发</b><b class='flag-5'>中</b><b class='flag-5'>CPU</b>大端和小端模式的详细资料和程序分析讲解

    关于嵌入式开发所需要学习的知识

    嵌入式开发作为物联网体系结构重要环节在未来的产业互联网阶段将有较大的发展空间,嵌入式开发通常涉及到设备、网络以及平台三部分内容。
    发表于 06-18 16:56 3147次阅读

    嵌入式系统开发需要学什么_嵌入式软件开发是做什么的

    嵌入式开发作为物联网体系结构重要环节在未来的产业互联网阶段将有较大的发展空间,嵌入式开发通常涉及到设备、网络以及平台三部分内容。
    发表于 08-28 09:39 5783次阅读

    VivadoHLS嵌入式实时图像处理系统的构建与实现优先出版

    VivadoHLS嵌入式实时图像处理系统的构建与实现优先出版(嵌入式开发电脑推荐)-VivadoHLS嵌入式实时图像处理系统的构建与实现优先
    发表于 07-30 12:39 0次下载
    VivadoHLS<b class='flag-5'>嵌入式</b>实时图像<b class='flag-5'>处理系统</b>的构建与实现优先出版

    嵌入式图像处理系统的设计与实现

    嵌入式图像处理系统的设计与实现(嵌入式开发需要学哪些算法)-文档为嵌入式图像处理系统的设计与实现总结文档,是
    发表于 08-04 15:19 10次下载
    <b class='flag-5'>嵌入式</b>图像<b class='flag-5'>处理系统</b>的设计与实现

    嵌入式开发):嵌入式开发新手入门

    本篇文章整理下嵌入式开发些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。嵌入式开发流程般如下,
    发表于 10-14 10:58 79次下载
    <b class='flag-5'>嵌入式开发</b>(<b class='flag-5'>一</b>):<b class='flag-5'>嵌入式开发</b>新手入门

    嵌入式开发资料免费分享

    嵌入式开发资料免费分享嵌入式工程师经验分享:如何学习嵌入式开发截取文档部分学习嵌入式工程师经验分享的资料分享给大家,文档上从、嵌入式
    发表于 10-21 11:07 45次下载
    <b class='flag-5'>嵌入式开发</b>资料免费分享

    python做嵌入式开发_Python和嵌入式的区别是什么?可以做嵌入式开发吗?

    从概念上来说,嵌入式和Python的区别还是比较明显的,嵌入式开发领域,而Python则是
    发表于 11-02 20:21 14次下载
    python做<b class='flag-5'>嵌入式开发</b>_Python和<b class='flag-5'>嵌入式</b>的区别是什么?可以做<b class='flag-5'>嵌入式开发</b>吗?

    VScode嵌入式开发入门教程

    VScode嵌入式开发入门教程1.VScode进行单片机嵌入式开发教程2.单片机开发环境的搭建3.相关技巧与设置
    发表于 11-03 09:51 44次下载
    VScode<b class='flag-5'>嵌入式开发</b><b class='flag-5'>之</b>入门教程

    Linux系统嵌入式开发是什么

    嵌入式开发听起来很高大上,但其实它就在我们身边。   嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备,如手机、平板电脑、智
    的头像 发表于 10-12 15:40 1186次阅读