目录

01.标准的CPU架构

1.1 CPU寄存器介绍

1.2 CPU内部单元

1.3 内存介绍

02.提取、解码和执行指令

2.1 CPU如何处理指令

2.2 一些指令

03.SkyEye支持的处理器


01.标准的CPU架构

CPU主要由以下几部分组成,参考下图

  • 一系列寄存器,部分处理地址相关的寄存器,和其他一些用于处理数据的寄存器
  • ALU,算数逻辑运算单元
  • CU,控制单元,控制多个寄存器传输之间的时序等
  • 内部一些寄存器之间的连线

1.1 CPU寄存器介绍

MAR(Memory Address Register):保存需要访问的内存的地址;

MBR(Memory Buffer Register):保存需要写入寄存器或从内存中读取的数据;

PC(Programmer Counter):内部连接了地址总线,存放了程序下一条需要处理的指令的地址;

IR(Instruction Register):读取内存的时候,首先会从MBR寄存器中读取数据;如果读取的数据是一条指令的话,从IR里面读取;

IR包含下面两个部分:

1.IR(opcode):每一条指令的opcode都是唯一的,也是一条指令最重要的组成部分,CPU通过opcode了解当前指令到底干什么事情

2.IR(address):另一个重要的部分就是address部分

SP(Stack Pointer):栈指针,存放了当前程序的执行过程中内存中的栈地址

1.2 CPU内部单元

CU(Control Unit):控制单元,控制时序和指令的执行之后寄存器的变化

ALU(Arithmetic Logic Unit):算术运算单元,包含算术运算所需的逻辑与、逻辑或等模块

SR(Status Register):状态寄存器,根据ALU的计算结果控制状态寄存器中的一些状态标志,包括一些溢出(Overflow)、零(Zero)、负(Negative)等标识位

1.3 内存介绍

内存主要由ram和rom(一部分)组成,主要用于支持系统的启动。内存不在CPU内部,而是在板子上,通过总线和CPU连接。实际上一般由2 ~ 3根总线,包括数据总线和地址总线,有些板子还会有控制总线--用于表示当前时钟下数据是读或写。访问的内存地址有总线宽度决定,对于24位宽的总线,可访问的地址一般如下图:0 - 0xFFFFFF;

02.提取、解码和执行指令

2.1 CPU如何处理指令

处理指令的步骤主要包括以下几步:

1.从内存中提取(Fetch)指令,并把指令放到IR中;

2.解码(Decode)当前指令

3.执行(Execute)当前指令

执行的执行流程一般遵循以下步骤:

1.将PC的值存入MAR寄存器,

MAR<---PC

2.读取MAR中的值,将数据放入MBR寄存器中

MBR<---{MAR}

3.下一步需要将MBR中的值拷贝到IR寄存器中,IR解释执行当前指令后PC加1(本文介绍的指令为8位指令指令,因此PC加1,对于16位及32位指令,PC需要加对应的字节数)

PC<----PC + 1

总结归纳为下图:

2.2 一些指令

以下指令使用8位的Opcode进行解码,8位指令长度理论上可以产生256条不同的指令,下图仅列出一些常用的包括内存读取/写入、加法运算等操作,具体含义参见Meaning:

2.3 列举一条指令(LDA x)的执行过程

以上图为例可归结为以下几个步骤:

a.指令提取阶段,将PC值先赋值给MAR

b.地址的值为"2"

c.从内存为"2" 的地方将指令提取出来,存入MBR中

d.MBR的值写入IR寄存器

e.PC需要加一

f.解码当前IR中的指令,获取到opcode部分的值为1

g.Address部分的值为"5"

h.从内存地址为"5"提取出数据

i.由于LDA操作的是AC寄存器,最终将数据放入AC中

03.SkyEye支持的处理器

由我司自主研发的SkyEye目前支持主流的嵌入式硬件平台,包含以下架构的处理器核心,能够运行主流的操作系统,此外还能适配国内自主研发的操作系统天脉。通过利用基于LLVM的动态二进制翻译技术,使虚拟处理器在典型的桌面计算机上运行速度可以达到2000MIPS以上。

CPU是如何处理指令的相关推荐

  1. 计算机原理(CPU+存储+OS+指令)

    计算机原理(计组+OS总结) https://mp.weixin.qq.com/s/ttncekujB82g88GRx3a6lQ   大佬写得太到位了,转载起来以后忘了的话再看看 CPU CPU 内部 ...

  2. 自己动手写CPU(4)移动操作指令的实现

    自己动手写CPU(4)移动操作指令的实现 指令说明 MIPS32指令集架构中定义的移动操作指令共有6条: movn.movz.mfhi.mthi.mflo.mtlo,后4条指令涉及对特殊寄存器HI.L ...

  3. 自己动手写CPU(1)五级流水线及CPU第一条指令ori

    自己动手写CPU(1)五级流水线及CPU第一条指令ori 动机 不知为何研一的自由时间突然多起来,可能人一闲下来就容易焦虑吧,hhhhhh.正好之前看到一本<自己动手写CPU>,就按照此书 ...

  4. 使用logisim搭建单周期CPU与添加指令

    使用logisim搭建单周期CPU与添加指令 搭建 总设计 借用高老板的图,我们只需要分别做出PC.NPC.IM.RF.EXT.ALU.DM.Controller模块即可,再按图连线,最后进行控制信号 ...

  5. 道cpu、道指令、道编程基本原理15

    我在前面说过道cpu.道指令.道编程的理论根源,估计大家都忘了,因为这几天我的文章很少再提,担心大家把我当成从道观里出来的骗子,但现在不得不再提这些今人已遗忘的老祖宗的旧东西.我引用了<道德经& ...

  6. Intel CPU的CPUID指令(转载)

    Intel CPU的CPUID指令 Intel有一个超过100页的文档,专门介绍cpuid这条指令,可见这条指令涉及内容的丰富. 记得去年的时候,曾经有个"英布之剑"问过我这条指令 ...

  7. CPU乱序执行(指令重排序)

    CPU的速度至少比内存快100倍,为了提升效率,会打乱原来的执行效率,会在一条指令执行过程中(比如去内存读数据,大概慢100多倍),去同时执行另一条指令,前提是两条指令没有依赖关系(洗茶壶/烧水-茶叶 ...

  8. CPU结构与指令执行过程简介

    CPU(Central Processing Unit)是计算机中进行算术和逻辑计算处理指令的主要部件. CPU结构 CPU由通用寄存器组,运算器,控制器和数据通路等部件组成. 寄存器包括 数据寄存器 ...

  9. 计算机处理器的CPU主频与指令条数

    我是一名软件工程师,经常有人问一些CPU的概念(主频.指令).今天我开一篇文章,用通俗易懂的语言把基本的概念给大家解释清楚. 古有水风车自动碾磨谷物.提水灌溉--水流驱动 今有振荡器自动启动设备.运行 ...

最新文章

  1. Pytorch源码与运行原理浅析--网络篇(一)
  2. 确定msm8937+android7.1采用的dtb文件
  3. Python之删除字符串中不需要的字符
  4. centos5.5 挂载NTFS优盘
  5. VBNET的一些特殊能力
  6. 阿里云边缘计算三年,都为开发者带来了什么?
  7. 使用 IntraWeb (14) - 基本控件之 TIWHRule、TIWRectangle
  8. android 手机地图
  9. 使用BarTender连接Excel文件批量打印图片
  10. 计算机蓝屏了 怎么维修,电脑蓝屏怎么办?电脑出现蓝屏快速解决教程
  11. 计算机在机械工程中的应用英语作文,关于机械工程英语作文
  12. wd移动硬盘插电脑没反应_WD MY BOOK 桌面移动硬盘 插电脑不识别的解决办法。
  13. 学豆网学计算机,出题优学生版电脑版
  14. cαr怎么发音_元音字母
  15. PMP项目管理的就业前景
  16. 今日恐慌与贪婪指数为20 恐慌程度有所上升
  17. PostgreSQL—适合金融的数据库
  18. RTKlib相对定位源码解析: udstate函数
  19. MySQL插入数据时报错Cause: java.sql.SQLException: #HY000
  20. appollo消息服务器,搭建Apache apollo消息队列服务、简单访问

热门文章

  1. python是动态语言_Python是动态语言:动态添加或删除属性、方法
  2. java8 时间加一秒_Java8中新增的日期和时间API
  3. Zookeeper常用命令详解(Zookeeper3.4.14)
  4. Linux概要端口,LINUX中如何查看某个端口是否被占用(转发)
  5. oracle颜色,oracle - Oracle SQL Developer - 如何使用颜色显示百分比(非数字) - 堆栈内存溢出...
  6. 能导出_Handoff 插件上线!足不出 Figma 就能导出设计标注
  7. 一个html页面上显示dopost,Java遇见HTML-servlet(一)
  8. centos mysql单向同步,虚拟机下实现Centos5.6下Mysql双向同步配置
  9. 解决django3.x manage命令makemigrations无法创建数据表
  10. centos安装python3.8与pip