cpu指令运行说明

合集下载

GE Fanuc Automation 与90-70 系列PLC CPU 指令集 说明书

GE Fanuc Automation 与90-70 系列PLC CPU 指令集 说明书

手册修订说明
以下是本手册所反映的特性变更,修正和现有信息的更新: y CPX 和 CGR 型处理器的参考地址,应通过 ý` ` ` ` ` __表示。 y 定时间扫描方式的计时器值修正(第二章,2-46 页) 。 y 表 2-18 后增加了关于 CPU 运行方式选择开关的说明和并更新了表中 level 1 优先级 的描述(第二章,2-79 页) 。 y 系统错误描述更新(第三章,3-2 页) 。 y 第四章至第十二章内容在前一版本中包含在一独立章节(第四章)中。这些内容现 分为多个独立章节,以便逐步深入对编程指令进行介绍。 y 附录 A,CPU 运行数据中的表格修正(其他未明确的信息将在下一版本中注明) 。 y 增加了“每个以太网全局……”一段,A-24 页。 y 附录 A 的最后增加了一部分,标题为: “相对 CPU 性能测试” 。 y 其他必须的修正和说明。
Alarm Master Genius CIMPLICITY Helpmate CIMPLICITY 90-ADS Logicmaster CIMSTAR Modelmaster Field Control Motion Mate Genet PowerTRAC ProLoop PROMACRO Series Five Series 90 Series One Series Six Series Three VersaMax VersaPro Vumaster Workmaster
©Copyright 1989-2005 GE Fanuc Automation North America, Inc. All Rights Reserved
前言
本手册主要介绍系列 90™­70 可编程序控制器的系统操作, 故障处理和 Logicmaster 9070 的编程指令集。系列 9070 PLC 是 GE Fanuc 自动化公司可编程逻辑控制器 90™系列家族的 一员。

8086CPU指令系统

8086CPU指令系统

3.3.2 算术运算类指令
1.加法指令
(2)带进位加法指令ADC
【指令格式】ADC dst,src 【指令功能】(dst) ← (dst)+(src)+(CF) ADC指令在格式和功能上都与ADD指令类似,只是相加时要 把进位标志CF的当前值加到和中,结果送到目的操作数中。 【用途】ADC指令主要用于多字节加法运算。 例如,有两个4字节的无符号数相加,由于8086加法指令最 多只能进行16位的加法运算,我们可将加法分两次进行,先 进行低16位相加,然后再进行高16位相加,在完成高16位 相加时,注意要把低16位相加时可能出现的进位位加进去。
•堆栈操作指令PUSH和POP
由于堆栈顶部是浮动的,为了指示现在堆栈中存放数据的位 置,通常设置一个指针,即堆栈指针SP,始终指向堆栈的顶部。 这样,堆栈中数据的进出取决于SP。当将数据(1个字节)推 入堆栈时,SP自动减1,向上浮动而指向新的栈顶;当将数据 从堆栈弹出时,SP自动加1,向下浮动而指向新的栈顶。 堆栈有建栈、进栈和出栈3种基本操作。 ⑴建栈
出栈操作都是以字为单位的,即每次在堆栈中存取数据均是两 个字节(先存入高字节,再存入低字节,仍然遵循“高字节在 高地址,低字节在低地址”的原则)。
【指令格式】PUSH opr 【指令功能】PUSH指令将16位的源操作数推入堆栈,而目标
地址为当前栈顶,即由SP指示的单元。PUSH指令操作如下: ①(SP)←(SP)-2 ②((SP)+1: (SP) ) ← opr
③代码段寄存器CS和指令指针寄存器IP不能作为目的 操作数,但CS可以作为源操作数.
④立即数不能作为目的操作数. ⑤不能用立即寻址方式给段寄存器传数. ⑥段寄存器之间不能用MOV指令直接传送. ⑦在传送字单元时,遵循“高字节在高地址,低字节在 低地址”的原则。

ARM微处理器的七种运行模式

ARM微处理器的七种运行模式

ARM微处理器的七种运⾏模式
ARM微处理器的七种运⾏模式:
1. ⽤户模式(usr):正常的程序执⾏状态
2. 快速中断模式(fiq):⽤于处理快速中断,对⾼速数据传输或通道处理。

3. 中断模式(irq):对⼀般情况下的中断进⾏处理。

4. 管理模式(svc):操作系统使⽤的保护模式,处理软件中断swi reset。

5. 系统模式(sys):运⾏具有特权的操作系统任务
6. 数据访问终⽌模式(abt):数据或指令预取终⽌时进⼊该模式,可⽤于处理存储器故障、实现虚拟存储器和存储器保护。

7. 未定义指令终⽌模式(und):未定义的指令执⾏时进⼊该模式,处理未定义的指令陷阱,当未定义的指令执⾏时进⼊该模式,可⽤于
⽀持硬件协处理器的软件仿真。

特别说明
运⾏模式可以通过软件来进⾏模式切换,或者发⽣各类中断、异常时CPU⾃动进⼊相应的模式。

除⽤户模式外,其余6种⼯作模式都属于特权模式。

特权模式中除了系统模式以外的其余5种模式称为异常模式。

⼤多数程序运⾏于⽤户模式。

进⼊特权模式是为了处理中断、异常、或者访问被保护的系统资源。

CPU指令环ring0,ring1,ring2,ring3

CPU指令环ring0,ring1,ring2,ring3

CPU指令环ring0,ring1,ring2,ring3Intel的CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3。

Windows只使⽤其中的两个级别RING0和RING3,RING0只给操作系统⽤,RING3谁都能⽤。

如果普通应⽤程序企图执⾏RING0指令,则Windows会显⽰“⾮法指令”错误信息。

ring0是指CPU的运⾏级别,ring0是最⾼级别,ring1次之,ring2更次之……拿Linux+x86来说,操作系统(内核)的代码运⾏在最⾼运⾏级别ring0上,可以使⽤特权指令,控制中断、修改页表、访问设备等等。

应⽤程序的代码运⾏在最低运⾏级别上ring3上,不能做受控操作。

如果要做,⽐如要访问磁盘,写⽂件,那就要通过执⾏系统调⽤(函数),执⾏系统调⽤的时候,CPU的运⾏级别会发⽣从ring3到ring0的切换,并跳转到系统调⽤对应的内核代码位置执⾏,这样内核就为你完成了设备访问,完成之后再从ring0返回ring3。

这个过程也称作⽤户态和内核态的切换。

RING设计的初衷是将系统权限与程序分离出来,使之能够让OS更好的管理当前系统资源,也使得系统更加稳定。

举个RING权限的最简单的例⼦:⼀个停⽌响应的应⽤程式,它运⾏在⽐RING0更低的指令环上,你不必⼤费周章的想着如何使系统回复运作,这期间,只需要启动任务管理器便能轻松终⽌它,因为它运⾏在⽐程式更低的RING0指令环中,拥有更⾼的权限,可以直接影响到RING0以上运⾏的程序。

当然有利就有弊,RING保证了系统稳定运⾏的同时,也产⽣了⼀些⼗分⿇烦的问题。

⽐如⼀些OS虚拟化技术,在处理RING指令环时便遇到了⿇烦,系统是运⾏在RING0指令环上的,但是虚拟的OS毕竟也是⼀个系统,也需要与系统相匹配的权限。

⽽RING0不允许出现多个OS同时运⾏在上⾯,最早的解决办法便是使⽤虚拟机,把OS当成⼀个程序来运⾏。

原⽂地址。

cpu 运行原理

cpu 运行原理

cpu 运行原理
CPU是计算机的核心部件之一,其运行原理是计算机体系结构的基石。

CPU的功能是解释和执行指令,以实现计算机的各种操作。

它包括控制单元和算术逻辑单元两部分,其中控制单元负责控制指令的流程,而算术逻辑单元则负责执行算术运算和逻辑运算。

CPU的运行原理可以分为两个基本阶段:取指令和执行指令。

首先,CPU从主存中读取指令,这个过程由控制单元完成。

然后,控制单元解码指令,确定需要执行的操作,并将指令发送到算术逻辑单元。

算术逻辑单元执行操作,并将结果存储回主存或寄存器中。

CPU的性能主要由两个方面决定:时钟频率和指令集。

时钟频率指CPU每秒钟执行的操作次数,一般以GHz为单位。

指令集是CPU可以执行的所有指令的集合,不同的CPU有不同的指令集。

指令集的复杂度和数量会影响CPU的性能和功耗,因此厂商会在指令集的设计上进行优化。

总之,CPU的运行原理是计算机体系结构的基础,其性能和功耗与时钟频率和指令集等因素密切相关。

了解CPU的运行原理可以帮助人们更好地理解计算机体系结构和优化计算机的使用。

- 1 -。

cpuinfo命令 cpuid level

cpuinfo命令 cpuid level

cpuinfo命令 cpuid levelC P U ID L e v e l指的是C P U I D指令返回的信息中的一个字段,用于指示C P U支持的特定功能和功能级别。

本文将详细介绍CP U I D指令和CP U I DL e v e l的概念以及它们在计算机系统中的作用。

第一部分:C P U I D指令的介绍C P U I D指令是一条用于向CP U请求特定信息的指令,在x86架构的处理器中广泛使用。

它通常用于获取处理器的相关信息,如制造商、型号、插槽类型、支持的功能等。

C P U I D指令的格式为"C P U I D(E A X,E C X)",其中E A X和E C X是输入寄存器,用于指定查询的信息类别和子类别。

执行C P U I D指令后,处理器会将返回值存放在E A X、E B X、E C X和ED X这四个输出寄存器中。

第二部分:C P U I D L e v e l的概念C P U ID L e v e l是C P U I D指令返回的信息中的一个字段,用于指示C P U支持的特定功能和功能级别。

具体来说,C P U I D L e v e l字段标识了C P U支持的最高功能级别,即支持的最大子类别。

不同的C P U支持不同的功能和功能级别,在CP U I DL e v e l字段的值可以方便地确定C P U的支持能力。

第三部分:C P U I D L e v e l的解读C P U ID L e v e l字段的值以二进制形式表示,每一位都代表了一个具体的功能或功能级别。

例如,第0位表示第一个功能,第1位表示第二个功能,以此类推。

如果某一位上为1,表示该C P U支持对应的功能;如果某一位上为0,则表示该C P U不支持对应的功能。

第四部分:C P U I D L e v e l的应用C P U ID L e v e l对于操作系统和应用程序开发人员非常重要。

Intel CPU的CPUID指令

Intel CPU的CPUID指令

Intel CPU的CPUID指令Intel有一个超过100页的文档,专门介绍cpuid这条指令,可见这条指令涉及内容的丰富。

记得去年的时候,曾经有个“英布之剑”问过我这条指令,当时并没有给出一个满意的回答,现在放假,想起来,把资料整理了一下。

很久以前确实用过这条指令,其实指令本身并没有什么难的,关键是看你有没有耐心研读完繁琐的资料,当然还得对CPU有一定的了解,如果“英布之剑”看到这篇文章,而且仍然需要更详细的资料,可以给我一个联系方式,或者相互之间可以交流一下。

cpuid就是一条读取CPU各种信息的一条指令,大概是从80486的某个版本开始就存在了。

似乎是从80386开始,当CPU被RESET 以后,CPU会在EDX寄存器中返回一个32bits的CPU签名(Processor Identification Signature),但这时候CPU还没有CPUID这条指令,后来出现了这条指令后,软件无需以来CPU复位就可以读出这个CPU签名,同时还可以读出很多CPU的相关信息。

CPUID这条指令,除了用于识别CPU(CPU的型号、家族、类型等),还可以读出CPU支持的功能(比如是否支持MMX,是否支持4MB的页等等),内容的确是十分丰富。

CPUID指令有两组功能,一组返回的是基本信息,另一组返回的是扩展信息,本文介绍基本信息部分,扩展信息部分下篇中介绍。

本文所在程序或程序片段,均使用MASM 6.11编译连接,可以在DOS(包括虚拟机的DOS下)运行。

1、如何判断CPU是否支持CPUID指令前面说过,大概是从80486开始才有的cpuid这个指令,是不是所有的80486家族CPU都有这个指令我也不是很清楚,但在EFLAGS 中的bit 21可以识别CPU是否支持CPUID指令,如下图:图1在8086和8088CPU中,FLAGS只有16位长,在80386CPU中,bit 21被保留未用,在支持CPUID指令的CPU中,这一位将为1。

CPU指令的流水线执行

CPU指令的流水线执行

CPU指令的流⽔线执⾏指令集是CPU体系架构的重要组成部分。

C语⾔的语法是对解决现实问题的运算和流程的⽅法的⾼度概况和抽象,其主要为算术、逻辑运算和分⽀控制,⽽指令集就是对这些抽象的具体⽀持,汇编只不过是为了让开发⼈员更好地记住指令,但它跟CPU所认的机器码其实是⼀⼀对应的,因此汇编也是低级语⾔。

CPU的指令执⾏⼀般包括取指、译码和执⾏,这是经典的三级指令执⾏流⽔线,教科书上往往以这三种过程来描述,arm7也是。

但是现代的CPU设计往往使⽤更⼴泛使⽤的5级流⽔线,也就是分为取指、译码、执⾏、访存和回写。

为什么要分为5级?这是由流⽔线的各个阶段的时间来决定的。

我们可以考虑现实⽣活的⼯⼚的流⽔线。

假设某流⽔线只有三个⼯序,有三个⼯⼈A、B、C,则这条⽣产线的效率就取决于效率最低的那个⼯⼈的效率。

现假设B做完其负责的⼯序需要10秒,⽽A和C完成只需要5秒,总共要完成4个产品。

那总时间应该是:5+10*4+5 = 50秒,(第⼀个5是A先做第⼀道⼯序的时间,这时B和C都得等,⽽最后⼀个5是C必须要等B全部完成后才能开始)即会出现C在等待,⽽B⼀直在忙死忙活的场景。

当然,⽆论怎样,流⽔线的执⾏总⽐完成没有流⽔好,就好⽐A、B、C负责的⼯作都由⼀个⼈去做,那做完⼀个得20秒。

全部做完得20*4 = 80秒。

最理性的场景就是三个⼈做事的效率是⼀样的,那就不会出现等待的情况。

那现在确实遇到B⼯作效率最低的问题,怎么解决呢?就是将B的⼯作重新分解,平均分成两个⼯序,也就是B1和B2,分别都是5秒完成,那完成的总时间是40秒。

CPU指令的三级流⽔执⾏正是遇到各步骤流⽔时间不均的问题,也就是取指和译码往往⽐较快,⽽执⾏包括运算和访问寄存器、内存或者回写等功能,因此执⾏的时间⼀般⽐取指和译码要长,取指和译码可以在单时钟周期内完成,但执⾏需要2到3个时钟周期才能完成。

要想得到更⾼的流⽔效率,就需要将执⾏部分分解为执⾏(运算等)、访存(内存)和回写(寄存器)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

cpu指令运行说明
cpu指令运行说明一计算机每执行一条指令都可分为三个阶段进行。

即取指令-----分析指令-----执行指令。

取指令的任务是:根据程序计数器pc中的值从程序存储器读出现行指令,送到指令寄存器。

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。

如指令要求操作数,则寻找操作数地址。

计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。

但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。

因而一开机即可执行指令。

下面我们将举个实例来说明指令的执行过程:
开机时,程序计算器pc变为0000h。

然后单片机在时序电路作用下自动进入执行程序过程。

执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

例如执行指令:mov a,#0e0h,其机器码为“74h e0h”,该指令的功能是把操作数e0h送入累加器,
0000h单元中已存放74h,0001h单元中已存放e0h。

当单片机开始运行时,首先是进入取指阶段,其次序是:
1 程序计数器的内容(这时是0000h)送到地址寄存器;
2 程序计数器的内容自动加1(变为0001h);
3 地址寄存器的内容(0000h)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000h的单元被选中;
4 cpu使读控制线有效;
5 在读命令控制下被选中存储器单元的内容(此时应为74h)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。

至此,取指阶段完成,进入译码分析和执行指令阶段。

由于本次进入指令寄存器中的内容是74h(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到a累加器,而该数是在这个代码的下一个存储单元。

所以,执行该指令还必须把数据(e0h)从存储器中取出送到cpu,即还要在存储器中取第二个字节。

其过程与取指阶段很相似,只是此时pc已为0001h。

指令译码器结合时序部件,产生74h操作码的微操作系列,使数字e0h 从0001h单元取出。

因为指令是要求把取得的数送到a累加器,所以取出的数字经内部数据总线进入a累加器,而不是进入指令寄存器。

至此,一条指令的执行完毕。

单片机中pc="0002h",pc 在cpu每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。

这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。

cpu就是这样一条一条地执行指令,完成所有规定cpu指令运行说明二首先,cpu的内部结构可以分为控制
单元,逻辑运算单元和存储单元(包括内部总线及缓冲器)三大部分。

cpu的工作原理就像一个工厂对产品的加工过程:进入工厂的原料(程序指令),经过物资分配部门(控制单元)的调度分配,被送往生产线(逻辑运算单元),生产出成品(处理后的数据)后,再存储在仓库(存储单元)中
最后等着拿到市场上去卖(交由应用程序使用)。

在这个过程中,我们注意到从控制单元开始,cpu就开始了正式的工作,中间的过程是通过逻辑运算单元来进行运算处理,交到存储单元代表工作的结束。

我们知道,数据从输入设备流经内存,等待cpu的处理,这些将要处理的信息是按字节存储的,也就是以8位二进制数或8比特为1个单元存储,这些信息可以是数据或指令。

数据可以是二进制表示的字符、数字或颜色等等。

而指令告诉cpu 对数据执行哪些操作,比如完成加法、减法或移位运算。

我们假设在内存中的数据是最简单的原始数据。

首先,指令指针(instructionpointer)会通知cpu,将要执行的指令放置在内存中的存储位置。

因为内存中的每个存储单元都有编号(称为地址),可以根据这些地址把数据取出,通过地址总线送到控制单元中,指令译码器从指令寄存器ir中拿来指令,翻译成cpu可以执行的形式,然后决定完成该指令需要哪些必要的操作,它将告诉算术逻辑单元(alu)什么时候计算,告诉指令读取器什么时候获取数值,告诉指令译码器什么时候翻译指令等等。

假如数据被送往算术逻辑单元,数据将会执行指令中规定的算术运算和其他各种运算。

当数据处理完毕后,将回到寄存器中,
通过不同的指令将数据继续运行或者通过db总线送到数据缓存器中。

基本上,cpu就是这样去执行读出数据、处理数据和往内存写数据3项基本工作。

但在通常情况下,一条指令可以包含按明确顺序执行的许多操作,cpu的工作就是执行这些指令,完成一条指令后,cpu的控制单元又将告诉指令读取器从内存中读取下一条指令来执行。

这个过程不断快速地重复,快速地执行一条又一条指令,产生你在显示器上所看到的结果。

我们很容易想到,在处理这么多指令和数据的同时,由于数据转移时差和cpu处理时差,肯定会出现混乱处理的情况。

为了保证每个操作准时发生,cpu需要一个时钟,时钟控制着cpu所执行的每一个动作。

时钟就像一个节拍器,它不停地发出脉冲,决定cpu的步调和处理时间,这就是我们所熟悉的cpu的标称速度,也称为主频。

主频数值越高,表明cpu的工作速度越快。

看了“cpu指令如何运行的”文章的。

相关文档
最新文档