導覽
近期變更
隨機頁面
新手上路
新頁面
優質條目評選
繁體
不转换
简体
繁體
18.226.87.67
登入
工具
閱讀
檢視原始碼
特殊頁面
頁面資訊
求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。
檢視 指令周期 的原始碼
←
指令周期
前往:
導覽
、
搜尋
由於下列原因,您沒有權限進行 編輯此頁面 的動作:
您請求的操作只有這個群組的使用者能使用:
用戶
您可以檢視並複製此頁面的原始碼。
{| class="https://cn.bing.com/images/search?view=detailV2&ccid=NYdtH2Ij&id=A8E09D37B0FB1AF2D6C46BBEEC27AA951C21FF6B&thid=OIP.NYdtH2Ij6A9o13ury4TrgAAAAA&mediaurl=https%3a%2f%2fimg-blog.csdnimg.cn%2fimg_convert%2fece475e8966fd70bf531821c59238bca.png&exph=229&expw=389&q=%e6%8c%87%e4%bb%a4%e5%91%a8%e6%9c%9f&simid=608045023202117244&FORM=IRPRST&ck=AE5B57367C815C89ABD4B0147936F14C&selectedIndex=194&ajaxhist=0&ajaxserp=0" style="float:right; margin: -10px 0px 10px 20px; text-align:left" |<center>'''指令周期图2'''<br><img src="https://img-blog.csdnimg.cn/img_convert/ece475e8966fd70bf531821c59238bca.png"></center><small> 圖片來自</small> |} '''取出一条指令并执行这条指令的时间''' 指令周期是取出一条指令并执行这条指令的时间。一般由若干个[[机器周期]]组成,是从取指令、分析指令到执行完所需的全部时间。 指令周期类型有非访内指令的[[指令周期]]、取数指令的指令周期、存数指令的指令周期、空操作指令和转移指令的指令周期。 *中文名:[[指令周期]] *外文名:Instruction Cycle *概 述:完整执行一条指令所需要的时间 ==基本概念== 指令周期,读取-执行周期(fetch-and-execute cycle)是指CPU要执行指令经过的步骤。 计算机之所以能自动地工作,是因为[[CPU]]能从存放程序的内存里取出一条指令并执行这条指令;紧接着又是取指令,执行指令,如此周而复始,构成了一个封闭的循环。除非遇到停机指令,否则这个循环将一直继续下去。 指令周期 :CPU从内存取出一条指令并执行这条指令的时间总和。 CPU周期 :又称[[机器周期]],CPU访问一次内存所花的时间较长,因此用从内存读取一条指令字的最短时间来定义。 时钟周期: 通常称为节拍脉冲或T周期。一个CPU周期包含若干个[[时钟周期]]。 ==类别== '''非访内指令''' CLA是一条非访内指令,它需要两个CPU 周期,其中取指令阶段需要一个CPU周期,执行指令阶段需要一个CPU周期。 '''1、取指令阶段''' (1)[[程序计数器]]PC的内容20(八进制)被装入[[地址寄存器]]AR; (2)程序计数器内容加1,变成21,为取下一条指令做好准备; (3)地址寄存器的内容被放到[[地址总线]]上; (4)所选存储器单元20的内容经过[[数据总线]],传送到[[数据缓冲寄存器]]DR; (5)缓冲寄存器的内容传送到[[指令寄存器]]IR; (6)指令寄存器中的操作码被译码或测试; (7)CPU识别出是指令CLA,至此,取指令阶段即告结束。 '''2、执行指令阶段''' (1)操作控制器送一控制信号给算术逻辑运算单元ALU; (2)ALU响应该控制信号,将累加寄存器AC的内容全部清零,从而执行了CLA指令。 ===取数指令=== '''1.送操作数地址''' 第二个CPU周期主要完成送操作数地址。在此阶段,CPU的动作只有一个,那就是把指令寄存器中的地址码部分(30)装入地址寄存器,其中30为内存中存放操作数的地址。 '''2.两操作数相加''' 第三个CPU周期主要完成取操作数并执行加法操作中。在此阶段,CPU完成如下动作: (1)把地址寄存器中的操作数的地址发送到地址总线上。 (2)由存储器单元30中读出操作数,并经过数据总线传送到缓冲寄存器。 (3)执行加操作:由[[数据缓冲寄]]存器来的操作数可送往ALU 的一个输入端,已等候在[[累加器]]内的另 一个操作数(因为CLA指令执行结束后累加器内容为零)送往ALU的另一输入端,于是ALU将两数相加,产生运算结果为0+6=6。这个结果放回累加器,替换了累加器中原先的数0 。<ref>[https://baike.baidu.com/reference/3219726/bc4e2lPlUZd6HMOx1Xr-agyhpbT0NjjD966j2Mm-R8ENS-YKrCB6JAM0Qx6NnC72i5LfaR5ndTFjiNoWSfwE6fKVQRa54oANpLcyB42aLcFh6nEgt8I_0S2D76Arpd3ksyvTaXHinKob8HIxEBU2pB6Zjfy_YBuJLJbww8NU8x_FJ8ZaLb0FFQ1NuUzfrLM7W0JPxWRAnj_Ry2Ls-DVEYQ0l4MffPdpGutotc7IzmVIb_KlKavax5GYkbw .湖南学院网,引用日期2012-10-12] </ref> ===存数指令=== STA指令的指令周期由三个CPU周期组成。 '''1.送操作数地址''' 在执行阶段的第一个CPU周期中,CPU完成的动作是把指令寄存器中地址码部分的形式地址40装到地址寄存器。其中数字40是操作数地址。 '''2.存储和数''' 执行阶段的第二个CPU周期中,[[累加寄存器]]的内容传送到缓冲寄存器,然后再存入到所选定的存储单元(40)中。CPU完成如下动作: (1)累加器的内容被传送到数据缓冲寄存器DR; (2)把地址寄存器的内容发送到地址总线上,即为将要存入的数据6的内存单元号; (3)把缓冲寄存器的内容发送到数据总线上; (4)数据总线上的数写入到所选中的存储器单元中,即将数6写入到存储器40号单元中。注意 在这个操作之后,累加器中仍然保留和数6,而存储器40号单元中原先的内容被冲掉 。 ===空操作指令=== 第四条指令即“NOP”指令,这是一条空操作指令。其中第一个CPU周期中取指令,CPU把23号单元的“NOP”指令取出放到指令寄存器,第二个CPU周期中执行该指令。因译码器译出是“NOP”指令,第二个CPU周期中操作控制器不发出任何控制信号。NOP指令可用来调机之用。 '''1.第一个CPU周期(取指令阶段)''' CPU把24号单元的“JMP 21”指令取出放至指令寄存器,同时程序计数器内容加1,变为25,从而取下一条指令做好准备。 '''2.第二个CPU周期(执行阶段)''' CPU把指令寄存器中地址码部分21送到程序计数器,从而用新内容21代替PC原先的内容25。这样,下一条指令将不从25单元读出,而是从内存21单元开始读出并执行,从而改变了程序原先的执行顺序。 注意 执行“JMP 21”指令时,我们此处所给的四条指令组成的程序进入了死循环,除非人为停机,否则这个程序将无休止地运行下去,因而内存单元40中的和数将一直不断地发生变化。当然,我们此处所举的转移地址21是随意的,仅仅用来说明转移指令能够改变程序的执行顺序而已。 ==特点介绍== 指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 <ref>[https://baike.baidu.com/reference/3219726/dd7blrbB9GOEx3PuUV_wH4GGef2EvJy68q_FIAZLj8CKQdTgxbs6Lh8qCiCkf9eow2vHJAfaD2EykMEQgUd4MOJ6T2bHz39gG5MkL8TdQIeYQw 教育城网,引用日期2012-10-12] </ref> 从指令的执行速度看,单字节和双字节指令一般为单机器周期和双机器周期,三字节指令都是双机器周期,只有乘、除指令占用4个机器周期。 因此在进行编程时,在完成相同工作的情况下,选用占用机器周期少的命令会提高程序的执行速率,尤其是在编写大型程序程序的时候,其效果更加明显。 '''视频''' '''指令周期''' [https://www.bilibili.com/video/BV1L5411A739/?p=54 哔哩哔哩] ==参考文献== {{Reflist}} [[Category:400 應用科學總論]]
此頁面使用了以下模板:
Template:Main other
(
檢視原始碼
)
Template:Reflist
(
檢視原始碼
)
模块:Check for unknown parameters
(
檢視原始碼
)
返回「
指令周期
」頁面