指令集

M0+体系结构与指令系统简介

老子叫甜甜 提交于 2020-01-09 16:56:11
M0+体系结构与指令系统简介 ARM Cortex-M0+出现的背景 存储器映像 ARM Cortex-M0+指令集 数据传送类指令 取数指令 存数指令 寄存器间数据传送指令 堆栈操作指令 数据操作类指令 算术运算类指令 逻辑运算类指令 移位运算类指令 跳转指令 其他指令 ARM Cortex-M0+ 寻址方式 立即数寻址 寄存器寻址 偏移寻址及寄存器间接寻址 直接寻址 ARM Cortex-M0+出现的背景 32位的M0+系列处理器是ARM公司2012年推出的,主要的目的是替代原有的8位/16位微控制器,具有性价比高,功耗低等特点,其内核性能接近8位或16位竞争产品的2倍。 这些功能模块提高了M0+处理器的性能及其编程优势,降低了系统的移植难度。 存储器映像 把这4GB空间当作存储器来看待,分成若干区间,都可安排一些实际的物理资源。 用于标志ALU的状态:负标志N 零标志Z 进位标志C 溢出标志V 异常号 中断屏蔽寄存器,只有D0位有意义,当该位被置位时,除不可屏蔽中断和硬件错误以外的所有中断都被屏蔽。 ARM Cortex-M0+指令集 数据传送类指令 取数指令 存数指令 寄存器间数据传送指令 堆栈操作指令 数据操作类指令 算术运算类指令 逻辑运算类指令 移位运算类指令 跳转指令 控制程序的执行流程 其他指令 ARM Cortex-M0+ 寻址方式 立即数寻址

微架构、指令集架构与汇编语言的关系

和自甴很熟 提交于 2020-01-06 18:57:43
最近老是碰到x86 IA32 MIPS什么的对应的汇编又是有好几种,感觉很迷。遂查资料理清这些个概念如下(大部分内容来自维基百科,如有错误谢指正!) 微架构、指令集架构和汇编语言这三者的关系大概是这样的,我们分别来介绍下 指令集 指令就是要计算机执行某种操作的命令。 从计算机组成的层次结构来说 指令分为微指令(微程序级的指令,属硬件)、宏指令(若干机器指令组成的 属软件)和机器指令(二者之间 简称指令)。 我们这里只讨论机器指令,每一条机器指令指令可以完成一个独立的算术运算或逻辑运算操作(如加减移位等)。 一台计算机中所有机器指令的集合指令集。它存在于CPU内部,对CPU运算进行指导和优化。 从指令集来说,计算机分为我们熟悉的 CISC(复杂指令集计算机)和 RISC(精简指令集计算机)。这两种的设计理念和优缺点各不相同,这里不再展开。 微架构 微架构,是处理器核心的实现方式,是 将一种给定的指令集架构在处理器中执行的方法(指令集的实现)。 通常认为只有具备独立的微架构研发能力的企业才算具备了CPU研发能力。 指令集架构(处理器架构) 是计算机体系结构中与程序设计有关的部分,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部I/O。指令集架构为汇编语言的设计师和编译器所见。 几种常见的架构(详细内容和异同网上的介绍很多) x86 的32位 -> IA32

电脑的32位与64位是指的什么

无人久伴 提交于 2019-12-27 05:49:46
64 位势不可挡 从某种意义上讲,处理器的发展直接影响着整个IT行业的发展水平,电脑核心从16位到32的转变对IT行业产生的巨大影响就是一个强有力证明。从386、486直到奔腾系列的CPU都是32位,大多数情况32位计算已经能满足现阶段人们的需要。然而随着互联网等技术的发展,对内存的需求越来越大,比如大型服务器,每秒钟处理的数据量就超过2GB,32位就难以满足需求了。 32位的风云十年 在信息技术领域,“位数”是衡量计算机性能的重要标准之一。位数在很大程度上决定着计算机的内存最大容量、文件的最大长度、数据在计算机内部的传输速度、处理速度和精度等性能指标。在近十年的时间里,X86-32位平台由于其性价比高,获得广泛应用。 按照以前的习惯,我们把基于80X86的CPU架构称作X86结构,这是Intel公司在1978年发布其第一块16位的CPU(5MHz 8086)时开发的,1981年IBM推出的第一台PC中使用的也是X86指令,同时电脑中为提高浮点数据处理能力而加的X87芯片系列数学协处理器则使用X87指令,后来将X86指令集和X87指令集统称为X86指令集。为了保证计算机能够继续运行以往开发的各类应用程序以保护和继续软件资源,后续的CPU(包括大多数第三方处理器厂商)继续使用X86指令集,采用这种指令集的CPU系统被称作X86架构。 64位异军突起

CPU位数、操作系统位数、应用程序位数浅析

落花浮王杯 提交于 2019-12-26 20:29:58
问题起源: 64位CPU的64指的是什么 32位计算机的32位指的是啥 32位计算机装8G内存有用吗 32位应用程序和64位应用程序又是啥... ... 能说上来一点,但实际上含糊不清的概念有很多 下文主要从内存、CPU、操作系统的角度对一些容易模糊的基础知识做概况。 内存 主存储器 ,简称主存或内存,内存里的数据能被CPU直接访问。它的存储体由许多 存储单元 组成,每个存储单元可存储一串二进制代码(称为存储字)。 存储单元 是内存的最小可寻址单位,通常都以 字节 (byte)为单位,一个字节占8位(bit)。 存储单元可存储的位数称为 存储字长,存储字长 是CPU一次能并行处理的二进制位数。 C语言中的指针是用来存放内存地址的,指针的大小就等于字长。对于32位系统,内存地址位数是4字节,指针也就是4字节,64位系统则是8字节。 CPU 我们所说的32位处理器,指的是CPU内部的通用寄存器的宽度为32位,一次能处理的最大位数为32位(一次处理4个字节),它的 地址总线 位数为32位 (地址总线位数决定了CPU的寻址能力)。 可寻址物理地址范围为4GB(2^32byte= 4GB) 。4GB即4G个字节, CPU可寻址4G个地址 ,根据 内存地址 访问内存的存储单元。 内存地址 由 计算机操作系统 分配,每一个字节分配一个内存地址,,cpu只需要知道某个数据类型的地址,

CPU 的18条

孤街浪徒 提交于 2019-12-26 05:02:37
1.主频 主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。CPU的主频=外频×倍频系数。很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于 服务 器来讲,这个认识也出现了偏差。至今,没有一条确定的公式能够实现主频和实际的运算速度两者之间的数值关系,即使是两大处理器厂家Intel和AMD,在这点上也存在着很大的争议,我们从Intel的产品的发展趋势,可以看出Intel很注重加强自身主频的发展。像其他的处理器厂家,有人曾经拿过一快1G的全美达来做比较,它的运行效率相当于2G的Intel处理器。 所以,CPU的主频与CPU实际的运算能力是没有直接关系的,主频表示在CPU内数字脉冲信号震荡的速度。在Intel的处理器产品中,我们也可以看到这样的例子:1 GHz Itanium芯片能够表现得差不多跟2.66 GHz Xeon/Opteron一样快,或是1.5 GHz Itanium 2大约跟4 GHz Xeon/Opteron一样快。CPU的运算速度还要看CPU的流水线的各方面的性能指标。 当然,主频和实际的运算速度是有关的,只能说主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。 2.外频 外频是CPU的基准频率,单位也是MHz。CPU的外频决定着整块主板的运行速度。说白了,在台式机中,我们所说的超频,都是超CPU的外频(当然一般情况下

X86与ARM

落花浮王杯 提交于 2019-12-25 10:09:08
文章目录 1 intel(英特尔) 1.1 intel简介 1.2 intel产品 1.3 X86指令集 2 ARM 2.1 ARM简介 3 X86指令集和ARM指令集的区别 3.1 X86指令集和ARM指令集的区别 1 intel(英特尔) 1.1 intel简介 intel: 美国的一家以研发、制造、销售CPU为主的公司 世界上第一块CPU在1971年诞生于英特尔:intel 4004 INTegrated ELectronic(集成电子) 1.2 intel产品 intel产品发展历程如下: 1978年 --> intel 8086 1980年 --> intel 80186 1982年 --> intel 80286 1985年 --> intel 80386 1989年 --> intel 80486 1993年 --> Pentium(80586) 1.3 X86指令集 指令集架构: CPU所有指令的集合,简称指令集。 X86指令集架构,简称 X86架构 或 X86指令集: 指的是CPU指令集,并非是CPU硬件结构。 指的是以8086处理器为鼻祖的一系列指令集,并非是某一款处理器的指令集。 X86架构一直延续到了今天,并非到586就结束了。 我们需要知道X86架构的强大并不在于它本身,而在于围绕着它所建立起来的:软件生态。AMD公司的CPU也是X86架构

SIMD指令集

▼魔方 西西 提交于 2019-12-25 05:50:11
概述 SIMD,即Single Instruction, Multiple Data,一条指令操作多个数据。是CPU基本指令集的扩展。主要用于提供fine grain parallelism,即小碎数据的并行操作。如说图像处理,图像的数据常用的数据类型是RGB565, RGBA8888, YUV422等格式,这些格式的数据特点是一个像素点的一个分量总是用小于等于8bit的数据表示的。如果使用传统的处理器做计算,虽然处理器的寄存器是32位或是64位的,处理这些数据确只能用于他们的低8位,似乎有点浪费。如果把64位寄存器拆成8个8位寄存器就能同时完成8个操作,计算效率提升了8倍.SIMD指令的初衷就是这样的,只不过后来慢慢cover的功能越来越多. 好多处理器都有SIMD指令,我们先仅关注Intel的SIMD。Intel的初代SIMD指令集是MMX,Multi-Media Extension, 即多媒体扩展,因为它的首要目标是为了支持MPEG视频解码.MMX将64位寄存当作2X32或8X8来用,只能处理整形计算.这样的64位寄存器有8组,分别命名为MM0~MM7.这些寄存器不是为MMX单独设置的,而是借用的FPU的寄存器,也就是说MMX指令执行的时候,FPU就没有办法工作。后来Intel进一步实现了SSE, SSE2~SSE4指令集,给了他们单独的寄存器,之后MMX就被停掉了。

android系统编译.so库

佐手、 提交于 2019-12-22 08:24:00
android系统编译so库 移植准备 移植目的 移植环境 ABI和API ABI API ABI和API区别 编译环境 NDK-build AOSP 参考文档 移植准备 这里主要是针对我自己最近遇到的项目问题,需要在android4.4系统上移植android9.0的webrtc语音处理算法,因而引入的内容。 移植目的 本文主要描述的就是如何将自己的代码编译成native库在android系统上运行(并不包括在android系统上使用自己的库),那么本质就是生成指定结构的二进制.so。要生成可用的二进制.so必不可少的就是需要了解到编译环境、目标机软硬件环境 移植环境 最终的目标.so动态库实质就是二进制机器码,要想获取最终的.so就需要针对源代码进行编译生成,这就牵涉到目标平台和宿主机的软硬件环境 宿主机(开发机器) 软件环境:编译器(根据目标平台架构决定)、系统(Windows、Linux)、C/C++库 硬件环境:机器架构(arm/arm64,x86/x86-64) 目标平台(.so运行平台) 软件平台:android系统版本(对应的API和ABI版本) 硬件平台:架构(ABI版本) ABI和API ABI application binary interface,应用程序二进制接口。不同的android设备对应不同的CPU,不同的CPU又对应不同的指令集

计算机基础系列一:计算机硬件

 ̄綄美尐妖づ 提交于 2019-12-21 04:41:30
一 为何要学习计算机基础 python是编程语言,即python是语言 语言有英语、法语、葡萄牙语等,但凡是语言,都是用来沟通的介质。 程序员编程的本质就是让计算机去工作,而编程语言就是程序员与计算机沟通的介质 程序员要想让计算机工作,必须知道计算机能干什么,怎么干的,这也就是我们必须学习计算机基础的原因 然而光有编程语言和硬件也并不能满足大家的编程需求,为什么这么说呢? 程序用编程语言写程序,最终开发出的结果就是一个软件,既然是软件,那就与腾讯qq、暴风影音、快播等软件没有区别了。这些软件必须运行在操作系统之上,你肯定会问:为何要有操作系统呢?没错,远古时代的程序员确实是在没有操作系统的环境下,用编程语言之间操作硬件来编程的,你可能觉得这没有问题,但其实问题是相当严重的,因为此时你必须掌握如何操作硬件的所有具体细节,比如如何具体操作硬盘(现在你得把硬盘拆开,然后你能看见的所有的东西,你都得研究明白,因为你编程时要用到它),这就严重影响了开发的效率,操作系统的出现就是运行于硬件之上,来控制硬件的,我们开发时,只需要调用操作系统为我们提供的简单而优雅的接口就可以了 所以一套完整的计算机系统分为:计算机硬件,操作系统,应用软件,如下图。因而我们的python编程之路分为计算机硬件基础,操作系统基础,和python编程三部分,就让我们先从计算机硬件学起吧 二 本节目标

灵动微内核Cortex-M3八大知识点

烂漫一生 提交于 2019-12-19 23:30:16
近两年随着电子产品智能需求提升,灵动微通用类MCU需求暴涨,例如仅仅一个智能门就需要三颗MCU如果需要实现无线控制,还需要能支持无线蓝牙的的MCU。而对于低阶机器人来说,就需要23颗MCU ,高阶机器人需要30多颗MCU,此外如果需要机器人有表情,则需要更多MCU,还有如果机器人融入更多情绪功能则需要的MCU还会更多。而Cortex-M3内核MCU是目前使用比较广泛的。MCU目前使用内核常用的有Cortex-M3,Cortex-M0/MO+,Cortex-M4.下面介绍比较常用Cortex-M3的八个知识点 Cortex-M3的八个知识点 1.指令集 32位ARM指令集:对应ARM状态 16位Thumb指令集:对应Thumb状态(是ARM指令集的一个子集) 指令集演进图 2.BKP备份寄存器(42个16位寄存器组成),用来存储用户应用程序数据。在Vdd掉电时由Vbat供电。。在待机复位、系统复位、电源复位后,这些寄存器不会被复位 3.不再像别的ARM7那样从thumb状态和ARM状态来回切换 Thumb-2指令集横空出世,Cortex-M3不支持ARM指令集 4.DMA用来提供外设和存储器以及存储器和存储器之间的高速数据传输,而不需要CPU干预。 当DMA和CM3核同时访问相同的目标(外设或者RAM)时,总线仲裁器会循环调度,确保CM3核得到至少一半的系统总线带宽。 5