第三节 RISC和CISC的区别
从指令集的角度将CPU分为两类:RISC和CISC
1、CISCcomplex instruction set computer复杂指令集CPU
2、CISC体系的设计理念是用最少的指令来完成任务(譬如计算乘法只需要一条MUL指令即可),因此CISC的CPU本身设计复杂、工艺复杂,但好处是编译器好设计。CISC出现较早,至今Intel还一直采用CISC设计。
3、指令虽然多,但是要完成某个功能时,只需要很少的指令就可以完成。

RISCreduced instruction set computer精简指令集CPU
1、RISC的设计理念是让软件完成具体的任务,CPU本身仅提供基本功能指令集。因此,RISC CPU的指令集中只有很少的指令,这种设计相对于CISC,CPU 的设计和工艺简单了,但是编译器的设计就难了(例如,c语言编写d = a*b+c,要编译成汇编代码时,在CISC中,有乘加指令,只需一条指令就可以计算,但RISC中,可能没有乘加指令,需要先算乘法,再算加法,需两条指令才能完成)
2、指令少,但是要完成某个功能时,只需要很多的指令才能完成。

CPU设计方式发展
1、早期简单CPU,指令和功能都很有限。
2、CISC年代,CPU功能扩展依赖于指令集的扩展,实质是CPU内部组合逻辑电路的扩展。
3、RISC年代,CPU仅提供基础功能指令(譬如内存与寄存器通信指令,基本运算与判断指令等),功能扩展由使用CPU的人利用基础架构来灵活实现。
发展趋势
4、没有纯粹的RISC或CISC,发展方向是RISC与CISC结合,形成一种介于两者之间的CPU类型。

RISC与CISC指令数对比
1、一般典型的CISC CPU指令在300条左右
2、ARM CPU 常用指令30条左右

第四节 统一编址&独立编址&哈佛结构&冯诺依曼结构
什么是IO?什么是内存?
1、内存是程序的运行场所,内存和CPU之间通过总线连接,CPU通过一定的地址来访问具体内存单元。(内存最小的单元是字节)
2、IO(input and output)是输入输出接口,是CPU和其他外部设备(如串口、LCD、触摸屏、LED等)之间通信的道路。一般的,IO就是指CPU的各种内部或外部外设。
3、内存的访问方式内存通过CPU的地址总线来寻址定位,然后通过CPU数据总线来读写。
4、CPU的地址总线的位数是CPU设计时确定的,因此,一款CPU所能寻址的范围是一定的,而内存是需要占用CPU的寻址空间的。(32位CPU的寻址范围是4G,如果给8G内存,有4G内存是用不到的)
5、内存与CPU的这种总线式连接方式是一种直接连接,优点是效率高访问快,缺点是资源有限,扩展性差。

IO的访问方式
1、IO指的是与CPU连接的各种外设。CPU访问各种外设(也就是访问外设的寄存器)有2种方式:一种是类似于访问内存的方式,即把外设的寄存器当作一个内存地址来读写,从而以访问内存相同的方式来操作外设,叫IO与内存统一编址(安排地址)方式;另一种是使用专用的CPU指令来访问某种特定外设,叫IO与内存独立编址。
(eg. 串口没有地址,没法通过地址读写串口,需要读写串口指令来访问)Intel就是用独立编址方式,ARM使用统一编址的方式。

对比
1、由于内存访问频率高,因此采用总线式连接,可以直接地址访问,效率最高。
2、IO与内存统一编址方式,优势是IO当作内存来访问,编程简单;缺点是IO也需要占用一定的CPU地址空间,而CPU的地址空间是有限资源。
3、IO与内存独立编址方式,优势是不用占用CPU的地址空间,缺点是CPU的设计变复杂了,编程模式复杂(因为需要用专用的CPU指令来访问)。

程序和数据
1、程序运行时两大核心元素:程序(只读,写的函数,也就是功能代码)+数据(可读写,程序中定义的变量)
2、程序是我们写好的源代码经过编译、汇编之后得到的机器码,这些机器码可以拿给CPU去解码执行,CPU不会也不应该去修改程序,所以程序是只读的。
3、数据是程序运行过程中定义和产生的变量的值,是可以读写的,程序运行实际就是为了加工改变数据的值。

冯诺依曼结构与哈佛结构
1、冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
2、哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。
程序和数据都放在内存中,且不彼此分离的结构称为冯诺依曼结构。譬如Intel的CPU均采用冯诺依曼结构。
3、程序和数据分开独立放在不同的内存块中,彼此完全分离的结构称为哈佛结构。譬如大部分的单片机(MCS51、ARM9等)均采用哈佛结构。

优劣对比
1、冯诺依曼结构中程序和数据不区分的放在一起,因此安全和稳定性是个问题,好处是处理起来简单。(程序段和数据段都可以被写,做不到程序段保持不变,因此有安全隐患)
2、哈佛结构中程序(一般放在ROM、flash中)和数据(一般放在RAM中)独立分开存放,因此好处是安全和稳定性高,缺点是软件处理复杂一些,程序的链接脚本会比较复杂(要分别链接到flash和RAM中)。(所以需要统一规划链接地址等)。ROM可以看作是flash,RAM是内存,flash是不能直接被写的,所以程序不会被改变。嵌入式体系中,程序和数据都在内存中,操作系统会区分程序段和数据段,会限制可读写和不可读写。

ARM体系结构(二)相关推荐

  1. ARM体系结构与编程(篇二):ARM体系架构与寄存器介绍

    文章目录 前言 一.ARM内核与架构 1.1 ARM芯片的组成 1.2 ARM指令集与架构 二.ARM处理器模式与寄存器 2.1 ARM处理器模式 2.2 ARM寄存器 前言 该文章是通过学习< ...

  2. 【华为云技术分享】ARM体系结构基础(2)

    上一节中我们学习了ARM汇编指令集的有关知识,这一节我们主要学习ARM架构寄存器的有关知识.在处理器中,寄存器用于保存需要被快速访问的数据,在操作系统中需要特别注意的寄存器主要有栈指针寄存器(SP). ...

  3. 【华为云技术分享】ARM体系结构基础(1)

    鲲鹏处理器采用ARM架构,欧拉系统可以运行在鲲鹏架构的服务器上,想要了解欧拉操作系统对硬件的支持,首先需要了解一些ARM架构的基础知识.操作系统中硬件相关的部分集中体现在汇编指令和对寄存器的操作中,因 ...

  4. arm体系结构与编程_ARM体系结构基础(1)

    本文转载自:智能软件研究中心 鲲鹏处理器兼容ARM架构,openEuler操作系统可以运行在鲲鹏架构的服务器上,想要了解openEuler对硬件的支持,首先需要了解一些ARM架构的基础知识.操作系统中 ...

  5. 深度剖析Linux内核(ARM体系结构)

    一.ARM处理器简介及RISC特点 1.ARM处理器简介: ARM(Advanced RISC Machines)是一个32位RISC(精简指令集)处理器架构,ARM处理器则是ARM架构下 的微处理器 ...

  6. 最全ARM体系结构知识:汇编、架构、异常级别和安全状态

    关注.星标公众号,直达精彩内容 来源:智能软件研究中心 | 直接来源:华为开发者社区 作者:罗宇哲 01 ARM汇编指令 操作系统中硬件相关的部分集中体现在汇编指令和对寄存器的操作中,因此我们对ARM ...

  7. LV.9 ARM体系结构与接口技术

    1 计算机硬件基础 Day1-1 底层课程导学 课程回顾 1.编程基础 1.C语言基础 2.C高级及Linux 3.数据结构 2.应用开发 1.IO 2.进程 3.网络编程 3.底层开发 1.ARM ...

  8. 01 ARM体系结构与汇编指令

    注:本文章是由笔者学习朱有鹏arm的学习笔记,特此感谢朱老师. 关于汇编: 1.汇编的实质是机器指令(机器码)的 助记符,是一款CPU的本质特征. 2.不同CPU的机器指令集设计不同,因此 汇编程序不 ...

  9. 东华理工大学arm试卷_《ARM体系结构》期末考试试卷含答案.doc

    <ARM体系结构>期末考试试卷含答案 东华理工大学长江学院 2011- 2012 学年第2学期补考试卷B 课程:嵌入式微处理器体系结构与编程 考试形式:闭卷 年级及专业:计算机科学与技术 ...

  10. linux嵌入式面试题合集,嵌入式linux面试题解析(一)——ARM部分二

    嵌入式linux面试题解析(一)--ARM部分二1.描述一下嵌入式基于ROM的运行方式基于RAM的运行方式有什么区别.基于RAM的运行方式:需要把硬盘和其他介质的代码先加载到ram中,加载过程中一般有 ...

最新文章

  1. android qq分享自动弹出,史上最详细Android集成QQ,微信,微博分享(不要第三方)持续更新中...
  2. IOS开发基础之屏幕组件适配添加约束
  3. 可以在xml中靠增加属性来实现分组
  4. Java日期格式化SimpleDateFormat
  5. unity3d 求两个点长度_三年级上册求组合图形周长专项练习,附答案
  6. netty 多个 本地udp端口_如何在SpringBoot中,使用Netty实现远程调用?
  7. java object怎么拿字段_「Java面试秘籍」String不可变,如何理解
  8. 企业搜索引擎(Enterprise Search Engine)的2007中重要的功能
  9. dell服务器系统备份到另一台,已解决: Re: Networker 备份服务器 备份软件配置文件备份? - Dell Community...
  10. 利用SpringAOP 实现 日志输出
  11. jdk12连接mysql_使用基于JDK12版本的JDBC读取数据库中的数据在网页(jsp)表示出来...
  12. 正在启动python的代码补全客户端_让 python 命令行也可以自动补全
  13. 测序深度的计算,你真的掌握了吗
  14. Neo4j:入门基础(八)之Traversal API
  15. JUC-II CPU的微程序设计 计算机组成原理课程设计 微指令编码
  16. 2022年最新山东建筑八大员(市政)模拟考试题库及答案
  17. 万能数据库查询分析器使用技巧之(十)
  18. Promise.all、Promise.race、Promise.allSettled、Promise.any区别
  19. 【天光学术】本科历史人物方面的论文怎么写?先从标题入手!
  20. 《毕业生》系列之四 霸面天源迪科

热门文章

  1. MATLAB GUI制作快速入门
  2. JAVA版本农牧场游戏源码果园种植+养殖游戏 可对接流量主
  3. web系统大规模并发中的-秒杀与抢购
  4. ceph运维命令合集
  5. 初识Reactjs的项目结构与思想
  6. 途牛旅游项目——动态导航栏
  7. 对JSTL的认识和理解
  8. 原生编译加速 Java | InfoQ 专题
  9. 七、熵编码算法(1):基础知识
  10. Ant Design + react-resizable实现列表页可拖拽宽度变化