运算速度

【转帖】超能课堂(186) CPU中的那些指令集都有什么用?

帅比萌擦擦* 提交于 2020-03-06 07:59:31
超能课堂(186) CPU中的那些指令集都有什么用? https://www.expreview.com/68615.html 我们都知道之所以计算机能够进行计算,主要靠的是大规模集成电路中由晶体管组成的逻辑电路。这些逻辑电路使得计算机能够进行运算及判断。但对于一个简单逻辑电路来讲,它只能进行一个完整运算中的部分操作,所以人们通过组合这些简单逻辑电路,这样就可以让计算机进行复杂的运算了。当CPU设计人员将这些组合逻辑电路制作成通用运算单元后,我们将一定格式的指令及数据输入,即可得到运算结果。而当需要的运算种类越来越多、运算越来越复杂后,CPU设计人员就将这些指令进行划分重构,组成一整套进行运算的集合,这就是 指令集 。 图片来自 Unsplash 不过以上面向CPU指令集设计师及CPU微架构设计师的,CPU指令设计者将不同一些计算机操作设计成指令,然后微架构设计师通过这些指令的格式等进行微架构设计。而对于软件开发者,更多接触到的是软件层面的汇编语言,通过汇编语言指令就可以让程序员控制计算机了。计算机软硬件架构是有层次的,随着高级语言的开发,GUI的出现,更多的人可以方便的使用计算机。虽然编程语言越来越“高级”,软件越来越华丽,但是其依然需要通过CPU中的海量晶体管进行运算,调用指令集。 从英特尔开发出8086处理器开始,x86指令集就开始形成了,此后英特尔推出了80286

1、算法初识

痴心易碎 提交于 2020-03-05 12:42:10
1.什么是 算法 ? 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。 也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。 如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。 不同的算法可能用不同的时间、空间或效率来完成同样的任务。 一个算法的优劣可以用空间复杂度与时间复杂度来衡量。 算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。 一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。 1.1特征 一个算法应该具有以下五个重要的特征: 有穷性 (Finiteness) 算法的有穷性是指算法必须能在执行有限个步骤之后终止; 确切性 (Definiteness) 算法的每一步骤必须有确切的定义; 输入项 (Input) 一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件; 输出项 (Output) 一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 可行性 (Effectiveness) 算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步

转 位运算实现加减乘除运算

不问归期 提交于 2020-03-04 19:08:58
我们知道,计算机最基本的操作单元是字节(byte),一个字节由8个位(bit)组成,一个位只能存储一个0或1,其实也就是高低电平。无论多么复杂的逻辑、庞大的数据、酷炫的界面,最终体现在计算机最底层都只是对0101的存储和运算。因此,了解位运算有助于提升我们对计算机底层操作原理的理解。 今天就来看看怎么不使用显式“ + - * /”运算符来实现加减乘除运算。 下面我们一个一个来看。 1. 加法运算 先来个我们最熟悉的十进制的加法运算: 13 + 9 = 22 我们像这样来拆分这个运算过程: 不考虑进位,分别对各位数进行相加,结果为sum: 个位数3加上9为2;十位数1加上0为1; 最终结果为12; 只考虑进位,结果为carry: 3 + 9 有进位,进位的值为10; 如果步骤2所得进位结果carry不为0,对步骤1所得sum,步骤2所得carry重复步骤1、 2、3;如果carry为0则结束,最终结果为步骤1所得sum: 这里即是对sum = 12 和carry = 10重复以上三个步骤,(a) 不考虑进位,分别对各位数进行相加:sum = 22; (b) 只考虑进位: 上一步没有进位,所以carry = 0; (c) 步骤2carry = 0,结束,结果为sum = 22. 我们发现这三板斧行得通! 那我们现在还使用上面的三板斧把十进制运算放在二进制中看看是不是也行的通。

java的位运算

风流意气都作罢 提交于 2020-03-04 19:03:16
 在日常的Java开发中,位运算使用的不多,使用的更多的是算数运算(+、-、*、/、%)、关系运算(<、>、<=、>=、==、!=)和逻辑运算(&&、||、!),所以相对来说对位运算不是那么熟悉,本文将以Java的位运算来详细介绍下位运算及其应用。 1、 位运算起源   位运算起源于C语言的低级操作,Java的设计初衷是嵌入到电视机顶盒内,所以这种低级操作方式被保留下来。所谓的低级操作,是因为位运算的操作对象是二进制位,但是这种低级操作对计算机而言是非常简单直接,友好高效的。在简单的低成本处理器上,通常位运算比除法快得多,比乘法快几倍,有时比加法快得多。虽然由于较长的指令流水线和其他架构设计选择,现代处理器通常执行加法和乘法的速度与位运算一样快,但由于资源使用减少,位运算通常会使用较少的功率,所以在一些Java底层算法中,巧妙的使用位运算可以大量减少运行开销。 2、 位运算详解   Java位运算细化划分可以分为按位运算和移位运算,见下表。 细化 符号 描述 运算规则 按位运算 & 与 两位都为1,那么结果为1 | 或 有一位为1,那么结果为1 ~ 非 ~0 = 1,~1 = 0 ^ 异或 两位不相同,结果为1 移位运算 << 左移 各二进制位全部左移N位,高位丢弃,低位补0 >> 右移 各二进制位全部右移N位,若值为正,则在高位插入 0,若值为负,则在高位插入 1 >>>

Python——变量,运算,条件,循环

我是研究僧i 提交于 2020-03-04 16:29:32
注释 1.注释是什么 注释就是给代码做的一些简短的说明,让我们更好的去理解代码,注意程序执行的时候,不会去执行它 第一种注释 #开头接一个空格就完事 多行注释,"""开头"""结尾 代码实例: # 这是第一个单行注释 print("hello python") """ print("hello python") """ 变量 程序就是用来处理数据的,而变量就是用来存储数据的 1.代码实例,使用变量 # 定义 qq_number 的变量用来保存 qq 号码 qq_number = "1234567" # 使用print可以查看它 print(qq_number) 注意,如果你不想通过print查看变量的值,你可以在ipython中定义变量之后,直接输入变量就行。 2.变量中都包含些什么呢? 在内存中创建一个变量,会包括: 变量的名称 变量保存的数据 变量存储数据的类型 变量的地址(标示) 变量的赋值值得是使用'='好给变量赋值,它总是从右边赋值给左边 2.什么时候需要使用注释? 注释不是越多越好 ,对于一目了然的代码,不需要添加注释 对于 复杂的操作 ,应该在操作开始前写上若干行注释 对于 不是一目了然的代码 ,应在其行尾添加注释(为了提高可读性,注释应该至少离开代码 2 个空格) 绝不要描述代码,假设阅读代码的人比你更懂 Python,他只是不知道你的代码要做什么

06-01 DeepLearning-图像识别

房东的猫 提交于 2020-03-03 11:50:33
文章目录 深度学习-图像识别 人脸定位 手工提取特征的图像分类 识图认物 传统分类系统的特征提取 计算机眼中的图像 什么是图像特征? 卷积运算 利用卷积提取图像特征 基于神经网络的图像分类 传统图像分类系统和深度神经网络 深度神经网络的架构 卷积层 池化层 全连接层 归一化指数层 非线性激活层 Sigmoid函数 双曲正切函数 ReLU函数 深度神经网络的训练 反向传播算法 图像分类应用——人脸识别 人脸识别的流程 人脸识别应用场景 小结 深度学习-图像识别 人脸定位   相信你们外出游玩的时候,都不会带上你的牛逼plus诺基亚手机出门,而是带上你的智能手机给自己美美的拍上一张。当你用手机镜头对准人脸的时候,都会出现一个矩形框,如下图所示(前方高能),那么这个技术是怎么做到的呢?   相机中的人脸定位技术用的是二分类技术。该技术流程如下图所示。   如上图所示,相机首先会将照片分割成一块块的图像块,一张照片往往会有成千上万的图像块被切割出来。   然后每一个图像块都会经过人脸分类器去判别是否是人脸。人脸分类器是预先训练好的分类器,类似于我们之前讲的手写数字识别应用程序中的支持向量机分类器。如果人脸分类器预测该图像块为人脸,相机则会在这个图像块中显示出框的位置。   在人脸定位中,为了解决由于手机离人的距离不同,导致手机上显示的人脸大小不一致的问题。手机在切割图像的时候

ARM处理器差异浅析

一笑奈何 提交于 2020-03-02 15:26:00
1、ARM处理器解析   ARM9、ARM11是哈佛结构,5级流水线结构,所以性能要高一点。ARM9和ARM11大多带内存管理器,跑操作系统好一点,ARM7适合裸奔。我们惯称的 ARM9系列中又存在ARM9与ARM9E两个系列,其中ARM9 属于ARM v4T架构,典型处理器如ARM9TDMI和ARM922T;而ARM9E属于ARM v5TE架构,典型处理器如ARM926EJ和ARM946E。因为后者的芯片数量和应用更为广泛,所以我们提到ARM9的时候更多地是特指ARM9E系列处理器(主要就是ARM926EJ和ARM946E这两款处理器)。下面关于ARM9的介绍也是更多地集中于ARM9E。 2、流水线差异   对嵌入式系统设计者来说,硬件通常是第一考虑的因素。针对处理器来说,流水线则是硬件差别的最明显标志,不同的流水线设计会产生一系列硬件差异。让我们来比较一下ARM7和ARM9E的流水线,ARM9E从ARM7的3级流水线增加到了5级,ARM9E的流水线中容纳了更多的逻辑操作,但是每一级的逻辑操作却变得更为简单。比如原来 ARM7的第三级流水,需要先内部读取寄存器、然后进行相关的逻辑和算术运算,接着处理结果回写,完成的动作非常复杂;而在ARM9E的5级流水中,寄存器读取、逻辑运算、结果回写分散在不同的流水当中,使得每一级流水处理的动作非常简洁。这就使得处理器的主频可以大幅度地提高

国密算法实现

天大地大妈咪最大 提交于 2020-02-29 04:56:53
国密算法实现 一、国产密码算法介绍 国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,在金融领域目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。 1.SM2算法:SM2 椭圆曲线公钥密码算法 是我国自主设计的 公钥密码算法 ,包括SM2-1椭圆曲线 数字签名 算法,SM2-2椭圆曲线 密钥交换 协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。 椭圆曲线参数并没有给出推荐的曲线,曲线参数的产生需要利用一定的算法产生。但在实际使用中,国密局推荐使用素数域256 位椭圆曲线,其曲线方程为y^2= x^3+ax+b(其中p是大于3的一个大素数,n是基点G的阶,Gx、Gy 分别是基点G的x与y值,a、b是随圆曲线方程y^2= x^3+ax+b的系数)。 2.SM3算法:SM3 杂凑算法 是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性SHA

【组成原理】概述

梦想与她 提交于 2020-02-28 04:05:37
目录 计算机概述 数据 总线 CPU 存储器 输入/输出设备 计算机的时标系统 计算机概述 计算机的基本组成: 存储器 :     实现 记忆功能 的部件用来存放计算程序及参与运算的各种数据 运算器 :     负责数据的 算术运算和逻辑运算 即数据的加工处理 控制器 :     负责对程序规定的 控制信息 进行分析,控制并协调输入,输出操作或内存访问 输入设备 :    实现 计算程序和原始数据 的输入 输出设备 :    实现 计算结果 输出 组成的联系: 图一 图二 计算机的工作过程: 用户 打开程序 系统把程序 代码段和数据段 送入计算机的内存 控制器从存储器中 取指令 控制器分析, 执行指令 ,为取下一条指令做准备 取下一条指令 ,分析执行,如此重复操作,直至执行完程序中全部指令,便可获得全部指令 冯·诺依曼机制: 程序存储 采用 2进制 计算机系统的体系结构: 图一: 图二 数据概述 数据信息的两种基本方法: 按值 表示 :  要求在选定的进位制中正确表示出数值,包括数字符号,小数点正负号 按形 表示 :  按一定的 编码方法 表示数据 信息的存储单位: 1KB=2^10B=1024 Byte 1MB=2^20B=1024 KB 1GB=2^30B=1024 MB 1TB=2^40B=1024 GB 浮点表示法: 公式 :  N=2^(+-e)*(+-s) 说明 :

计算机中定点数表示方法练习

心不动则不痛 提交于 2020-02-27 13:26:30
1【单选题】针对8位二进制数,下列说法中正确的是 。(5.0分) A、-127的补码为10000000 B、-127的反码等于0的移码 C、+1的移码等于-127的反码 D、0的补码等于-1的反码 正确答案: B 2【单选题】若某数x的真值为-0.1010,在计算机中该数表示为1.0110, 则该数所用的编码方法为 码。(5.0分) A、原 B、补 C、反 D、移 正确答案: B 3【单选题】已知定点整数x的原码为1xn-1,xn-2,xn-3,…x0,且,则必有 。(5.0分) A、 B、 C、 D、 正确答案: A 4【单选题】已知定点小数x的反码为1,x1,x2,x3,且,则必有 。(5.0分) A、 B、 C、 D、 正确答案: D 5【单选题】 在整数定点机中,下述第______种说法是正确的­。(5.0分) A、原码和反码不能表示 -1,补码可以表示 -1; B、三种机器数均可表示 -1; C、三种机器数均可表示 -1,且三种机器数的表示范围相同; D、三种机器数均不可表示 -1。 正确答案: B 6【单选题】在下列机器数_____中,零的表示形式是唯一的。(5.0分) A、原码 B、补码 C、反码 D、原码和反码 正确答案: B 7【单选题】下列数中最小的数是______。(5.0分) A、(1101001)2 B、(52)8 C、(133)8 D、(30)16