建设 信用中国 网站,wordpress去掉文章rss,自做网站代码是多少,创意设计公司的经营范围CPU内部结构
总线一些自定义部件总线图内存指令执行流程:取指令,译码,执行pc做的事内存地址寄存器内存缓存寄存器指令寄存器,译码第一步指令寄存器传递地址到内存地址寄存器指令MOV_A的过程(译码第二步)第一条指令执行完毕第三条指令的执行第四条指令第四条指令不同的执行流程…CPU内部结构
总线一些自定义部件总线图内存指令执行流程:取指令,译码,执行pc做的事内存地址寄存器内存缓存寄存器指令寄存器,译码第一步指令寄存器传递地址到内存地址寄存器指令MOV_A的过程(译码第二步)第一条指令执行完毕第三条指令的执行第四条指令第四条指令不同的执行流程整体流程
内部数据总线
使用到的有8位寄存器(用于输入),4位寄存器(用于内存地址,只能寻址16个内存单元[2^4]),简化版加法ALU寄存器带了时钟, 由时钟统一控制操作ALU不需要时钟, 输入端的寄存器由时钟控制总线就是一根根传送电信号的线 -_-内部的意思就是封装在CPU内部的 -_-外部总线就是主板上的 _反正总线,就是一堆线但在任意时刻,只能由一个部件对其读/写,因此下面的所有部件都增加了 可写(WriteEnable) / 可读 (OutEnable,也可以叫可输出)在下面的图中有数据总线和地址总线,见名知意, 数据总线传送数据, 地址总线传送地址 ;- )注意,数据包含指令,都是二进制, 是数据还是指令由CPU本身去识别(x86,arm …) 下面的汇编指令是我自己模拟的
下面有CPU整个执行流程,由于没有控制单元,因此纯手工操作 一些CPU内部需要用到的部件
简化版加法ALU
图上的C是进位,目前恒为零即可
4位寄存器,用于内存地址 8位寄存器,用于输入 总线图
时钟使用按钮代替时钟用于让所有的电路自动工作,每触发一次,所有的相连的寄存器就工作一次总的来说时钟是一切电路自动化工作的源头古代碾磨需要一头牛来转圈,牛跑的越快碾磨速度越快, 振荡器速度越快,频率越高而时钟的取名我猜就是类似 , 下一时刻时钟吼了一句大家一起干活!(脉冲信号),让所有的相连的电路一起干活时钟的另一个作用是编程中的术语来说就是同步例如:mov 寄存器B,0x99;mov 寄存器A, 寄存器B寄存器B中的值有没有准备好? 什么时候能执行mov操作?ip/Eip什么时候往下移动?一旦有了时钟,就容易同步操作 从内存中读取指令
为简化汇编指令, 这里只使用4条指令来演示, 自己模拟的汇编指令汇编指令一般都有 操作码 ,操作数 2个部分组成操作码对应要做什么, 操作数对应要对这个数做什么操作,在这里操作数只能对内存地址寻址
操作码操作码二进制解释MOV_A1000复制数据到寄存器AMOV_B1001复制数据到寄存器BMOV_TO_ADDR1010复制寄存器C的数据到内存地址ADD1011把寄存器A,B相加存放到寄存器C
指令相关
为简化指令,每个操作码固定占用4位,操作数也占用4位, 一个字节即可存放操作码放高4位,操作数放低4位当前的寻址寄存器是4位,只能寻址16个地址线,因此对应操作数来说正好注意这里的操作数只能是内存地址
指令举例
操作码操作码二进制操作数二进制解释内存数据对应汇编伪指令MOV_TO_ADDR10100010把寄存器C的数据复制到内存地址0010(0x02)10100010mov [0010], cMOV_A10001111把内存地址0xF的数据复制到寄存器A10001111mov a,[0x0f]MOV_B10011101把地址0x0D的数据复制到寄存器B10011101mov b,[0x0D]ADD1011无ADD没有操作数,固定只会寄存器AB,输出到寄存器C10110000add a,b; mov c,a
下面内存中的4条指令是
指令二进制指令解释10001010把地址1010的数据加载到寄存器A10011111把地址1111的数据加载到寄存器B10110000把寄存器A,B相加存放到寄存器C10101111把寄存器C的数据复制到地址1111处 取指令,处理指令(译码),执行
所涉及到的几个部件PC: 程序位置计数器, 由于当前内存中只有4条指令,因此特意把PC设置成2位的计数器,0000 ~ 0011,但内存地址寄存器是4位的,所以把高2位设置成0内存地址寄存器 - MAR , 4位寄存器(最大寻址16字节)CPU指令寄存器 - IR , 8位寄存器内存缓存寄存器 , 8位寄存器外部内存 (外部是意思是 相对于 其他寄存器都是CPU内部的 ), 内存只有16字节CPU数据外部总线和内部数据总线,地址总线这3根线的位宽取决于相连部件的输出,例如: PC输出的位宽是4位,内部地址总线位宽则是4 内存输出的位宽是8位, 外部数据总线的位宽是8 下面分部说明每个部件要干的活 PC所做的事
2位的计数器,因为内存中只有4条指令输出端连接CPU内部地址总线,传输到 内存地址寄存器但内存地址寄存器输入端是4位的,因此把PC的高2位置0告诉 内存地址寄存器, 当前需要去获取哪个位置(地址)当前PC的计数为0,因此传递过去也是0把当前计数器的位置输出到 内存地址寄存器把自身1, PC 所存放的永远是下一条指令的位置如下图所示,一开始会打开PC的OE(out Enable), 打开内存地址寄存器的WE(Write Enable), 时钟一叫唤,他俩开始工作接下去, 关闭其他状态, 开启PC的WE, 时钟一叫, PC自身1
内存地址寄存器
此寄存器用于传递地址输入端连接CPU内部地址总线,输出端连接CPU外部地址总线, 总线连接到内存两种情况:1.把PC告诉自己的地址输出到CPU外部地址总线所相连的内存2.把指令寄存器输出的地址, 传输与CPU外部地址总线相连的内存(这一步下面的指令寄存器有说明) 内存缓存寄存器
这个寄存器与CPU内部数据总线相连, 也跟外部数据总线相连这个内外相连的寄存器: 写入端: 外部数据总线能对其写入, 内部数据总线也能对其写入 输出端: 能输出到外部数据总线,也能输出到内部数据总线 下图所示: 从内存地址寄存器(地址0000,此地址由PC传递过来) 通过地址总线传送到内存 内存把对应的二进制数据 通过 外部数据总线 传送到 内存缓存寄存器 此时,缓存寄存器有了数据,接着会把数据传递到指令寄存器 当前获取的内存地址:0000 中的二进制是10001010 16进制0x8A 此二进制是一条汇编指令,上面说过
通过内存地址寄存器传输到内存,内存输出到外部数据总线,再传输进内存缓存寄存器 内存缓存寄存器通过内部数据总线传输到指令寄存器 指令寄存器
上面说过, 内存缓存寄存器 同时连接外部数据总线和内部数据总线内存缓存寄存器 将把获取的数据传送到 指令寄存器此时 指令寄存器 内含的数据:0x8A(10001010) 10001010对应的指令是MOV_A:把1010地址的数据传送到寄存器A 高4位1000 是 自己模拟的汇编指令:MOV_A, 把数据复制到寄存器A的操作码 由于我自己模拟的汇编指令, 低4位都是需要从内存地址处获取数据(非立即数),因此将再次把低4位 1010 传递给 内存地址寄存器 一旦指令寄存器获取数据后,开始译码,这是一条MOV_A指令,后面低4位地址需要再次获取,因此将把低4位传送到内存地址寄存器下图所示,指令寄存器低4位(0-3位)输出到 CPU内部地址总线 进而 传递进 内存地址寄存器
指令寄存器将低4位传送到内存地址寄存器 传送动图 回到内存地址寄存器,外部内存,内存缓存寄存器
内存地址寄存器获取4位地址后再次通过外部地址总线传递到内存内存将此地址的1个字节的数据通过外部数据总线传送到 内存缓存寄存器内存缓存寄存器将又一次把数据通过 内部数据总线 传送到 指令寄存器 这次传送过程中, 内存地址寄存器将地址0x0A(1010)传送给内存 内存地址0x0A所存放的数据是:0x08 内存缓存寄存器此时还保留着上次的值:0x8A,经过外部数据总线传送进来后,数据变成了:0x08
将指令寄存器传送的地址,传送到内存地址寄存器,通过外部地址总线,传送到内存,再通过外部数据总线传送到内存缓存寄存器
内存数据 数据传递动图 指令MOV_A的过程(译码)
译码:根据指令,执行相对应的操作,在这就是需要把数据复制到寄存器A根据上面流程, 此时 指令寄存器的高位 1000, 对应MOV_A, 地址:1010 对应的内存数据也传送到 内存缓存寄存器中接下来就要开始执行指令了,把 内存缓存寄存器的数据通过内部数据总线传送到 寄存器A 中注:内存缓存寄存器的输出端连接内部数据总线,也连接外部数据总线
内存缓存寄存器的数据传递到寄存器A 到此内存中的第一条指令执行完毕
内存地址指令二进制指令解释执行完成0x0010001010把地址1010的数据加载到寄存器AYes0x0110011111把地址1111的数据加载到寄存器BNo0x0210110000ADDNO0x0310101111把寄存器C的数据复制到地址1111处NO
第二条指令与第一条指令类似,除了内存地址和寄存器不同,其他一致这里就省略第二条指令的执行流程 开始第三条指令的执行
先回忆下前面的流程, 第一条指令执行完后PC的值:1PC的特性是:永远指向下条指令位置第二条指令开始时 先把PC传送到内存地址寄存器 然后PC自身1, 此时PC的值:2 省略其他流程 地址1111(0x0f)的数据是0x01.因此寄存器B的数据是:0x01 当第二条指令执行完毕后PC的值:2,也就是指向了第三条指令: 10110000 ADD第三条指令简述步骤: PC输出- 内存地址寄存器 - PC 1 内存地址寄存器 - 内存 - 写入内存缓存寄存器 内存缓存寄存器 - 指令寄存器 指令寄存器开始译码 译码:此时这是一条ADD指令,不需要再去传送地址,直接让寄存器A,寄存器B 传送到 8位ALU加法器 中 最后ALU输出的结果存放到寄存器C中
下图是执行完第二条指令的状态图 执行第三条指令,直到指令被放入指令寄存器中 指令寄存器开始译码并执行 开始第四条指令
第四条指令简述步骤: 这条指令后,PC将回归0, 意味着这条指令执行完后,又会重新回到第一条指令 PC-内存地址寄存器 - PC1(溢出,PC此时又回到了0,PC是2位寄存器) 内存地址寄存器 - 内存 - 内存缓存寄存器 内存缓存寄存器 - 指令寄存器 这是一条MOV_TO_ADDR指令:10101111(0xAF) 指令寄存器开始译码 译码:这是一条把寄存器C复制到内存地址的指令
下图是执行第四条指令,直到指令被传送到指令寄存器中 第四条指令的不同 这和之前的指令都不一样,之前的指令是读取内存,现在需要写内存 不仅需要指定内存地址,也需要把数据准备好,指定在哪个地址上写什么数据 内存缓存寄存器 即连接内部数据总线,也连接外部数据总线,因此需要把寄存器C的数据输出到 内存缓存寄存器中 对于内存地址的指定,就需要依靠由 指令寄存器分离的低4位传递到 内存地址寄存器中 需要准备好的寄存器有: 寄存器C, 内存缓存寄存器,指令寄存器, 内存地址寄存器 数据: 通过寄存器C 传递到内存缓存寄存器; 地址: 通过指令寄存器分离的低4位,传递到内存地址寄存器 在数据和地址准备好后, 写入进: 内存缓存寄存器,内存地址寄存器, 下图1 此时有了数据和地址, 需要再次往内存写入地址和数据,下图2 往内存写完后,又会循环到第一条指令(PC0)
图1. 把数据和地址分别传送给内存地址寄存器,内存缓存寄存器 图2. 把内存缓存寄存器和内存地址寄存器的数据写入内存 整体流程,全程手动,老夫累了
0.step 0 , PC 清空状态(把其他开关全关了) 打开PC OE, 打开 内存地址寄存器 WE PC 输出位置(2位) 到 内存地址寄存器 清空状态 打开 PC WE, PC自身加1 (永远指向下一条位置) 1.step 1,内存地址寄存器传送地址,内存缓存寄存器获取数据 清空状态 打开 内存地址寄存器 OE, 打开 内存缓存寄存器 WE, 打开 内存 OE 通过 内存地址寄存器 传输地址到内存 内存收到的地址把此地址的一个字节(二进制不分[数据,指令])通过外部数据总线 传输到 内存缓存寄存器 2.step 2, 内存缓存寄存器把数据传送到指令寄存器 清空状态 打开内存缓存寄存器OE,打开指令寄存器WE,时钟一吼,立即传送到位 3.step 3,指令寄存器干活 清空状态 开始译码 拆分1个字节,高4位操作码,低4位操作数(内存地址) 如果操作码是ADD,则跳转到step 7 如果操作码是MOV_TO_ADDR,跳转到step 8 如果操作码是MOV_A,MOV_B则往下执行 把低4位的地址传送到 内存地址寄存器 打开内存地址寄存器WE,打开 指令寄存器OE,时钟一吼,低4位的地址就传送到了 内存地址寄存器 4.step 4, 执行一次step 1, 传递地址获取内存数据 执行一次step 1,此时 内存缓存寄存器中有了数据 这个时候根据指令本身来执行(译码),此时指令寄存器中的指令是1000,即MOV_A,因此需要把数据传送到寄存器A 5.step 5, 把数据传送到寄存器A 清空状态 打开 内存缓存寄存器的OE, 打开寄存器A的WE,时钟脉冲一到, 一个字节的数据通过 CPU内部数据总线传送到了寄存器A,一条指令执行完毕 6.step 6, 回到step 07.step 7, 执行ADD 清空状态 打开寄存器A,寄存器B的OE,打开ALU的OE,打开寄存器C的WE, 时钟一到, AB的结果就被存放在了寄存器C ADD执行完毕,回到step 0 8.step 8, 执行MOV_TO_ADDR 清空状态 准备好数据与地址,打开指令寄存器OE,打开内存地址寄存器WE,打开寄存器C的OE, 打开内存缓存寄存器的WE,时钟一喊, 地址和数据都准备完成 清空状态 打开 内存地址寄存器OE, 打开 内存缓存寄存器OE,打开 内存WE (往内存的某个地址上写数据) 至此最后一条指令执行完毕 再次回到step 0, 此时PC:0,因此将循环往复的从头执行 文章转载自: http://www.morning.djpzg.cn.gov.cn.djpzg.cn http://www.morning.cmhkt.cn.gov.cn.cmhkt.cn http://www.morning.txltb.cn.gov.cn.txltb.cn http://www.morning.twwts.com.gov.cn.twwts.com http://www.morning.jbpodhb.cn.gov.cn.jbpodhb.cn http://www.morning.tynqy.cn.gov.cn.tynqy.cn http://www.morning.yrgb.cn.gov.cn.yrgb.cn http://www.morning.qwpyf.cn.gov.cn.qwpyf.cn http://www.morning.bqmsm.cn.gov.cn.bqmsm.cn http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn http://www.morning.blfgh.cn.gov.cn.blfgh.cn http://www.morning.tfqfm.cn.gov.cn.tfqfm.cn http://www.morning.kpbgvaf.cn.gov.cn.kpbgvaf.cn http://www.morning.rfrx.cn.gov.cn.rfrx.cn http://www.morning.qcwck.cn.gov.cn.qcwck.cn http://www.morning.mlhfr.cn.gov.cn.mlhfr.cn http://www.morning.rqzyz.cn.gov.cn.rqzyz.cn http://www.morning.trkl.cn.gov.cn.trkl.cn http://www.morning.jfbrt.cn.gov.cn.jfbrt.cn http://www.morning.bfcrp.cn.gov.cn.bfcrp.cn http://www.morning.bfysg.cn.gov.cn.bfysg.cn http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn http://www.morning.cfjyr.cn.gov.cn.cfjyr.cn http://www.morning.mjzcp.cn.gov.cn.mjzcp.cn http://www.morning.wtrjq.cn.gov.cn.wtrjq.cn http://www.morning.rwpjq.cn.gov.cn.rwpjq.cn http://www.morning.dztp.cn.gov.cn.dztp.cn http://www.morning.tdxlj.cn.gov.cn.tdxlj.cn http://www.morning.kzyr.cn.gov.cn.kzyr.cn http://www.morning.wzwpz.cn.gov.cn.wzwpz.cn http://www.morning.jopebe.cn.gov.cn.jopebe.cn http://www.morning.rxpp.cn.gov.cn.rxpp.cn http://www.morning.xtlty.cn.gov.cn.xtlty.cn http://www.morning.rlqwz.cn.gov.cn.rlqwz.cn http://www.morning.bmgdl.cn.gov.cn.bmgdl.cn http://www.morning.fykqh.cn.gov.cn.fykqh.cn http://www.morning.pmhln.cn.gov.cn.pmhln.cn http://www.morning.zbqry.cn.gov.cn.zbqry.cn http://www.morning.tlnbg.cn.gov.cn.tlnbg.cn http://www.morning.dwyyf.cn.gov.cn.dwyyf.cn http://www.morning.jbtwq.cn.gov.cn.jbtwq.cn http://www.morning.gwkwt.cn.gov.cn.gwkwt.cn http://www.morning.bfmrq.cn.gov.cn.bfmrq.cn http://www.morning.ryjqh.cn.gov.cn.ryjqh.cn http://www.morning.csnch.cn.gov.cn.csnch.cn http://www.morning.wtbzt.cn.gov.cn.wtbzt.cn http://www.morning.fmznd.cn.gov.cn.fmznd.cn http://www.morning.lthpr.cn.gov.cn.lthpr.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.wypyl.cn.gov.cn.wypyl.cn http://www.morning.yswxq.cn.gov.cn.yswxq.cn http://www.morning.flzqq.cn.gov.cn.flzqq.cn http://www.morning.khfk.cn.gov.cn.khfk.cn http://www.morning.xkpjl.cn.gov.cn.xkpjl.cn http://www.morning.kbqbx.cn.gov.cn.kbqbx.cn http://www.morning.qgfhr.cn.gov.cn.qgfhr.cn http://www.morning.qmqgx.cn.gov.cn.qmqgx.cn http://www.morning.tjmfz.cn.gov.cn.tjmfz.cn http://www.morning.fnfhs.cn.gov.cn.fnfhs.cn http://www.morning.skkln.cn.gov.cn.skkln.cn http://www.morning.fxzlg.cn.gov.cn.fxzlg.cn http://www.morning.jrlxz.cn.gov.cn.jrlxz.cn http://www.morning.hrtct.cn.gov.cn.hrtct.cn http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn http://www.morning.nkllb.cn.gov.cn.nkllb.cn http://www.morning.hmwjk.cn.gov.cn.hmwjk.cn http://www.morning.bhxzx.cn.gov.cn.bhxzx.cn http://www.morning.kxwsn.cn.gov.cn.kxwsn.cn http://www.morning.ie-comm.com.gov.cn.ie-comm.com http://www.morning.zsthg.cn.gov.cn.zsthg.cn http://www.morning.dyrzm.cn.gov.cn.dyrzm.cn http://www.morning.ccpnz.cn.gov.cn.ccpnz.cn http://www.morning.slmbg.cn.gov.cn.slmbg.cn http://www.morning.ydrn.cn.gov.cn.ydrn.cn http://www.morning.yltnl.cn.gov.cn.yltnl.cn http://www.morning.xbmwm.cn.gov.cn.xbmwm.cn http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn http://www.morning.rmpkn.cn.gov.cn.rmpkn.cn http://www.morning.pbmg.cn.gov.cn.pbmg.cn http://www.morning.qcymf.cn.gov.cn.qcymf.cn