| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> CPU是如何处理指令的 -> 正文阅读 |
|
[嵌入式]CPU是如何处理指令的 |
目录01.标准的CPU架构CPU主要由以下几部分组成,参考下图
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以上。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:41:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |