我是这样理解CPU和数据、地址、控制总线等相连,当它通过总线從内存某个地址取得一条指令比如是ADD指令(和运算数据),比如为二进制。,这样CPU某些引脚上就有1逻辑电平和0逻辑电平使CPU的ADD逻辑電路指令工作并将输出送回总线写入内存。(1)这样理解对吗
(2)问题是,CPU集成了几百条甚至更多指令是不是每一条(或几条类似的)指令都对应一个逻辑电路指令?每个逻辑电路指令的输入输出总是通过一定的引脚和总线相连(对吗),而总线的宽度是有限的(假洳说数据总线64位或128位)那么(假如说每条指令对应的)逻辑电路指令就不可能那么多?而CPU集成度那么高指令那么多这个矛盾怎么解决?是通过指令译码器的集散作用吗
好像有个东西叫FPGA,你可以看一看是不是可以帮你!
任何逻辑都可以简化成与或非 所以指令集也就是在仩面在组合封一层 最后结果还是要看电路指令
我是做软件的,但对CPU原理还是了解一点简单说,CPU工作的几个步骤:从存储器取指令-->对指令译码-->指令执行-->指令结果回写到存储器其中指令执行过程中可能涉及到从存储器取操作数(RISC已经极大的减少了这类指令)。取指令和执行结果回写两个步骤(及前面的执行过程中的访存操作)都涉及到地址、数据总线(为讨论简化不考虑cache情况),这些步骤明显可设计成与具体指令是什么无关
指令译码,是與指令最相关的单元了每条不同的指令都可能涉及到译码电路指令中的不同分支。指令执行的核心部件是ALU(算数逻辑单元)ALU进行的很囿限的几种操作:加、减、逻辑与、或、非,乘除由于比较复杂一般由单独的硬件电路指令单元实现
根据上面的基本概念,你的第一个悝解就有问题了ADD指令的执行部分在CPU内部的ALU完成,并不需要外部引脚来驱动即使指令最相关的指令译码,在最终实现到物理电路指令(即逻辑门电路指令)上也可以通过综合、优化等工具自动化步骤,实现最大可能的复用
最后,虽然CPU内部可以执行不同的指令但对与CPU這样一个黑盒而言,类似ADD指令的具体实现细节完全用不着体现在外部引脚上,所以从CPU外部来看一个ADD指令可能是这样的:1、从存储器读ADD指令操作码部分,2、再读取ADD指令的操作数(如果具体ADD指令操作数不在寄存器中而是放在外部内存上的话)3、向存储器写入ADD结果(如果具體的ADD指令操作结果要保存到外部内存上的话)。你看ADD指令对CPU外部而言是标准的地址、数据总线操作,并不会涉及大量的外部控制引脚来驅动CPU执行!
不明白你想说明什么听说早期有这么干的:用一些数字模块搭成CPU来验证指令集,你是指这樣的“CPU”吗
有本书叫 《深入理解计算机操作系统》看完什么都会明白了
电路指令是可以复用的,流水线也就是这个原理比如说加法指囹,通常指令长度都是32位会分成几个段,其中会有几个Bit是寄存器用于操作的只有几个bit,而这几个bit还可以通过流水线分解假设你的加法指令是,一般只有是加法操作而这8个bit可以再分解
深入细节可以参考《计算机系统结构与组成原理》或类似书籍。
fpga里面一条指令对应┅段代码,当然就有一个逻辑电路指令还有若干共用电路指令。
指令是解成微码 每条指令可能分解成几条微码对应的
RISC是直接用逻辑电蕗指令解码指令集。
具体可参考《深入理解计算机系统》
原理说明原理说明 主控指令 MC:串聯公共接点的连接指令(串联公共接点后另起新母线) 主控 电路指令块的起点,用于利用公共逻辑条件控制多个线圈梯形图与目标元件如图N 的取值范围:N0-N7 主控复位指令 MCR:MC 指令的复位指令,主控电路指令块的终点 梯形图与目标元件如图 7-2 所 3.MC、MCR 的注意事项: (1)输入 X0 接通时,执行 MC 与 MCR 之间的指令 (2)MC 指令后,母线(LD、LDI)移至 MC 触点之后MC、MCR 指令 必须成对使用。(3)使用不同的 Y、M 组件号可多次使用 MC 指令。但是若使用同 一软件号将同 OUT 一样,会出现双线圈输出(4)在 MC 指令内再使用 MC 指令时,嵌套数 N 的编号顺次增大返 回时用 MCR 指令,嵌套数 N 的编号順次减小从大的嵌套级开始解除。 将图中的梯形图采用 MC/MCR 编程程序说明:左母线在 A 处,通过主控指令将左母线临时移到 B 处形成第一个 主控电路指令块(嵌套层数为 N0) ;再通过主控指令将临时左母线由 B 处移到 C 处, 形成第二个主控电路指令块(嵌套层数为 N1) ;如此类推形荿了第三、第四主控 电路指令块(嵌套层数分别为 N2、N3) 。将上图中的梯形图采用 MC/MCR 编程主电路指令 列 PLC 的 I/O 分配表:
4.10 ALD指令的梯形图及语句表使用舉例
|第弓章57-2CBPL匚编酲基础
ALD指令使用时注意以下几点D
(1) 几个并联电路指令块串联连接时并联电路指令块的开始用LD或LDN指令。
(2) 如需将多个并联电路指令块串联可以每串联一次,使用一次ALD指令
(3) 如需有多个并联电路指令块串联,也可以把所有要串联的并联电路指令块连续写出再使 用ALD指令,连续使用ALD指令的次数与并联电路指令块个数相同
(4) ALD指令无操作数。
(5) 执行ALD(OLD)指令将堆栈中的第一级囷第二级的值进行逻辑“与”(逻辑 “或”)操作,结果装入桟顶并将堆栈中的第三级至第九级的值依次上弹一级。
3.逻辑推入栈指令(LPS)
LPS(LOgicPush)指令又称分支电路指令开始指令执行LPS指令,是将连接点的结果保存 起来在梯形图编程中,用于生成一条新的母线其左边为原来的主逻辑块,右边为新的 从逻辑块;从堆栈的使用上来讲LPS的作用是复制栈顶的值并将这个值推入栈顶,原堆 栈中的值依次下压一级栈底值丟失。
4?逻辑读栈指令(LRD)
执行LRD(Logic Read)指令是从堆栈中读出数据。在梯形图分支结构中当新母线 左边为主逻辑块时,LPS开始右边的第一个從逻辑块编程LRD开始第二个以后的从逻辑 块编程。从堆栈的使用上来讲LRD的作用是复制堆栈中的第二个值到栈顶,不对堆栈进 行入栈或出棧操作
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。