指令周期

详解服务器处理器基础知识

眉间皱痕 提交于 2019-11-29 05:18:54
CPU(中央处理器)是一台计算机的运算核心和控制核心。 CPU主要功能是解释计算机指令以及处理计算机软件中的数据。 CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。 CPU的运作原理可分为四个阶段: 提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。 CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码,并执行指令。 CPU的主要性能参数包括: 主频,倍频,外频。 CPU的主频也叫时钟频率,CPU 主频为 CPU 的额定工作频率,当内核数目和缓存大小一样时,主频越高的CPU性能越好。 通常,主频越高CPU处理数据的速度就越快, CPU的主频=外频×倍频系数。 为什么会有外频和倍频的区分呢? 这个是和CPU的发展有关的。 简单说来,就是CPU发展太快,而其他硬件无法达到同样频率来交互,于是CPU进行妥协,将外频作为和主板其他部件之间通讯的频率,而工作频率靠倍频来调节提升。 CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed)。 通常所说的某某CPU是多少MHz的,而这个多少兆赫就是“CPU的主频”。 外频是CPU的基准频率,单位是MHz。 CPU的外频决定着整块主板的运行速度。 倍频系数是指CPU主频与外频之间的相对比例关系。 一般情况下,同代(同针脚)的CPU

单片机期末复习

安稳与你 提交于 2019-11-28 23:34:57
一、硬件结构 1.1部分引脚说明 RST:复位引脚,两个机器周期的高电平后复位 ALE:锁存低八位地址 EA:高电平时,访问内部程序存储器(ROM) P0:双向IO口、分时复用-低八位地址,数据总线 P1:双向IO口 P2:双向IO口,访问外部存储器时,提供高八位地址总线 P3:双向IO口,有第二功能 1.2存储器 物理上分为:4 个空间 即片内ROM、 、 片外ROM(程序存储器) 片内RAM、 、 片外RAM(数据存储器) 逻辑上分为: : 3 个空间 , 程序内存(ROM) ( 片内 、 外 ) 统一编址 MOVC 数据存储器 ( 片内) ) MOV 数据存储器(片外) MOVX 1.2.1程序存储器(ROM 作用:存储用户程序和表格常数 特殊单元: 0000H:复位后从这里开始执行程序 中断单元: 外中断0 (INT0 ) 0003H 定时器0 (T0 ) 000BH 外中断1 (INT1 ) 0013H 定时器1 (T1 ) 001BH 串行口(UART ) 0023H 1.2.2内部数据存储器(RAM 通用工作寄存器组 00~1FH共32个,四组通用寄存器,即(四组R0~R7) 可以使用RS1(PSW.4)RS0(PSW.3)来切换寄存器区 RS1 RS0 寄存器区 内存地址 00 0区 00-07H 01 1区 08-0FH 10 2区 10-17H 11 3区 18

vue.js深入篇(五、自定义指令)

对着背影说爱祢 提交于 2019-11-28 20:11:32
需要对纯 DOM 元素进行底层操作,可以会用到自定义指令; 下面这个例子将聚焦一个 input 元素,像这样: 当页面加载时,元素将获得焦点。事实上,你访问后还没点击任何内容,input 就获得了焦点。现在让我们完善这个指令: 也可以注册局部指令,组件中接受一个 directives 的选项: 然后你可以在模板中任何元素上使用新的 v-focus 属性: 钩子函数 指令定义函数提供了几个钩子函数(可选): bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。 inserted : 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。 update : 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新(详细的钩子函数参数见下)。 componentUpdated : 被绑定元素所在模板完成一次更新周期时调用。 unbind : 只调用一次, 指令与元素解绑时调用。 接下来我们来看一下钩子函数的参数 (包括 el,binding,vnode,oldVnode) 。 钩子函数参数 钩子函数被赋予了以下参数: el : 指令所绑定的元素,可以用来直接操作 DOM 。 binding : 一个对象,包含以下属性: name : 指令名,不包括 v-

并发下常用关键字的原理

风流意气都作罢 提交于 2019-11-28 17:25:20
对Synchronized的理解 synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 另外,在 Java 早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的 Mutex Lock 来实现的,Java 的线程是映射到操作系统的原生线程之上的。如果要挂起或者唤醒一个线程,都需要操作系统帮忙完成,而操作系统实现线程之间的切换时需要从用户态转换到内核态,这个状态之间的转换需要相对比较长的时间,时间成本相对较高,这也是为什么早期的 synchronized 效率低的原因。在 Java 6 之后 Java 官方对从 JVM 层面对synchronized 较大优化,所以现在的 synchronized 锁效率也优化得很不错了。JDK1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。 synchronized关键字最主要的三种使用方式: 修饰实例方法: 作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁 修饰静态方法: :也就是给当前类加锁,会作用于类的所有对象实例,因为静态成员不属于任何一个实例对象,是类成员( static

Docker系列之镜像瘦身(五)

微笑、不失礼 提交于 2019-11-28 17:19:25
前言 本节我们来讲讲在我们在构建镜像过程中不出问题,同时使得最后所构建的镜像文件大小尽可能最小,温馨提示:文中大图均可点击放大查看详细信息。 缓存(cache) Docker的优势之一在于提供了缓存,加速镜像迭代构建,我们知道构建镜像使用docker build命令,也就是说通过docker build的缓存机制实现了镜像的复用,不仅节省镜像存储空间,也为镜像构建节省了大量时间。 Docker会由上至下逐步执行Dockerfile中的指令,按顺序执行每个指令,在检查每条指令时,Docker在其缓存中查找现有的中间图像,可能会重用而不是创建新的中间图像,如果缓存无效,则使其无效的指令和后续所有Dockerfile指令都会重新生成新的中间镜像。一旦缓存失效,就可以使用Dockerfile中的其余指令,所以从Dockerfile的顶部开始,如果基础映像(父镜像)已经在缓存中,则重用。然后继续执行下一条指令与从该基础图像导出的高速缓存中所有子镜像进较,比较每个缓存的中间镜像以查看指令是否找到并缓存是否命中,如果高速缓存未命中,则高速缓存无效,如此重复执行以上过程,最终到达Dockerfile的末尾。大多数新指令只是与中间镜像中的指令进行比较,如果匹配,则使用缓存副本。比如,当在Dockerfile中执行RUN pip install -r test.txt指令时

计算机如何执行一条机器指令

一曲冷凌霜 提交于 2019-11-28 15:36:42
文章目录 指令运行过程: 微程序控制基本概念: 几个周期区别 寻址方式: 指令运行过程:  在 上篇 我们谈到,计算机处理一段程序,就会将程序翻译成机器指令,然后执行完成相应的任务。执行指令的过程分为取指令阶段、分析取数阶段和执行阶段。 1.取指阶段: 图中概念解释: PC(程序计数器),MAR(存储地址寄存器),CU(控制单元),IR(指令寄存器) AB(地址总线) ,DB(数据总线), CB(控制总线)。 取指令阶段完成的任务是将现行指令从主存中取出来并送至指令寄存器中去,具体的操作如下: ① 将程序计数器(PC)中的内容先送至存储器地址寄存器(MAR),然后送至地址总线(AB). ② 由控制单元(CU)经控制总线(CB)向存储器发读命令. ③ 从主存中取出的指令通过数据总线(DB)送到存储器数据寄存器(MDR). ④ 将MDR的内容送至指令寄存器(IR)中. ⑤ 将PC的内容递增,为取下一条指令做好准备. 2.分析取数阶段: 取出指令后,指令译码器(ID)可识别和区分出不同的指令类型.此时计算机进入分析取数阶段,以获取操作数.由于各条指令功能不同,寻址方式也不同,所以分析取数阶段的操作是各不相同的. 对于无操作数指令,直接进入执行阶段。 取数要计算操作数有效地址。对于不同的寻址方式,有效地址的计算方法是不同的,有时需要多次访问主存才能取出操作数(间接寻址)。如果通用寄存器中有

这18条背下来没人敢和你忽悠CPU

这一生的挚爱 提交于 2019-11-28 02:38:07
http://hi.baidu.com/hieda/blog/item/eb78fd444c6e5748510ffe83.html 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.外频  

vue中的自定义指令

纵饮孤独 提交于 2019-11-27 10:03:39
vue中提供了丰富的内置指令,如v-if,v-bind,v-on......,除此之外我们还可以通过Vue.directive({})或者directives:{}来定义指令 在开始学习之前我们应该理解,自定义指令的应用场景,任何功能的开发都是为了解决具体的问题的, 通过自定义指令,我们可以对DOM进行更多的底层操作,这样不仅可以在某些场景下为我们提供快速解决问题的思路,而且让我们对vue的底层有了进一步的了解 1.自定义指令可以是全局的,也可以是局部的,全局和局部的区别估计不用多说,大家都知道。 下面我们先了解一下Vue.directive({})内部的钩子函数以及重要的钩子函数的参数,有助于我们对 自定义指令的了解 钩子函数: 1.bind: 此钩子函数只会被调用一次,可以定义一个在绑定时执行一次的初始化动作 2.inserted: 当被绑定的元素插入到父元素中是低调用(此处的父元素不局限于document中) 3.update: 不论被绑定的值是否发生了变化,在末班更新时都会被调用, 4.componentUpdated:被绑定的元素在模板完成一次更新周期时调用, 5.unbind: 只调用一次,元素解绑时调用 参数: 1.el: 指令所绑定的DOM元素,可以直接用来操作DOM 2.binding: 一个对象,包含以下属性 name: 指令的名称 value: 指令绑定的值

单片机时钟电路

久未见 提交于 2019-11-27 09:21:15
首先,单片机能正常工作的必要条件之一就是时钟电路,所以单片机就很需要 晶振 。   晶振,全称是石英 晶体 振荡器 ,是一种高精度和高稳定度的振荡器。通过一定的外接电路来,可以生成频率和峰值稳定的正弦波。而单片机在运行的时候,需要一个脉冲信号,做为自己执行指令的触发信号,可以简单的想象为:单片机收到一个脉冲,就执行一次或多次指令。 、 单片机工作时,是一条一条地从 RoM 中取指令,然后一步一步地执行。单片机访问一次 存储器 的时间,称之为一个机器周期,这是一个时间基准。—个机器周期包括12个时钟周期。如果一个单片机选择了12兆赫兹晶振,它的时钟周期是1/12us,它的一个机器周期是12×(1/12)us,也就是1us。  MCS—51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较馒,得要2个机器周期,还有两条指令要4个机器周期才行。为了衡量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。例如,当需要计算DJNZ指令完成所需要的时间时,首先必须要知道晶振的频率,设所用晶振为12兆赫兹,则一个机器周期就是1us。而DJNZ指令是双周期指令,所以执行一次要2us。如果该指令需要执行500次,正好1000us,也就是1ms。   机器周期不仅对于指令执打有着重要的意义,而且机器周期也是单片机 定时器

Intel 80386 CPU

偶尔善良 提交于 2019-11-26 19:20:50
一、80386 概述 80386处理器被广泛应用在1980年代中期到1990年代中期的IBM PC相容机中。这些PC机称为「80386电脑」或「386电脑」,有时也简称「80386」或「386」。80386的广泛应用,将PC机从 16位 时代带入了 32位 时代。80386的强大运算能力也使PC机的应用领域得到巨大扩展,商业办公、科学计算、工程设计、多媒体处理等应用得到迅速发展。它的数据总线和地址总线都是32位,直接寻址的内存空间4GB,虚拟地址空间为64TB。芯片上集成了27.5万个晶体管,主频16-33MHz。它是X86第一个真正的32位CPU,它能提供真正的多任务处理和建立虚拟系统的能力。 二、80386的引脚及功能 80386 DX有132根引脚,采用PGA(Pin Grid Array,引脚网格阵列)封装,采用这种封装工艺单根引脚所占用的面积较双列直插时小,因此引脚数目可以多一些,不必再采用引脚复用技术。因此,在80386中数据线和地址线是分开设置的,控制信号和状态信号也不再复用引脚。其中34 条地址线(A31~A2、BE3~BE0),32 条数据线(D31~D0),3 条中断线,1条时钟线,13 条控制线,20 条电源线VCC,21条地线VSS,还有8 条为空。 与8086/8088 相比,需要说明以下几点: 1)时钟( CLK2): 80386